Skip to main content

Canadian Payments

Overview

JustiFi supports payment processing in Canadian dollars (CAD) through a dedicated Canada platform. CAD processing differs from USD in fee handling, balance transactions, payout timing, and supported payment methods.

Platform Setup

To process CAD payments, a separate Canada platform must be provisioned by JustiFi. This is distinct from your US platform.

  • Each platform and its sub-accounts are scoped to a single currency
  • A CAD sub-account cannot process USD payments, and vice versa
  • If your business operates in both the US and Canada, you will have separate platform accounts for each

Contact customer_success@justifi.tech to provision a Canada platform.

Supported Payment Methods

Payment MethodCAD Support
Card payments (e-commerce)Supported
Card present (terminals)Not yet available
ACH / bank account paymentsNot supported
Apple PayNot yet available
Google PayNot yet available
note

ACH and bank account payments are available for USD processing only. Card present (terminal), Apple Pay, and Google Pay support for CAD is planned but not yet available.

Fees

note

All CAD processing platform accounts are configured on interchange plus pricing.

For CAD payments, fees are determined during merchant onboarding and are not configurable by the platform via the API.

The following parameters will return validation errors on CAD payments:

  • application_fee_amount on payment or checkout creation
  • fees array on payment or checkout creation
  • application_fees on checkout creation

The data for fees applied to a payment is available via the fees array on the payment record (available via Get Payment API or payment events) as a processing_fee. The application_fee object will be null on CAD payments.

Standard fee configurations (application_fee_rates) that platforms use for USD processing are not available for CAD. Fee rates for CAD merchants are established during onboarding and cannot be modified through the API.

Account fees

Separate from the per-payment processing_fee, the processor withdraws certain merchant-level fees directly from the sub-account's bank account. These include:

  • Network pass-through assessments (for example, interchange assessments, authorization and connectivity fees, address verification fees)
  • Periodic membership or service charges (for example, a monthly membership fee)
  • Per-item chargeback fees

These fees are set by the card networks and the processor, not by JustiFi, and they are charged at the account level rather than against an individual payment. Each one appears as an account_fee balance transaction on the payout for the period in which it was charged, so your balance reflects the full deduction. The specific fee name appears in the balance transaction's description (for example, CAD account fee: Monthly membership fee or CAD account fee: MC Auth Connectivity Fee). Account fees are not included in fees_total; you'll find them in other_total. See What's in other_total.

Balance Transactions

Balance transactions for CAD payments are not created at payment capture time. They are created when settlements are imported asynchronously. There will be a delay between when a payment is captured and when its associated balance transactions appear in the Balance Transactions API.

Refunds

CAD payments can be refunded within 365 days after payment creation the same way as USD payments with the following differences:

  • Refund transactions are subject to a refund processing fee. To avoid this processing fee try voiding the payment instead (see Voids).
  • The fees parameter on refund requests is not available for CAD payments. Fee returns on CAD refunds are not currently configurable.

Create refunds the same way as USD - on the JustiFi dashboard, via the Refund Payment web component or via the refund payment API:

POST /v1/payments/{id}/refunds
{
"amount": 5000,
"reason": "customer_request"
}

Voids

Void a payment transaction to cancel it before it reaches settlement. Unlike a refunded payment, a voided payment does not incur payment and refund processing fees. CAD payments can be voided within 25 minutes of the original transaction via the void payment API or by clicking the Refund button on the JustiFi dashboard within 25 min of payment transaction.

Dispute Management

To counter a dispute on a CAD payment a merchant (sub account) needs to submit evidence directly to Fiserv Canada via online portal. The Dispute Management web component is not available for CAD payments.

Payouts

CAD sub-account payouts behave differently from USD payouts in several ways. Both are surfaced through the same Payouts API and JustiFi dashboard, but the creation model, schedule, and a few field values differ.

What to expect

CAD payouts are net of fees and other deductionsPayout.amount reflects the funds that move to or from the connected bank account, not the gross sum of payments captured. Processing fees appear in fees_total; account fees and chargebacks appear in other_total. The full breakdown is available on these totals and on the underlying balance transactions.

CAD payouts appear in the API once the corresponding settlement has been processed. As a result, a CAD payout's status is paid and deposits_at reflects the date the funds landed.

note

A CAD payout amount can be negative. When a period's deductions exceed its deposits — for example a period whose only activity is an account fee, or one with a chargeback larger than the day's card volume — the payout represents a net amount drawn from the connected bank account rather than deposited to it.

Schedule

CAD payouts are created on weekdays at approximately 1:00 PM Central Time, once the day's settlement has been processed. No CAD payouts are created on weekends.

Field values fixed for CAD payouts

The Payout schema covers both USD and CAD payouts, but several fields take a narrower set of values for CAD:

FieldCAD valueNotes
currencycad
payout_typeccach does not occur because ACH isn't a supported CAD payment method
statuspaidCAD payouts skip the scheduledin_transit lifecycle because the deposit has already settled by the time the payout is created. failed, forwarded, and canceled are not used for CAD.
delivery_methodstandard
deposits_atdate the funds landed in the bankAlready in the past at creation time

What's in fees_total

For CAD payouts, fees_total is the sum of these balance transaction types on the payout:

  • processing_fee — processing fee on a payment
  • refund_processing_fee — processing fee charged when a refund is issued
  • fee_rounding_adjustment — small reconciliation entry (typically a few cents) for fee calculation rounding

Netted refund pairs: when a payment is refunded before either the payment or the refund has settled, the two are recorded together with no fees on either side. The seller_payment and seller_payment_refund balance transactions appear in the payout but no processing_fee or refund_processing_fee is charged. Refunds of payments that already settled in a prior payout receive a refund_processing_fee as normal.

What's in other_total

A CAD payout can include balance transactions that fall outside payments_total, refunds_total, and fees_total, so they roll up into other_total:

  • account_fee — a merchant-level fee the processor withdrew from the bank account: network pass-through assessments, periodic membership or service charges, and per-item chargeback fees. See Account fees.
  • dispute — the amount of a chargeback debited in this payout period. See Dispute Management.
  • seller_payment_void — the reversal of a voided payment. When a CAD payment is voided it is recorded as a seller_payment (positive) paired with a seller_payment_void (negative) of the same amount. The positive side is counted in payments_total and the negative side lands in other_total, so the pair nets to zero and does not change the payout amount.

account_fee and dispute are deductions, so they reduce the net payout and make other_total negative. other_total is 0 only when a payout has none of these entries.

Example CAD payout

A sub-account on a Canada platform receives a payout covering:

  • 5 settled card payments totaling 87,500 cents ($875.00 CAD)
  • 1 payment + refund netted pair for 20,000 cents ($200.00 CAD) — neither side settled, so no fees on the pair
  • 1 standalone refund of 5,000 cents ($50.00 CAD) for a payment that settled in a prior payout

The resulting payout from GET /v1/payouts/{id}:

{
"id": "po_4Ovwaq8yt7AbCdEf",
"account_id": "acc_Q4pOABjVAxyz123",
"amount": 80098,
"currency": "cad",
"payout_type": "cc",
"status": "paid",
"delivery_method": "standard",
"deposits_at": "2026-04-20T00:00:00Z",
"payments_total": 107500,
"payments_count": 6,
"refunds_total": -25000,
"refunds_count": 2,
"fees_total": 2402,
"other_total": 0,
"description": "Payout",
"bank_account": {
"id": "ba_abc123",
"country": "CA",
"currency": "cad",
"account_type": "checking",
"account_number_last4": "1234",
"bank_name": "Royal Bank of Canada"
},
"metadata": {},
"created_at": "2026-04-20T18:44:23Z",
"updated_at": "2026-04-20T18:44:23Z"
}

The balance transactions that compose this payout (visible through the Balance Transactions API):

txn_typeamount (cents)Notes
seller_payment+10,000py_aaa
seller_payment+20,000py_bbb
seller_payment+15,000py_ccc
seller_payment+17,500py_ddd
seller_payment+25,000py_eee
seller_payment+20,000py_fff (netted pair)
seller_payment_refund−20,000refund of py_fff (netted pair — no fee)
seller_payment_refund−5,000standalone refund of py_ggg (settled in a prior payout)
processing_fee−270py_aaa
processing_fee−510py_bbb
processing_fee−390py_ccc
processing_fee−450py_ddd
processing_fee−630py_eee
refund_processing_fee−150refund processing fee, charged on the standalone refund only
fee_rounding_adjustment−2reconciliation entry
payout−80,098the payout itself

refunds_total is returned as a negative number (refunds reduce the payout). The full relationship between the totals is:

amount = payments_total + refunds_totalfees_total + other_total

This example has no account fees or chargebacks, so other_total is 0:

amount = 107,500 + (−25,000) − 2,402 + 0 = 80,098 cents ($800.98 CAD).

Example CAD payout with account fees and a chargeback

When account fees are charged or a chargeback is debited during the period, those amounts appear as account_fee and dispute balance transactions and reduce your payout through other_total.

Take the payout above and add, in the same period:

  • A monthly membership fee of 900 cents ($9.00 CAD)
  • Two card network fees: a connectivity fee of 6 cents and an address verification fee of 2 cents
  • A chargeback of 6,000 cents ($60.00 CAD)

These show up as additional balance transactions on the payout, each named in its description:

txn_typeamount (cents)description
account_fee−900CAD account fee: Monthly membership fee
account_fee−6CAD account fee: MC Auth Connectivity Fee
account_fee−2CAD account fee: VI-ADDRESS VER SVC FEE
dispute−6,000Chargeback debited this period

They do not change payments_total, refunds_total, or fees_total. They sum into other_total:

other_total = (−900) + (−6) + (−2) + (−6,000) = −6,908 cents

amount = payments_total + refunds_totalfees_total + other_total = 107,500 + (−25,000) − 2,402 + (−6,908) = 73,190 cents ($731.90 CAD).

Technical Integration

For information on testing Canadian payments, refer to the Canadian Payments testing guide.

Summary

FeatureUSDCAD
PlatformUS platformSeparate Canada platform
Payment methodsCards + ACHCards only
Digital wallets (Apple Pay, Google Pay)SupportedNot yet available
Dynamic fees (fees param)SupportedNot supported
application_fee_amount paramSupportedNot supported
Fee data on paymentapplication_fee or fees arrayfees array (processing_fee)
Fee configuration via APISupportedNot supported (set during onboarding)
Balance transactionsCreated at payment captureCreated at settlement import
Fee returns on refundsFully customizableNot configurable
Account & network pass-through feesaccount_fee balance transactionsaccount_fee balance transactions in other_total (processor pass-throughs)
Payout creationCreated before bank depositCreated after the deposit settles; amount is net of fees and other deductions, and can be negative
Payout scheduleWeekdaysWeekdays, ~1 PM Central
Payout status lifecyclescheduledin_transitpaid (or failed / canceled)Always paid at creation
payout_type valuesach, cccc only