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 inlinesenderblock. - 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).
POSTSave a CAD beneficiary, then pay by reference
CAD beneficiaries use flat top-level fields (no bank / address blocks).
| Field | Required | Notes |
|---|---|---|
interac_email | yes | Recipient’s Interac-registered email. |
first_name / last_name | yes | Recipient name. |
name | yes | Display name. |
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
amount_minor is in cents (75000 = CA$750.00). Prefer the by-beneficiary path; the inline recipient is soft-deprecated for FX.
| Path | Field | Required | Notes |
|---|---|---|---|
| Inline | recipient.email | yes | Recipient’s Interac email. |
| Inline | recipient.first_name / recipient.last_name | yes | Recipient 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
| Code | HTTP | Cause |
|---|---|---|
fx_features_not_enabled | 403 | International accounts not enabled |
missing_field | 400/422 | Required recipient field absent (email, first_name, last_name) |
beneficiary_not_found | 404 | beneficiary_id unknown / not yours / wrong env |
beneficiary_currency_mismatch | 400 | beneficiary_id is not a CAD beneficiary |
sender_info_required | 422 | No sender_customer_id and no complete inline sender block |
customer_id_mismatch | 400 | customer_id ≠ sender_customer_id |
idempotency_key_conflict | 409 | Same Idempotency-Key, different body |
provider_error | 502 | Downstream rail unreachable; retry-safe with the same key |
Shared management endpoints are on the NGN page.
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"
}'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"
}'