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

A closer look

Cost-efficient bulk payments – You can bundle up to 50 payments in a single call and save. Batched payments must be of the same type and currency.

Streamlined recipient management – No need to add recipients, manage account details or create templates. Simply pull the latest information straight from your application when you need it.

Instant confirmation – When you submit payments, you’ll receive a response within seconds. That way you can address issues right away instead of waiting for traditional Return or Reject reports at the end of the day.

Manage payments online – After you submit payments, you still have the flexibility to manage them in Online Banking for Business. Just sign in to cancel, modify or delete EFT payments.

Real-time tracking – Request on-demand status updates for your created payments or get automatic alerts by API, email or text message using our Push Notifications API. Payments are tracked up until the time they leave BMO.

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
post
/tpp/eft/customer-access-entitlement/commercial-user-access-arrangement/get
Obtain Service Agreement List

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

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

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

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 EFT Account ID list

This is an optional call to retrieve the list of available EFT Account IDs that have received consent for API use in .json format.

EFT Account IDs act as an alias for your BMO accounts and EFT payment types that can be used. Fixed-Frequency EFT Account IDs for repeat payments are not supported by our API. Instead, you would need to submit each instance in the series individually.

Note: This API endpoint is currently not available for testing in our Sandbox and Pre-Production environments.

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