Developers
Four rails. One integration.
A single REST API for e-Transfer, EFT, wires and bill payment. Idempotent writes, signed webhooks on every state change, and batch endpoints that take 50,000 rows without blinking.
- REST + JSON
- SANDBOX DAY ONE
- 99.98% UPTIME
{
"rail": "eft_credit",
"amount": 1834000,
"currency": "CAD",
"recipient_id": "rcp_8fk2m1",
"reference": "PAYROLL-0729",
"idempotency_key": "a41f-0729-214"
}
// 201 Created
// webhook: payment.settled → T+1Core endpoints
POST/v1/paymentsCreate a payment on any rail: e-Transfer, EFT credit or debit, wire, bill payment.
GET/v1/payments/:idRetrieve a payment with its full status history and return codes.
POST/v1/requestsRaise an Interac e-Transfer money request with reference, amount and expiry.
POST/v1/batchesSubmit up to 50,000 EFT rows in a single batch with row-level validation.
POST/v1/recipientsCreate a validated payee record reusable across every rail.
POST/v1/mandatesStore a pre-authorized debit mandate for recurring or variable collection.
GET/v1/balanceCurrent available and pending balance on the CAD wallet.
GET/v1/statementsDaily statements and per-rail settlement summaries.
Webhooks
Signed with your endpoint secret, retried with backoff for 24 hours, and replayable from the portal.
payment.createdAccepted and queued
payment.settledFunds delivered
payment.returnedReturn code attached
request.approvedCustomer paid the request
batch.validatedRow errors, if any
balance.lowThreshold you set
Built to be boring
Idempotency everywhere
Every write takes an idempotency key. Retry safely; you will never double-pay.
Amounts in cents
Integers only, CAD only. No floats, no currency ambiguity, no rounding surprises.
Versioned and dated
Breaking changes ship behind a new version with twelve months of overlap.
Sandbox that behaves
Simulate settlements, returns and rejections on demand instead of waiting for a clearing cycle.
Status page & alerts
Public uptime history and subscribe-by-email incident notices.