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 Method | CAD Support |
|---|---|
| Card payments (e-commerce) | Supported |
| Card present (terminals) | Not yet available |
| ACH / bank account payments | Not supported |
| Apple Pay | Not yet available |
| Google Pay | Not yet available |
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
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_amounton payment or checkout creationfeesarray on payment or checkout creationapplication_feeson 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
feesparameter 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 deductions — Payout.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.
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:
| Field | CAD value | Notes |
|---|---|---|
currency | cad | |
payout_type | cc | ach does not occur because ACH isn't a supported CAD payment method |
status | paid | CAD payouts skip the scheduled → in_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_method | standard | |
deposits_at | date the funds landed in the bank | Already 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 paymentrefund_processing_fee— processing fee charged when a refund is issuedfee_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 aseller_payment(positive) paired with aseller_payment_void(negative) of the same amount. The positive side is counted inpayments_totaland the negative side lands inother_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_type | amount (cents) | Notes |
|---|---|---|
seller_payment | +10,000 | py_aaa |
seller_payment | +20,000 | py_bbb |
seller_payment | +15,000 | py_ccc |
seller_payment | +17,500 | py_ddd |
seller_payment | +25,000 | py_eee |
seller_payment | +20,000 | py_fff (netted pair) |
seller_payment_refund | −20,000 | refund of py_fff (netted pair — no fee) |
seller_payment_refund | −5,000 | standalone refund of py_ggg (settled in a prior payout) |
processing_fee | −270 | py_aaa |
processing_fee | −510 | py_bbb |
processing_fee | −390 | py_ccc |
processing_fee | −450 | py_ddd |
processing_fee | −630 | py_eee |
refund_processing_fee | −150 | refund processing fee, charged on the standalone refund only |
fee_rounding_adjustment | −2 | reconciliation entry |
payout | −80,098 | the 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_total − fees_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_type | amount (cents) | description |
|---|---|---|
account_fee | −900 | CAD account fee: Monthly membership fee |
account_fee | −6 | CAD account fee: MC Auth Connectivity Fee |
account_fee | −2 | CAD account fee: VI-ADDRESS VER SVC FEE |
dispute | −6,000 | Chargeback 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_total − fees_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
| Feature | USD | CAD |
|---|---|---|
| Platform | US platform | Separate Canada platform |
| Payment methods | Cards + ACH | Cards only |
| Digital wallets (Apple Pay, Google Pay) | Supported | Not yet available |
Dynamic fees (fees param) | Supported | Not supported |
application_fee_amount param | Supported | Not supported |
| Fee data on payment | application_fee or fees array | fees array (processing_fee) |
| Fee configuration via API | Supported | Not supported (set during onboarding) |
| Balance transactions | Created at payment capture | Created at settlement import |
| Fee returns on refunds | Fully customizable | Not configurable |
| Account & network pass-through fees | account_fee balance transactions | account_fee balance transactions in other_total (processor pass-throughs) |
| Payout creation | Created before bank deposit | Created after the deposit settles; amount is net of fees and other deductions, and can be negative |
| Payout schedule | Weekdays | Weekdays, ~1 PM Central |
| Payout status lifecycle | scheduled → in_transit → paid (or failed / canceled) | Always paid at creation |
payout_type values | ach, cc | cc only |