Electronic Funds Transfer (EFT)

Our Electronic Funds Transfer (EFT) API is a quick, cost-effective way to send and collect payments within Canada. You can submit batches of up to 50 payments at any time and track them with real-time status updates.

Overview

Limits:

$99,999,999/payment

50 payments/call (must be same currency and type)

Up to 100 days in advance

Unlimited calls

Countries:

Canada only

CAD and USD (Recipient account currency must match)

Speed:

Same day (if supported by recipient bank)

1-2 business days (based on recipient bank)

Cut-off times (business days):

Payments in CAD

7:00 p.m. ET

Payments in USD

5:00 a.m. ET

Endpoints Summary

post
/tpp/eft/payment-initiation/customer-credit-transfer-initiation
Send Payment Credit
post
/tpp/eft/payment-initiation/customer-direct-debit-initiation
Send Payment Debit
post
/tpp/eft/payment-initiation/get-transaction-status/get
Obtain Payment Status

Payload encryption

For security reasons, all requests to and responses from our Payments APIs need to be encrypted. For detailed instructions, have a look at our encryption process.

View Encryption documentation

Send payments

To reduce the number of necessary calls, you can submit a batch of up to 50 payments within the same call. They must be of the same type (EFT credits) and currency (CAD or USD), but you can mix current and scheduled payments (up to 100 days in the future).

Create your payments (Pain.001) by providing all mandatory details as outlined in the Specifications document at the top. This includes an unique End-to-end ID for each payment in your batch which must be alphanumeric, up to 35 characters long and not have been used for any other payment in the last 180 days.

Once submitted, we’ll validate your payments and respond with the results (Pain.002). If there are no issues, we’ll process your payments. No approvals are required. Every 30 minutes, we bundle your payments into a payment file. You can retrieve the payment file number using the Get payment status API endpoint.

Note: Using the payment file number, you can find your API-generated payments in Online Banking for Business and modify or cancel them. Corrections and resubmissions are possible in Online Banking for Business, but we recommend creating new payments using the API instead.

Post
/tpp/eft/payment-initiation/customer-credit-transfer-initiation
Coming Soon

Request

Code Samples

Headers

x-fapi-financial-id required
string
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id required
string
x-fapi-customer-user-agent
string
x-client-id required
string
x-request-id required
string
Authorization required
string
x-app-cat-id
string
x-bmo-id-token
string

Body

Response

Collect payments

You can also collect payments in bulk to reduce the number of necessary calls. You can bundle up to 50 payments in a single batch as long as they are of the same type (EFT debits) and currency (CAD or USD), but you can mix current and scheduled payments (up to 100 days in the future).

Create your payments (Pain.008) by providing all mandatory details as outlined in the Specifications document at the top. This includes an unique End-to-end ID for each payment in your batch which must be alphanumeric, up to 35 characters long and not have been used for any other payment in the last 180 days.

Once submitted, we’ll validate your payments and respond with the results (Pain.002). If there are no issues, we’ll process your payments. No approvals are required. Every 30 minutes, we bundle your payments into a payment file. You can retrieve the payment file number using the Get payment status API endpoint.

Note: Using the payment file number, you can find your API-generated payments in Online Banking for Business and modify or cancel them. Corrections and resubmissions are possible in Online Banking for Business, but we recommend creating new payments using the API instead.

Post
/tpp/eft/payment-initiation/customer-direct-debit-initiation
Coming Soon

Request

Code Samples

Headers

x-fapi-financial-id required
string
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id required
string
x-fapi-customer-user-agent
string
x-client-id required
string
x-request-id required
string
Authorization required
string
x-app-cat-id
string
x-bmo-id-token
string

Body

Response

Get payment status

Check the latest status for your sent payments (CAMT.005) and retrieve the EFT payment file number which you can use to manage your payments in Online Banking for Business. This call returns the EFT payment file number and current status of a particular payment batch (Pain.002) up until it leaves BMO. Please check our table below for more information about the possible statuses that can be returned.

While EFT payments generated via the API can be managed in Online Banking for Business, they will not be captured by our EFT reports. For complete reporting, please use the Get payment status call to generate your own reporting for these payments.

Note: Instead of checking manually, you can also request automatic alerts by API Webhook, email or text message using our Push Notifications API.If you have BMO Alerts set up in Online Banking for Business, they will trigger as well.

Post
/tpp/eft/payment-initiation/get-transaction-status/get
Coming Soon

Request

Code Samples

Headers

x-fapi-financial-id required
string
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id required
string
x-fapi-customer-user-agent
string
x-client-id required
string
x-request-id required
string
Authorization required
string
x-app-cat-id
string
x-bmo-id-token
string

Body

Response