CAD payouts

Send CAD via Interac e-Transfer — recipients are identified by email + name, no bank account or address required. The recipient receives a deposit notification by email.

See the Payouts overview for common fields + customer attribution, and the NGN page for the shared payout object + management endpoints.

Prerequisites

  • International accounts enabled on your merchant account.
  • A sender for compliance — sender_customer_id (preferred) or an inline sender block.
  • For attribution reads on the customer feed: the API key needs customer_transaction_view.

CAD routes over Interac (email), not a bank rail — so there is no virtual-account requirement (the active-international-account check that applies to GBP/USD/EUR does not apply to CAD).

POST/v1/beneficiaries

CAD beneficiaries use flat top-level fields (no bank / address blocks).

FieldRequiredNotes
interac_emailyesRecipient’s Interac-registered email.
first_name / last_nameyesRecipient name.
nameyesDisplay name.
Request
curl https://api.swappr.me/api/v1/beneficiaries \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "CAD",
    "name": "Jane Doe",
    "interac_email": "jane.doe@example.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }'

POSTCreate a CAD payout

POST/v1/payouts

amount_minor is in cents (75000 = CA$750.00). Prefer the by-beneficiary path; the inline recipient is soft-deprecated for FX.

PathFieldRequiredNotes
Inlinerecipient.emailyesRecipient’s Interac email.
Inlinerecipient.first_name / recipient.last_nameyesRecipient name.

Sender attribution

CAD requires the sending customer to be identified — sender_customer_id (preferred) or an inline sender block; the two are complementary (inline fields win per-field, the referenced customer’s KYC backfills gaps). customer_id must match sender_customer_id if both are passed.

Response

201 Created with the payout object (currency: "CAD").

Webhook events

CAD Interac fires twice — an initiation event and a completion event — so expect payout.processing followed by payout.paid (or payout.failed). customer_id / customer_reference are included when set. See Webhooks.

Errors

CodeHTTPCause
fx_features_not_enabled403International accounts not enabled
missing_field400/422Required recipient field absent (email, first_name, last_name)
beneficiary_not_found404beneficiary_id unknown / not yours / wrong env
beneficiary_currency_mismatch400beneficiary_id is not a CAD beneficiary
sender_info_required422No sender_customer_id and no complete inline sender block
customer_id_mismatch400customer_idsender_customer_id
idempotency_key_conflict409Same Idempotency-Key, different body
provider_error502Downstream rail unreachable; retry-safe with the same key

Shared management endpoints are on the NGN page.

Request — by beneficiary (preferred)
curl https://api.swappr.me/api/v1/payouts \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_minor": "75000",
    "currency": "CAD",
    "beneficiary_id": "ben_cmo8x2p9q0...",
    "sender_customer_id": "cust_cmoji8...",
    "customer_id": "cust_cmoji8...",
    "merchant_reference": "CA-PAY-12"
  }'
Request — inline recipient (soft-deprecated for FX)
curl https://api.swappr.me/api/v1/payouts \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_minor": "75000",
    "currency": "CAD",
    "recipient": { "email": "jane.doe@example.com", "first_name": "Jane", "last_name": "Doe" },
    "sender_customer_id": "cust_cmoji8...",
    "merchant_reference": "CA-PAY-12"
  }'