Skip to Content
CanadaPayout (Canada CAD)

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

GET/v1/cad/institutionspayout:create

No 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 -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)

POST/v1/cad/verify-bankpayout:create
FieldFormat
institutionIdentifierFrom GET /v1/cad/institutions
accountNumberDestination account
sortCodeTransit / 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.

{ "institutionIdentifier": "<from GET /v1/cad/institutions>", "accountNumber": "1234567", "sortCode": "01102" }

Search billers (bill pay)

GET/v1/cad/bills/searchpayout:create

Query: query (example: hydro). No body. Sign with {timestamp}..

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

POST/v1/cad/payoutspayout:create

Idempotency-Key is required (16–255 chars).

FieldRequired
railyes — bank | interac_email | bill
amountyes
bankyes when rail is bank
interacyes when rail is interac_email (email required)
billyes when rail is bill

Bank

{ "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

GET/v1/cad/payouts/:transactionIdpayout:create

No body. Sign with {timestamp}..

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.

Next steps

Last updated on