If your bank has asked you for an "EFT 1464 file", a "CPA 005 file" or a "1464-byte file", you have run into one of the least documented corners of Canadian business banking. The name sounds technical. The idea is not. An EFT 1464 file is a text file that tells your bank whom to pay, how much, and on what date. This guide explains what the file is, what is inside it, and what you need before you can send one.
EFT 1464 in one sentence
An EFT 1464 file is a plain text file, formatted to Payments Canada Standard 005 (usually shortened to CPA 005), in which every record is exactly 1464 characters long, and which a business uploads to its bank to originate electronic funds transfers.
"EFT" stands for electronic funds transfer. It is the Canadian term for the batch payments that move through Payments Canada's clearing system: direct deposits, vendor payments and pre-authorized debits. "1464" is simply the length of each record. Banks give the service their own product names, but the format underneath is the same standard whether you bank with RBC, TD, BMO, Scotiabank, CIBC, National Bank, Desjardins, HSBC Canada or Laurentian Bank.
Why every record is exactly 1464 characters
Most files you exchange with software are delimited: a comma, a tab or a column header tells the reader where one value ends and the next begins. An EFT 1464 file is fixed-width. There are no separators and no header row. Every field lives at a fixed position, and the bank's system reads position 11 to 20 as the originator ID because the standard says so, not because a label tells it to.
This has three practical consequences:
- Numbers are right-aligned and padded with leading zeros. An amount of $1,250.00 is written as
0000125000: ten digits, in cents, with no decimal point. - Text is left-aligned and padded with spaces. A payee name of 12 characters sits in a 30-character field followed by 18 spaces.
- Dates use a six-digit Julian format,
0YYDDD. September 15, 2026 becomes026258(the 258th day of 2026).
Any deviation, even a trailing space trimmed by a text editor, changes the position of everything that follows and the bank rejects the file.
The three record types: A, C and Z
A payment file is built from a small number of record types, each identified by its first character.
| Record | Name | What it carries |
|---|---|---|
| A | Header | The 10-character originator ID assigned by your bank, a 4-digit file creation number, the file creation date, the destination data centre and the currency code (CAD). |
| C | Credit detail | The payments themselves. Each C record holds up to six 240-character segments, and each segment is one payment: transaction type, amount, due date, payee's institution and transit numbers, payee account number, payee name and your business name. |
| Z | Trailer | Control totals: the number and total value of the credits in the file (and of debits, if any). The bank recomputes these and compares. |
Standard 005 also defines D records for debits (pre-authorized debit files). When you pay vendors you only produce C records, so a vendor payment file is always A, then one or more C records, then Z.
The banking numbers inside a C segment
Each payment segment identifies the payee's account with three numbers you will recognize from the bottom of a cheque:
- Institution number: 3 digits identifying the financial institution (001 BMO, 002 Scotiabank, 003 RBC, 004 TD, 006 National Bank, 010 CIBC, 016 HSBC Canada, 039 Laurentian Bank, 815 Desjardins).
- Transit number: 5 digits identifying the branch.
- Account number: up to 12 digits.
In the file, the institution and transit numbers are combined into a single 9-digit field with a leading zero: 0 + institution + transit. For an RBC account at transit 12345 the field reads 000312345. Note the order: on a cheque the transit is printed before the institution, but in the file the institution comes first. Swapping them is one of the most common causes of a rejected file.
What you need before you can send one
- An EFT origination agreement with your bank. This is a separate service from online banking. Once approved, the bank issues your originator ID, a 10-character identifier that goes into every A, C and Z record. Different banks call it an emitter ID, company number or client number.
- Your own account details. Institution, transit and account number of the account the payments are drawn from, and the business name as registered with the bank (30 characters maximum in the file).
- Your vendors' banking details. The same three numbers for each vendor, usually taken from a void cheque or a direct deposit form.
- A way to build the file. Some businesses assemble it by hand in a spreadsheet and a text editor. It works, but a single misaligned column produces a rejection. Others use software that generates the file from their accounting system. Zefty, for example, reads unpaid bills from Zoho Books and builds the file from them.
- An upload channel. Your bank's business banking portal, or the file transfer service the bank set up with your agreement.
A worked example
Suppose you owe a vendor $1,250.00 and want it paid on September 15, 2026. The vendor banks at RBC, transit 12345, account 1234567. Inside one C segment, the key fields would read:
| Field | Value in the file |
|---|---|
| Amount (10 digits, cents) | 0000125000 |
| Due date (0YYDDD) | 026258 |
| Institution + transit (9 digits) | 000312345 |
| Payee account (12 characters) | 1234567 |
| Payee name (30 characters) | ACME SUPPLY LTD followed by spaces |
The A record in front of it carries your originator ID and a file creation number that must be new for every file. The Z record behind it states one credit for a total of 0000125000. Everything else is padding, but the padding is what makes each record exactly 1464 characters.
The mistakes banks see most often
- A reused file creation number. The 4-digit number must change on every file. Banks reject duplicates to protect you from paying a batch twice.
- Records that are not 1464 characters. Usually caused by an editor that trims trailing spaces or converts line endings.
- Decimal points or dollar signs in amounts.
- Transit and institution numbers in cheque order rather than file order.
- Dates in calendar format (
20260915) instead of Julian format (026258). - Vendor account numbers with spaces or dashes copied straight from a cheque.
Where Zefty fits
Zefty exists so that accounting teams never have to think about column positions. It pulls unpaid vendor bills from Zoho Books, lets you select the ones to pay (including partial payments), and generates a CPA 005-compliant EFT 1464 file with the correct A, C and Z records. Each file is stored with its file number, and a PDF report shows every field of every record so you can audit it before uploading. When the file is generated, Zefty posts a vendor payment back to Zoho Books with the payment mode "Zefty EFT 1464". A test mode lets you produce marked test files without writing anything back.
Key takeaways
- An EFT 1464 file is a fixed-width text file defined by Payments Canada Standard 005; every record is exactly 1464 characters.
- It contains an A header, one or more C detail records (up to six payments each) and a Z trailer with control totals.
- Amounts are in cents without a decimal point; dates use the
0YYDDDJulian format. - Payees are identified by institution (3 digits), transit (5 digits) and account (up to 12 digits), written in the file as institution first, then transit.
- You need an EFT origination agreement and a 10-character originator ID from your bank before you can send one.
Ready to see the format field by field? Our compliance page walks through the A, C and Z records in detail, and How it works shows how Zefty turns approved Zoho Books bills into a bank-ready file in a few clicks.