Accepting EFT Payments

Learn how sellers can process payments from Canada-based bank accounts.


EFT PAD Requirements

Canadian-based sellers must present a clear authorization to buyers. Before debiting a buyer's bank account, sellers must first collect authorization from the buyer defining a specific payment schedule or terms. To learn more, read our EFT Pad Requirements guide.

EFT Payments

To accept an EFT Payment, you must collect the following bank account information.

Field Description
Account Type
account_type
Bank account type
Account Owner
name
Bank account owner name
Account Number
account_number
Bank account number
Routing Number
bank_code
Bank account routing number/bank code
Institution Number
institution_number
Bank account institution number
Transit Number
transit_number
Bank account transit number

Step 1: Create an Identity for your Buyer

To process an EFT payment, first create an Identity to represent the buyer. An Identity resource helps manage payments, payment methods, bank accounts, transaction history, and more.

shelljson
Copy
Copied
curl "https://finix.sandbox-payments-api.com/identities" \
  -H "Content-Type: application/json" \
  -H "Finix-Version: 2022-02-01" \
  -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
  -d '{
    "entity": {
      "phone": "7145677613",
      "first_name": "Collen",
      "last_name": "Wade",
      "email": "therock@gmail.com"
    }
  }'
Copy
Copied
{
    "id": "IDo6hT8RukoNfFDBx8KmzsyP",
    "created_at": "2024-04-17T00:21:13.52Z",
    "updated_at": "2024-04-17T00:21:13.52Z",
    "application": "APgPDQrLD52TYvqazjHJJchM",
    "entity": {
        "ach_max_transaction_amount": 0,
        "amex_mid": null,
        "annual_card_volume": 0,
        "business_address": null,
        "business_name": null,
        "business_phone": null,
        "business_tax_id_provided": false,
        "business_type": null,
        "default_statement_descriptor": null,
        "discover_mid": null,
        "dob": null,
        "doing_business_as": null,
        "email": "therock@gmail.com",
        "first_name": "Collen",
        "has_accepted_credit_cards_previously": false,
        "incorporation_date": null,
        "last_name": "Wade",
        "max_transaction_amount": 0,
        "mcc": null,
        "ownership_type": null,
        "personal_address": {
            "line1": null,
            "line2": null,
            "city": null,
            "region": null,
            "postal_code": null,
            "country": null
        },
        "phone": "7145677613",
        "principal_percentage_ownership": null,
        "short_business_name": null,
        "tax_authority": null,
        "tax_id_provided": false,
        "title": null,
        "url": null
    },
    "identity_roles": [],
    "tags": {},
    "_links": {
        "self": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP"
        },
        "verifications": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/verifications"
        },
        "merchants": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/merchants"
        },
        "settlements": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/settlements"
        },
        "authorizations": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/authorizations"
        },
        "transfers": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/transfers"
        },
        "payment_instruments": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/payment_instruments"
        },
        "associated_identities": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/associated_identities"
        },
        "disputes": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP/disputes"
        },
        "application": {
            "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
        }
    }
}

Step 2. Create a Bank Account

Create a CAD Bank Account using Plaid

We recommend you use Plaid to create bank accounts for your buyers. Learn how to create Bank Accounts with Plaid by reading our guide.

Create a CAD Bank Account via API

attention

Please note that creating Payment Instruments and passing payment details (account number, card number, etc.) directly via the API should only be done for testing purposes. You must use the Tokenization Forms or Mobile Tokenization to accept payment details, and remain out of PCI scope.

A Payment Instrument resource represents the payment details of a credit card or bank account. A Payment Instrument is associated with a single Identity.

Copy
Copied
curl "https://finix.sandbox-payments-api.com/payment_instruments" \
  -H "Content-Type: application/json" \
  -H "Finix-Version: 2022-02-01" \
  -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
  -d '{
    "account_number": "123123123",
    "account_type": "PERSONAL_CHECKING",
    "country": "CAN",
    "currency": "CAD",
    "identity": "IDo6hT8RukoNfFDBx8KmzsyP",
    "institution_number": "123",
    "name": "John Smith",
    "transit_number": "12345",
    "type": "BANK_ACCOUNT"
	}'

Response:

Copy
Copied
{
    "id": "PIk5jFRUwkvE1WHBRCgrBzRs",
    "created_at": "2024-04-17T00:26:19.56Z",
    "updated_at": "2024-04-17T00:26:19.56Z",
    "application": "APgPDQrLD52TYvqazjHJJchM",
    "created_via": "API",
    "currency": "CAD",
    "disabled_code": null,
    "disabled_message": null,
    "enabled": true,
    "fingerprint": "FPR8RAHfXm1BMYYVJyHWHhw4J",
    "identity": "IDo6hT8RukoNfFDBx8KmzsyP",
    "instrument_type": "BANK_ACCOUNT",
    "account_type": "PERSONAL_CHECKING",
    "bank_account_validation_check": "NOT_ATTEMPTED",
    "bank_code": null,
    "country": "CAN",
    "institution_number": "123",
    "masked_account_number": "XXXXX3123",
    "name": "John Smith",
    "transit_number": "12345",
    "tags": {},
    "third_party": null,
    "third_party_token": null,
    "type": "BANK_ACCOUNT",
    "_links": {
        "self": {
            "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIk5jFRUwkvE1WHBRCgrBzRs"
        },
        "authorizations": {
            "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIk5jFRUwkvE1WHBRCgrBzRs/authorizations"
        },
        "transfers": {
            "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIk5jFRUwkvE1WHBRCgrBzRs/transfers"
        },
        "verifications": {
            "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIk5jFRUwkvE1WHBRCgrBzRs/verifications"
        },
        "application": {
            "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
        },
        "identity": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDo6hT8RukoNfFDBx8KmzsyP"
        }
    }
}

Step 3. Create a CAD Bank Transfer

Once you have a CAD bank account, you can create an EFT Payment.

Copy
Copied
curl "https://finix.sandbox-payments-api.com/transfers" \
  -H "Content-Type: application/json" \
  -H "Finix-Version: 2022-02-01" \
  -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
  -d '{
    "amount": 350,
    "currency": "CAD",
    "merchant": "MU2ekLKCiV8M5waZ3Ayg7ic6",
    "source": "PIk5jFRUwkvE1WHBRCgrBzRs"
  }'

Response:

Copy
Copied
{
    "id": "TRg8Xu7rvD7JT9NmGTHF4eFe",
    "created_at": "2024-04-17T00:28:57.41Z",
    "updated_at": "2024-04-17T00:28:58.22Z",
    "additional_buyer_charges": null,
    "additional_healthcare_data": null,
    "additional_purchase_data": null,
    "address_verification": null,
    "amount": 350,
    "amount_requested": 350,
    "application": "APgPDQrLD52TYvqazjHJJchM",
    "currency": "CAD",
    "destination": null,
    "externally_funded": "UNKNOWN",
    "failure_code": null,
    "failure_message": null,
    "fee": 0,
    "idempotency_id": null,
    "merchant": "MU2ekLKCiV8M5waZ3Ayg7ic6",
    "merchant_identity": "IDbuyRPdoEBfEsKcuKEPgkqP",
    "messages": [],
    "parent_transfer": null,
    "parent_transfer_trace_id": null,
    "raw": null,
    "ready_to_settle_at": null,
    "receipt_last_printed_at": null,
    "security_code_verification": null,
    "source": "PIk5jFRUwkvE1WHBRCgrBzRs",
    "split_transfers": [],
    "state": "PENDING",
    "statement_descriptor": "FNX*FINIX FLOWERS",
    "subtype": "API",
    "tags": {},
    "trace_id": "f098d089-1bf7-45c9-96ca-bdd72e2c3fd5",
    "type": "DEBIT",
    "_links": {
        "application": {
            "href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
        },
        "self": {
            "href": "https://finix.sandbox-payments-api.com/transfers/TRg8Xu7rvD7JT9NmGTHF4eFe"
        },
        "merchant_identity": {
            "href": "https://finix.sandbox-payments-api.com/identities/IDbuyRPdoEBfEsKcuKEPgkqP"
        },
        "payment_instruments": {
            "href": "https://finix.sandbox-payments-api.com/transfers/TRg8Xu7rvD7JT9NmGTHF4eFe/payment_instruments"
        },
        "reversals": {
            "href": "https://finix.sandbox-payments-api.com/transfers/TRg8Xu7rvD7JT9NmGTHF4eFe/reversals"
        },
        "fees": {
            "href": "https://finix.sandbox-payments-api.com/transfers/TRg8Xu7rvD7JT9NmGTHF4eFe/fees"
        },
        "disputes": {
            "href": "https://finix.sandbox-payments-api.com/transfers/TRg8Xu7rvD7JT9NmGTHF4eFe/disputes"
        },
        "source": {
            "href": "https://finix.sandbox-payments-api.com/payment_instruments/PIk5jFRUwkvE1WHBRCgrBzRs"
        },
        "fee_profile": {
            "href": "https://finix.sandbox-payments-api.com/fee_profiles/FPvCQUcnsueN3Bc3zR1qCBG8"
        }
    }
}