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.

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

Create refunds the same way as USD:

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

The fees parameter on refund requests is not available for CAD payments. Fee returns on CAD refunds are not currently configurable.

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 processing feesPayout.amount reflects the deposit that lands in the connected bank account, not the gross sum of payments captured. The fee breakdown for the payout period is available on fees_total and on the underlying balance transactions.

CAD payouts appear in the API once the corresponding deposit has settled to the bank. As a result, a CAD payout's status is paid and deposits_at reflects the date the funds landed.

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 — fee on a payment
  • refund_processing_fee — fee returned on a refund
  • 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.

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−150fee return 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 relationship between the totals is:

amount = payments_total + refunds_totalfees_total = 107,500 + (−25,000) − 2,402 = 80,098 cents ($800.98 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
Payout creationCreated before bank depositCreated after the deposit settles; amount is net of processing fees
Payout scheduleWeekdaysWeekdays, ~1 PM Central
Payout status lifecyclescheduledin_transitpaid (or failed / canceled)Always paid at creation
payout_type valuesach, cccc only