Payout (Canada CAD)
Debit your merchant CAD wallet and send CAD to a Canadian bank, Interac email,
or bill pay. Amount 1–50,000. Live API keys only. Scope: payout:create.
Other pockets (USDC, PYUSD-USDC, USDT, BDT, BRL, NGN) cannot fund this.
Creating a payout debits CAD immediately. Platform and upstream rail fees may
be collected on success. Insufficient balance → 400.
List banks
GET /v1/cad/institutions
Verify bank (optional)
POST /v1/cad/verify-bank
Search billers (bill pay)
GET /v1/cad/bills/search?query=
Create payout
POST /v1/cad/payouts with Idempotency-Key
Poll status
GET /v1/cad/payouts/:transactionId until a final state, or wait for webhook
List banks
/v1/cad/institutionspayout:createNo body. Sign with {timestamp}..
Use items[].identifier as institutionIdentifier on verify (and later when you
need the institution id). items[].name is the display name.
This is not a 3-digit Canadian institution number.
cURL
curl -X GET https://api.transacty.ai/v1/cad/institutions \
-H "X-Transacty-Key: $TRANSACTY_KEY" \
-H "X-Transacty-Timestamp: $TS" \
-H "X-Transacty-Signature: $SIG" \
-H "Content-Type: application/json"Verify bank account (optional)
/v1/cad/verify-bankpayout:create| Field | Format |
|---|---|
institutionIdentifier | From GET /v1/cad/institutions |
accountNumber | Destination account |
sortCode | Transit / sort code (for example 01102) |
Response: verified, accountName (may be null), plus the three request
fields echoed back. If upstream verify is unavailable, you may still attempt
payout after your own validation.
Request
{
"institutionIdentifier": "<from GET /v1/cad/institutions>",
"accountNumber": "1234567",
"sortCode": "01102"
}Search billers (bill pay)
/v1/cad/bills/searchpayout:createQuery: query (example: hydro). No body. Sign with {timestamp}..
cURL
curl -X GET https://api.transacty.ai/v1/cad/bills/search?query=hydro \
-H "X-Transacty-Key: $TRANSACTY_KEY" \
-H "X-Transacty-Timestamp: $TS" \
-H "X-Transacty-Signature: $SIG" \
-H "Content-Type: application/json"Create payout
/v1/cad/payoutspayout:createIdempotency-Key is required (16–255 chars).
| Field | Required |
|---|---|
rail | yes — bank | interac_email | bill |
amount | yes |
bank | yes when rail is bank |
interac | yes when rail is interac_email (email required) |
bill | yes when rail is bill |
Bank
Request
{
"rail": "bank",
"amount": "200.00",
"merchantReference": "wd-1001",
"description": "Supplier payment",
"bank": {
"institutionNumber": "001",
"transitNumber": "12345",
"accountNumber": "1234567",
"accountName": "Jane Doe"
}
}Interac email
{
"rail": "interac_email",
"amount": "75.00",
"merchantReference": "wd-1002",
"interac": {
"email": "recipient@example.com",
"name": "Jane Doe",
"securityQuestion": "Invoice number?",
"securityAnswer": "9001"
}
}Treat securityAnswer as sensitive.
Bill pay
{
"rail": "bill",
"amount": "120.00",
"merchantReference": "wd-1003",
"bill": {
"billerId": "BILLER_ID_FROM_SEARCH",
"accountNumber": "1234567890"
}
}status is pending (not PENDING). Debit is the CAD pocket only.
400 insufficient balance means the CAD pocket, not another currency.
Poll payout
/v1/cad/payouts/:transactionIdpayout:createNo body. Sign with {timestamp}..
cURL
curl -X GET https://api.transacty.ai/v1/cad/payouts/{transactionId} \
-H "X-Transacty-Key: $TRANSACTY_KEY" \
-H "X-Transacty-Timestamp: $TS" \
-H "X-Transacty-Signature: $SIG" \
-H "Content-Type: application/json"Mark the payout complete on payout.completed / status: "success", or
settled: true. On payout.failed, the send amount is refunded to CAD when
applicable.