Equifax Canada Metro 2 Test Submission Handbook

Equifax Canada Metro 2 Test Submission Handbook

Everything you need to prepare, check and send the Metro 2 test file

Version 1 · 1 October 2026 · For the person preparing the file · Also as Word or PDF

Equifax Canada takes monthly credit reporting in the Metro 2 format. Before it accepts live reporting from a new lender, it asks for a test file that proves the lender can produce a correct one. This handbook explains how to prepare that file with the tools already built for this project: which values you need and where each one comes from, where to put them, how to build and check the file, and what to send with it.

Where things stand. Done: the decision flows (35 flows, 757 decision points, written for Equifax Canada), the file builder and its quality checks, and a complete test file built from 8 made-up accounts that passes every check except the two placeholder identifiers.

Still to do, and the subject of this handbook: the Program Identifier from Equifax Canada, our own Identification Number, the mapping from our loan system to the file, and the real accounts.

Every link in this document opens without signing in: no account, password or authenticator code. The pages and files hold made-up people only, so they are safe to forward. Never put real customer information on them (Section 11).

Contents

1. What you will send to Equifax Canada

ItemWhat it isHow you get it
The Metro 2 test fileA plain-text file named like EFXCA-M2-202609-TEST.TXT: one 844-character line per record (a header, one record per account, a trailer).The builder makes it from the accounts CSV and the settings (Section 8).
The test submission summaryA one-page text file (...-submission.txt) with the facts Equifax Canada asks about: format, record counts, identifiers, period, contents and the QA result. Five lines are left for you to fill in.The builder writes it next to the file, read from the file itself (Section 9).
Answers to their onboarding questionsContacts, the loan system, how the file is sent, the planned first live month.You, with Section 10.

Two more files stay with us: the QA report (...-qa.csv, every finding of the checks) and the completed value worksheet (which field of our loan system feeds each value). Equifax Canada replies with an acknowledgement or an error report: fix what it lists, rebuild and send again until the test is accepted. Monthly live reporting starts after that.

2. Links (no sign-in needed)

Every link was checked from outside the network with no login on 1 October 2026. A .TXT or .csv link may open as text in the browser: right-click it and choose Save link as to keep the exact file.

2.1 Pages

PageLinkUse it to
This handbookhttps://basehub.cc/equifax-metro2/handbook.htmlThis document as a web page: the easiest way to share it.
Decision flowshttps://basehub.cc/equifax-metro2/See the decision behind every field: 35 flows, the Canadian rules, and the 53 points marked "Confirm with Equifax Canada".
File guidehttps://basehub.cc/equifax-metro2/file-guide.htmlRead the test file field by field: the format, where the value comes from, why the field is there and why it has this value.
Every value you needhttps://basehub.cc/equifax-metro2/file-guide.html#valuesThe online copy of Section 6, with a spreadsheet download.
Where real values gohttps://basehub.cc/equifax-metro2/file-guide.html#pasteThe settings, marked up (Section 7).
Test submission summaryhttps://basehub.cc/equifax-metro2/file-guide.html#submissionThe summary of the test file (Section 9).
Field by fieldhttps://basehub.cc/equifax-metro2/file-guide.html#fileAll 10 records of the test file, every field explained.
CSV template, column by columnhttps://basehub.cc/equifax-metro2/file-guide.html#templateWhat goes in each column of the accounts CSV.
Build a file from your own accountshttps://basehub.cc/equifax-metro2/?f=OUT/buildThe browser builder (Section 8.1).
Sample outputshttps://basehub.cc/equifax-metro2/?f=OUTWhat the file, the QA report and typical mistakes look like.
Coverage audithttps://basehub.cc/equifax-metro2/?f=COVThe check that every section of the source guides is covered by a flow.

2.2 Files

FileLinkWhat it is
The test filehttps://basehub.cc/equifax-metro2/files/EFXCA-M2-202609-TEST.TXTThe Metro 2 file built from the 8 made-up accounts, with placeholder identifiers.
Test submission summaryhttps://basehub.cc/equifax-metro2/files/EFXCA-M2-202609-TEST-submission.txtThe facts about the test file that Equifax Canada asks for.
QA reporthttps://basehub.cc/equifax-metro2/files/EFXCA-M2-202609-TEST-qa.csvEvery finding of the checks on the test file (two warnings: the placeholders).
Accounts CSV templatehttps://basehub.cc/equifax-metro2/files/accounts-template.csvThe header row only: paste the accounts under it, one per row.
The test accounts as CSVhttps://basehub.cc/equifax-metro2/files/accounts-sample.csvThe template filled with the 8 made-up accounts: a worked example.
Settingshttps://basehub.cc/equifax-metro2/files/config.jsonThe identifiers, company details and reporting month the builder reads.
Value worksheethttps://basehub.cc/equifax-metro2/files/value-worksheet.csvSection 6 as a spreadsheet, with an empty column for our own system’s field names.
Column listhttps://basehub.cc/equifax-metro2/files/COLUMNS.mdEvery column of the accounts CSV in one plain-text list.
This handbook (Word)https://basehub.cc/equifax-metro2/files/Equifax-Canada-Metro2-Test-Submission-Handbook.docxThis document as a Word file.
This handbook (PDF)https://basehub.cc/equifax-metro2/files/Equifax-Canada-Metro2-Test-Submission-Handbook.pdfThis document as a PDF, ready to print.

3. The steps, start to finish

  1. Read Sections 4 and 5. They explain the format and the two identifiers everything else hangs on (about 15 minutes).
  2. Get the onboarding details from Equifax Canada: the Program Identifier, the test window, how to send the file and how to encrypt it, any file-name rule, the line ending, and their own Canadian Metro 2 reporting guide (Section 10).
  3. Settle our Identification Number with the company: our own company or branch code, 5 to 20 letters or digits, the same every month. Tell Equifax Canada what it is.
  4. Map the values. Open the value worksheet and fill its last column, "Your system’s field", with the loan system’s field for each value. Section 6 explains every value.
  5. Export the accounts into the CSV template: one row per account, header row unchanged (Section 7.2).
  6. Enter the settings: the Program Identifier, the Identification Number, the company name, address and phone, and the reporting month (Section 7.1).
  7. Build the file in the browser builder or with the command-line tool (Section 8).
  8. Clear the QA findings: fix every BLOCK (no file is produced until there are none) and read every WARN.
  9. Download the TXT file, the submission summary and the QA report. Fill in the five blank lines at the end of the summary.
  10. Send the file and the summary the way Equifax Canada specifies. Keep a copy of both and the SHA-256 shown in the summary: it proves later exactly which file was sent.
  11. Handle the reply: fix what the error report lists, rebuild, send again.

Real data or test data? The published test file uses 8 made-up people and placeholder identifiers so that it can be shared. Equifax tests whether our data processes, so the file sent for the test is normally built from a real month of real accounts with the real identifiers. Ask Equifax Canada what they want in it.

4. The file format in brief

Metro 2 is the credit-reporting format published by the Consumer Data Industry Association in its Credit Reporting Resource Guide (the CRRG). Equifax Canada uses the same layout, with Canadian meanings for some fields (Section 4.3). The format is fixed-width: every field sits at a set position and length, with no commas or separators, so one extra character shifts every field after it. That is why nobody edits the file by hand: change the inputs and rebuild.

4.1 Records and segments

LineRecordWhat it holds
1HeaderWho we are (the Program Identifier at positions 23-32, name, address, phone), the reporting period, the date the file was created and the software that made it.
2 to N-1One account record per account, sorted by account numberThe 426-character Base segment (the account and the primary borrower), then fixed slots for the optional segments below.
N (last)TrailerTotals: records, accounts by status, SINs, dates of birth, segments. Equifax recounts them to check the file arrived whole.
SegmentLengthUsed whenIn the test file
Base426The account and the primary borrowerEvery account
J1100Another person on the account (co-borrower, co-signer, guarantor) at the same addressAccount S1
J2200Another person on the account at a different addressAccount S2
K234The account was bought from, or sold to, another companyAccount S7
K430A special payment arrangement: deferred first payment or balloon paymentAccount S5
L154The account number (or Identification Number) changedAccount S8
Record844Every account record. An unused segment slot holds only its two-letter ID and blanks, so every record stays the same length.

Equifax Canada also has an optional P1 segment (533 characters: extra phone numbers, e-mail, driver’s licence, passport). It is not in our layout; ask Equifax Canada whether they want it.

4.2 Formatting rules

RuleExample from the test fileWhy
One record per line, in this order: header, one record per account sorted by account number, trailer.Line 1 header, lines 2-9 AUTO000101 to AUTO000108, line 10 trailerEquifax reads the header first to know whose file it is, and the trailer last to check the totals.
Every record is exactly 844 characters, and its first 4 characters give that length (the RDW).0844 at the start of every lineFixed-length records are the simplest to read and check.
Numbers: digits only, right-justified, zero-filled.25000 → 000025000A fixed-width number must fill its field; zeros on the left do not change the value.
Money: whole dollars, cents dropped (never rounded up). A credit balance becomes 0.$15,022.40 → 000015022The format has no decimal point; dropping cents never overstates what a consumer owes.
Dates: MMDDYYYY. A date that does not apply is all zeros.2024-03-15 → 03152024The Metro 2 date form; zeros mean "not applicable", not "unknown".
Text: uppercase, left-justified, blank-filled.EDMONTON then blanksBlanks on the right do not change the value.
Names: letters, spaces and hyphens; accents become plain letters; apostrophes are dropped.Gagné → GAGNE
Élodie → ELODIE
The file is plain ASCII; transliterating keeps the name matchable.
Characters and line ending: plain ASCII, one record per line, ending with a line feed (LF) unless Equifax Canada asks for CRLF.8,450 bytes = 10 lines × (844 + 1)Confirm the line ending with Equifax Canada.

4.3 What is Canadian about it

5. The two identifiers

Two identifiers tell Equifax Canada whose file it is. They are easy to mix up, and they come from different places.

IdentifierWhere it goesWho sets itIn the test fileRules
Equifax Program IdentifierHeader, positions 23-32Equifax Canada, at onboardingEFXPENDING1-10 letters or digits.
Identification NumberEvery account record: Base field 5, positions 21-40We do: our own company or branch codePENDINGID015-20 letters or digits; the same every month; tell Equifax Canada, and never change it without telling them.

The Identification Number is not an Equifax number. Some early project notes called it an "Equifax member number"; that was wrong. The CRRG defines it as the lender’s own internal code (Oracle OFSLL builds it from the company and branch codes). Only the Program Identifier comes from Equifax.

While either one is still a placeholder, the builder names the file ...-TEST.TXT and the checks raise two warnings. With both real values in, the file name ends in -LIVE.TXT and the warnings go away.

6. Every value you need

There are 74 values in five groups. The first three groups are entered once, in the settings; the last two are columns of the accounts CSV, one row per account. For each value the table gives where to find it (and the exact field if our loan system is Oracle OFSLL, the platform the company’s Metro 2 guide describes), how to enter it, which field and positions of the file it fills, and how it looks in the test file. In the examples a · marks a blank, so the padding shows. Yellow rows are the placeholders to replace. The same table is a spreadsheet: value-worksheet.csv, with an empty last column for our own system’s field names.

Values you never enter: the account status, payment rating, 24-month payment history, special comment, compliance code, date of first delinquency, consumer transaction type, association code, insolvency indicator, the record length and every trailer total. The builder works them out from the facts in the CSV, following the decision flows, so they stay consistent with each other.

6.1 From Equifax Canada (6)

ValueWhere to find itEnter it asGoes into the fileIn the test fileNeeded
Equifax Program Identifier
Equifax Canada, at onboarding (with the data furnisher agreement)
OFSLL: Setup > Credit Bureau Reporting > Program Identifier, bureau code EFX
config.json "equifaxProgramId": 1-10 letters or digitsHeader 5 (Equifax Program Identifier), positions 23-32
EFXPENDING
from header
Always
Test file window and the date to send itEquifax CanadaNot in the fileNot in the fileBefore the first live file
How to send the file (e.g. SFTP address and login)Equifax Canada. Keep logins in your password manager, never in these filesNot in the fileNot in the fileBefore the first file
Encryption key (e.g. a PGP public key)Equifax CanadaNot in the fileNot in the fileIf they require encryption
File name patternEquifax Canadaconfig.json "fileName", e.g. EFXCA-M2-{period}-{mode}.TXTNot in the fileBefore the first file
Line ending between recordsEquifax Canada (LF or CRLF)config.json "lineEnding": LF or CRLFNot in the fileBefore the first file

6.2 Your company (6)

ValueWhere to find itEnter it asGoes into the fileIn the test fileNeeded
Identification Number (your company / branch code)
You choose it; tell Equifax Canada. One per branch or office that verifies data, if you have several
OFSLL: Company code + branch code (ACCOUNTS.ACC_PTC_COMPANY + ACC_PCB_BRANCH)
config.json "identificationNumber": 5-20 letters or digits, no spaces, never all 0 or 9Base 5 (Identification Number), positions 21-40
PENDINGID01·········
from AUTO000101
Always
Reporter (company) name
Your legal name, as on the Equifax agreement
OFSLL: Setup > Companies > Company Definition: Company
config.json "reporterName": up to 40 charactersHeader 12 (Reporter Name), positions 80-119
SAMPLE·LENDING·CO·······················
from header
Always
Reporter address
Your mailing address
OFSLL: Setup > Companies > Company Definition: Address, City, State, Zip
config.json "reporterAddress": up to 96 charactersHeader 13 (Reporter Address), positions 120-215
100·EXAMPLE·AVE·NW·EDMONTON·AB·T5J0N3···························································
from header
Always
Reporter phone
A number Equifax can call about the file
OFSLL: Setup > Companies > Company Definition: Remittance Address Phone 1
config.json "reporterPhone": 10 digitsHeader 14 (Reporter Telephone Number), positions 216-225
7805550100
from header
Always
Software vendor and version
Who built the program that writes the file
OFSLL: Fixed: ORACLE FINANCIAL SERVICES SOFTWARE, 1.0
config.json "softwareVendor" (up to 40), "softwareVersion" (up to 5)Header 15 (Software Vendor Name), positions 226-265
IN-HOUSE································
from header
Always
Program date and revision date
When your reporting program started, and when it last changed
OFSLL: Metro II release and revision dates
config.json "programDate", "programRevisionDate": YYYY-MM-DDHeader 10 (Program Date), positions 64-71
09012026
from header
Always

6.3 Each file (2)

ValueWhere to find itEnter it asGoes into the fileIn the test fileNeeded
Reporting period
The month you are reporting (the month that just ended)
OFSLL: GL post date (CMN_GL_POST_DT)
config.json "period": YYYY-MMHeader 8 (Activity Date), positions 48-55
09302026
from header
Every file
Date the file is built
The day you build it, after the month has ended
OFSLL: Batch run date
config.json "created": YYYY-MM-DD (blank = today)Header 9 (Date Created), positions 56-63
10022026
from header
Every file

6.4 Each account (CSV) (41)

ValueWhere to find itEnter it asGoes into the fileIn the test fileNeeded
idYour own label, e.g. the loan ID (not sent)Text: Optional label for the row (e.g. your loan ID)Not sent to EquifaxOptional
account_number
Loan system: the account / loan number
OFSLL: ACCOUNTS.ACC_NBR
Text: Account number as reported: letters and digits only, never the SINBase 7, positions 43-72
AUTO000101····················
from AUTO000101
Always
new_account_number
Loan system: the new number after a conversion or renumbering (that month only)
OFSLL: ACCOUNTS.ACC_ORIG_SYS_XREF
Text: Only in the month the number changes: the new number (sends an L1 segment)L1 segment, positions 794-823
AL2026000108··················
from AUTO000108
Only in the month the number changes
portfolio_type
Product set-up: the kind of credit
OFSLL: Product: credit bureau portfolio type (lookup CRB_PORTFOLIO_TYPE_CD)
Code (any case): I installment, M mortgage, C line of credit, R revolving, O openBase 8, positions 73-73
I
from AUTO000101
Always
account_type
Product set-up: Equifax account type code
OFSLL: Product: credit bureau account type (lookup CRB_ACC_TYPE_CD)
Code (any case): Equifax Canada account type, e.g. 00 auto, 01 unsecured, 3A auto lease, 26 mortgageBase 9, positions 74-75
00
from AUTO000101
Always
date_opened
Loan system: contract / funding date
OFSLL: ACCOUNTS.ACC_EFFECTIVE_DT
Date YYYY-MM-DD: Date the account was openedBase 10, positions 76-83
03152024
from AUTO000101
Always
credit_limit
Loan system: current credit limit (lines and revolving only)
OFSLL: ACCOUNTS.ACC_CR_LMT_CUR
Number in dollars (e.g. 15022.40): Lines of credit and revolving accounts onlyBase 11, positions 84-92
000000000
from AUTO000101 (no account in the test file uses it)
Lines of credit and revolving
original_amount
Loan system: amount financed (lines: highest balance)
OFSLL: ACCOUNTS.ACC_CRB_HIGHEST_BAL_AMT
Number in dollars (e.g. 15022.40): Original loan amount (highest balance for lines)Base 12, positions 93-101
000025000
from AUTO000101
Always
terms_payments
Loan system: number of payments, including extensions
OFSLL: ACCOUNTS.ACC_TERM_CUR + ACC_EXTN_TERM_LIFE
Whole number: Number of scheduled payments (installment / mortgage)Base 13, positions 102-104
060
from AUTO000101
Installment and mortgage
terms_frequency
Loan system: payment frequency
OFSLL: ACCOUNTS.ACC_BILL_CYCLE_CD
Code (any case): M monthly, B every 2 weeks, E twice a month, W weekly, D deferred, P single paymentBase 13, 14, positions 105-105
M
from AUTO000101
Always
scheduled_payment
Loan system: contractual payment amount
OFSLL: Current payment amount (parameter MET_SCH_PMT_METHOD)
Number in dollars (e.g. 15022.40): Payment due each periodBase 15, positions 106-114
000000483
from AUTO000101
Always (0 when nothing is due)
payments_this_period
Transaction history: payments received this month, net of reversals
OFSLL: Payment transactions incl. non-cash (PAYMENT_NON_CASH)
Number in dollars (e.g. 15022.40): Total received this monthBase 16, positions 115-123
000000483
from AUTO000101
Always (0 when nothing came in)
current_balance
Loan system: total owed at month end
OFSLL: ACCOUNTS.ACC_OUTSTANDING_TOTAL_AMT (written off: ACC_DEFICIENCY_AMT)
Number in dollars (e.g. 15022.40): Balance at month end (0 when paid)Base 21, positions 155-163
000015022
from AUTO000101
Always
amount_past_due
Loan system / collections: amount 30+ days overdue
OFSLL: ACCOUNTS.ACC_DUE_DLQ_AMT
Number in dollars (e.g. 15022.40): Amount 30+ days past dueBase 22, positions 164-172
000000704
from AUTO000102
Always (0 when current)
oldest_unpaid_due_date
Collections: due date of the oldest unpaid payment
OFSLL: Oldest due date on the account (delinquency details)
Date YYYY-MM-DD: Due date of the oldest unpaid payment; blank when nothing is overdueBase 17A, 25 (worked out by the engine)When a payment is overdue
date_last_payment
Transaction history: date of the last payment
OFSLL: ACCOUNTS.ACC_PMT_DT_LAST
Date YYYY-MM-DD: Date of the most recent paymentBase 27, positions 206-213
09142026
from AUTO000101
When a payment was ever made
date_paid
Loan system: payoff date
OFSLL: Paid-off date
Date YYYY-MM-DD: Date paid in full (payoff month only)Base 17A, 24, 26, positions 198-205
09222026
from AUTO000103
In the payoff month
date_closed
Loan system: date closed (lines of credit)
OFSLL: ACCOUNTS.ACC_CLOSE_DT (ACC_OPEN_IND = N)
Date YYYY-MM-DD: Date closed (lines of credit)Base 26, positions 198-205
09222026
from AUTO000103
When a line is closed
closed_by
Loan system: who closed the account
OFSLL: Account close transaction
Code (any case): GRANTOR, CONSUMER or INACTIVITYBase 19, 20 (worked out by the engine)When closed
worst_days_late_this_period
Collections: worst days past due during the month
OFSLL: Payment rating (ACCOUNTS.ACC_CRB_PMT_RATING_CD)
Whole number: Payoff month: worst days late during the month (sets the rating)Base 17B (worked out by the engine)In the payoff month
rating_first_delinquency_date
Collections: when that delinquency began
OFSLL: ACCOUNTS.ACC_CRB_FIRST_DLQ_DT
Date YYYY-MM-DD: Payoff month rated 1-6: first 30-day delinquency behind that ratingBase 25 (worked out by the engine)Payoff month rated 1-6
charged_off
Collections / accounting: written off?
OFSLL: Account status Charged-Off
Y or N: Y if written offBase 17A (worked out by the engine)When written off
charge_off_amount
Accounting: amount written off
OFSLL: ACCOUNTS.ACC_CHGOFF_AMT
Number in dollars (e.g. 15022.40): Amount written off (never changes)Base 23, positions 173-181
000008200
from AUTO000104
When written off
in_collections
Collections: placed with collections?
OFSLL: Collections condition
Y or N: Y if placed with collectionsBase 17A, 17B (worked out by the engine)When placed with collections
repossession
Collections: vehicle / collateral taken back
OFSLL: REPO condition (voluntary / involuntary)
Code (any case): VOLUNTARY (surrender) or INVOLUNTARYBase 17A (worked out by the engine)When the collateral was taken back
settled_for_less
Collections: settled for less than owed?
OFSLL: Settlement condition
Y or N: Y if paid for less than the full balanceBase 19 (worked out by the engine)When paid for less than owed
final_disposition
Loan system: sold or transferred this month
OFSLL: Pool status ACC_POOL_ACC_STATUS_CD = S
Code (any case): SOLD or TRANSFERRED: sends the final recordBase 15, 17A, 19, 21-26, K2, positions 151-152
AH
from AUTO000107
In the month of a sale or transfer
final_date
Sale / transfer agreement: date
OFSLL: Pool sale date
Date YYYY-MM-DD: Sale / transfer dateBase 24, 26, positions 182-189
09252026
from AUTO000107
With final_disposition
sold_to
Sale agreement: buyer name
OFSLL: Pool sale details: buyer
Text: Buyer name (sends a K2 segment)K2 segment, positions 730-759
SAMPLE·RECOVERY·INC···········
from AUTO000107
When sold
transferred_internallyLoan system: transferred within the company?Y or N: Y if transferred within the companyBase 19 (worked out by the engine)When transferred within the company
dispute_open
Customer service: open credit-reporting dispute?
OFSLL: Compliance condition on the account
Y or N: Y while a consumer dispute is being investigatedBase 20, positions 153-154
XB
from AUTO000102
While a dispute is investigated
dispute_typeCustomer service: consumer or billing disputeCode (any case): CONSUMER or BILLINGBase 20 (worked out by the engine)With dispute_open
arrangement_type
Loan system: deferral or forbearance in place
OFSLL: Deferment / forbearance condition
Code (any case): DEFERRAL or FORBEARANCEBase 13-15, 17A, 18, 19, K4 (worked out by the engine)During a deferral or forbearance
arrangement_paymentLoan system: payment due during the arrangementNumber in dollars (e.g. 15022.40): Payment due during the arrangement (0 = nothing due)Base 15 (worked out by the engine)With arrangement_type
first_payment_due_date
Loan system: first payment due date
OFSLL: First payment due date
Date YYYY-MM-DD: Deferral: first payment due date (sends a K4 segment)K4 segment, positions 765-772
11012026
from AUTO000105
Deferral with a known first due date
ever_in_repaymentLoan system: has any payment ever fallen due?Y or N: N if the loan has never been in repaymentBase 18 (worked out by the engine)With a deferral
last_update
Loan system: when the account record last changed
OFSLL: Metro II batch time stamp
Text: When the account data was last updated: YYYY-MM-DDTHH:MM:SSBase 3, header 8, positions 6-19
09302026180000
from AUTO000101
Always
last_status
Last month’s file: the status sent
OFSLL: Previous Metro II row: account status
Code (any case): Status sent last month; blank = first time reportedBase 18, 29 (worked out by the engine)Every month after the first
last_payment_history
Last month’s file: the 24-character history sent
OFSLL: ACCOUNTS.ACC_CRB_FULL_PMT_HISTORY
Code (any case): The 24-character payment history sent last monthBase 18, positions 127-150
0000000000000000000BBBBB
from AUTO000101
Every month after the first
last_nothing_dueLast month’s file: was nothing due?Y or N: Y if nothing was due last month (deferral)Base 18 (worked out by the engine)After a deferral month
first_delinquency_date
Collections: stored date the current delinquency began
OFSLL: ACCOUNTS.ACC_CRB_FIRST_DLQ_DT
Date YYYY-MM-DD: Stored date of first delinquency of the current delinquencyBase 25, positions 190-197
08142026
from AUTO000102
While a delinquency continues

6.5 Each person on the account (CSV, c1_ / c2_ / c3_) (19)

ValueWhere to find itEnter it asGoes into the fileIn the test fileNeeded
c1_role
also c2_, c3_
Customer relations on the account
OFSLL: CUS_ACC_RELATIONS (relation type)
Code (any case): PRIMARY (c1), JOINT, COSIGNER or GUARANTORBase / J1 / J2 placement (worked out by the engine)Always
c1_relation
also c2_, c3_
Customer relations: how the person is liable
OFSLL: CUS_ACC_RELATIONS.CAR_CRB_ECOA_CD
Word: individual, joint, cosigned (primary with a co-signer), cosigner, guaranteed, guarantor, assumedBase 37 / J 10, positions 325-325
2
from AUTO000101
Always
c1_surname
also c2_, c3_
Customer record: last name
OFSLL: CUSTOMERS.CUS_LAST_NAME
Text: Accents are fine: the file carries them as plain lettersBase 30 / J 3, positions 232-256
TREMBLAY·················
from AUTO000101
Always
c1_first_name
also c2_, c3_
Customer record: first name
OFSLL: CUSTOMERS.CUS_FIRST_NAME
TextBase 31 / J 4, positions 257-276
JANE················
from AUTO000101
Always
c1_middle_name
also c2_, c3_
Customer record: middle name
OFSLL: CUSTOMERS.CUS_MIDDLE_NAME
TextBase 32 / J 5, positions 277-296
Q···················
from AUTO000101
If known
c1_generation
also c2_, c3_
Customer record: suffix (Jr, Sr, II)
OFSLL: CUSTOMERS.CUS_GENERATION_CD
Code (any case): J, S or 2-9Base 33 / J 6, positions 297-297
·
from AUTO000101 (no account in the test file uses it)
If any
c1_sin
also c2_, c3_
Customer record: SIN, only if the customer gave it
OFSLL: CUSTOMERS.CUS_SSN (holds the SIN in a Canadian set-up)
Digits: Optional: leave blank when not collectedBase 34 / J 7, positions 298-306
000000000
from AUTO000101 (no account in the test file uses it)
Optional
c1_date_of_birth
also c2_, c3_
Customer record: date of birth
OFSLL: CUSTOMERS.CUS_BIRTH_DT
Date YYYY-MM-DD: Required when there is no SINBase 35 / J 8, positions 307-314
04121985
from AUTO000101
Always (required without a SIN)
c1_phone
also c2_, c3_
Customer record: phone
OFSLL: ADDRESS.ADR_PHONE
Digits: 10 digitsBase 36 / J 9, positions 315-324
7805550101
from AUTO000101
If known
c1_address1
also c2_, c3_
Customer mailing address, line 1
OFSLL: ADDRESS.ADR_ADDRESS1
Text: Street address or PO BoxBase 40 / J2 13, positions 330-361
123·MAIN·ST·NW··················
from AUTO000101
Always
c1_address2
also c2_, c3_
Customer mailing address, line 2
OFSLL: ADDRESS.ADR_ADDRESS2
Text: Unit, station, etc.Base 41 / J2 14, positions 362-393
UNIT·2··························
from AUTO000102
If any
c1_city
also c2_, c3_
Customer mailing address: city
OFSLL: ADDRESS.ADR_CITY
TextBase 42 / J2 15, positions 394-413
EDMONTON············
from AUTO000101
Always
c1_province
also c2_, c3_
Customer mailing address: province
OFSLL: ADDRESS.ADR_STATE_CD
Code (any case): AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK, YTBase 43 / J2 16, positions 414-415
AB
from AUTO000101
Always
c1_postal_code
also c2_, c3_
Customer mailing address: postal code
OFSLL: ADDRESS.ADR_ZIP
Code (any case): A1A 1A1Base 44 / J2 17, positions 416-424
T5J0N3···
from AUTO000101
Always
c1_identity_change
also c2_, c3_
Customer maintenance log: what changed this month
OFSLL: Customer maintenance (CUS_MAINT) history
Code (any case): This month only: NAME, ADDRESS, SIN, or e.g. NAME+ADDRESSBase 29 / J 2, positions 231-231
3
from AUTO000103
Only in the month of a change
c1_insolvency_type
also c2_, c3_
Notice from the trustee, court or counselling agency
OFSLL: Bankruptcy details on the account
Code (any case): BANKRUPTCY, PROPOSAL, OPD, COUNSELLING or RECEIVERSHIPBase 17A, 38 / J 11, positions 326-327
B·
from AUTO000106
When the person is insolvent
c1_insolvency_stage
also c2_, c3_
Same notice: filed, discharged, dismissed or withdrawn
OFSLL: Bankruptcy disposition
Code (any case): FILED, COMPLETED (discharged), DISMISSED (annulled) or WITHDRAWNBase 38 / J 11 (worked out by the engine)With insolvency_type
c1_insolvency_date
also c2_, c3_
Same notice: filing or decision date
OFSLL: Bankruptcy notice date
Date YYYY-MM-DD: Filing / decision dateBase 25 (worked out by the engine)With insolvency_type
c1_insolvency_includes_account
also c2_, c3_
Trustee’s list of included debtsY or N: Y if this account is in the insolvency (default Y)Base 38 (worked out by the engine)With insolvency_type

7. Where the real values go

Never type into the TXT file. Every record is fixed-width and the trailer totals are counted from the records, so a hand edit shifts fields or breaks the totals. Put the real values into the two inputs below and rebuild.

7.1 The settings (config.json, or the boxes in the browser builder)

SettingNow (test file)What to putWhere it lands
period2026-09The month being reported, YYYY-MM.Dates in every record fall in this month
created2026-10-02The day the file is built (after month end), YYYY-MM-DD. Blank = today.Header, positions 56-63
equifaxProgramIdEFXPENDINGReplace: The Program Identifier from Equifax Canada.Header, positions 23-32
identificationNumberPENDINGID01Replace: Our own company or branch code (Section 5).Every account record, positions 21-40
reporterNameSAMPLE LENDING COOur legal name as Equifax Canada has it (up to 40 characters).Header, positions 80-119
reporterAddress100 EXAMPLE AVE NW EDMONTON AB T5J0N3Our office address (up to 96 characters).Header, positions 120-215
reporterPhone7805550100Our phone number, 10 digits.Header, positions 216-225
softwareVendorIN-HOUSEWho made the software that builds the file.Header
softwareVersion1.0Its version.Header
layoutJ1, J2, K2, K4, L1Leave as it is: it fixes the 844-character record.Every account record
lineEndingLFLF or CRLF, once Equifax Canada says which.Between records
fileNameEFXCA-M2-{period}-{mode}.TXT{period} becomes YYYYMM; {mode} is TEST until both real identifiers are in, then LIVE.The file name

The file itself, as published (config.json):

{
  "period": "2026-09",
  "created": "2026-10-02",
  "equifaxProgramId": "EFXPENDING",
  "identificationNumber": "PENDINGID01",
  "reporterName": "SAMPLE LENDING CO",
  "reporterAddress": "100 EXAMPLE AVE NW EDMONTON AB T5J0N3",
  "reporterPhone": "7805550100",
  "softwareVendor": "IN-HOUSE",
  "softwareVersion": "1.0",
  "layout": ["J1", "J2", "K2", "K4", "L1"],
  "lineEnding": "LF",
  "fileName": "EFXCA-M2-{period}-{mode}.TXT"
}

7.2 The accounts (accounts CSV)

8. Build and check the file

8.1 In the browser (recommended)

  1. Open https://basehub.cc/equifax-metro2/?f=OUT/build (the Outputs tab, section 8).
  2. Fill the set-up boxes: reporting period, date created, Equifax Program Identifier, Identification Number, company name, address and phone, line ending.
  3. Choose or drop the accounts CSV.
  4. Read the verdict and the list of findings. Changing a set-up box rebuilds at once from the same CSV.
  5. Download the TXT file (offered only when there is no BLOCK), the QA report and the submission summary.

Nothing is uploaded. The builder runs inside your browser tab: the CSV is read on your own computer and never leaves it. It takes files up to 50 MB.

8.2 From the command line

Needs Node.js and a copy of the project folder (tools/, visualizer/ and templates/), which is not public: ask the person who sent you this handbook. Then, from the project folder:

node tools/build_file.js --accounts accounts.csv --config config.json --out out

It writes four files into out/: the TXT file, -qa.csv (every finding), -manifest.json (counts, SHA-256, QA totals) and -submission.txt (the summary). The exit code says how it went:

Exit codeMeaning
0Clean: the file is written and no check raised anything.
1Warnings only: the file is written; read every WARN in the QA report.
2A BLOCK finding or a set-up error: the TXT file is not written. Fix what the output lists and run it again.

8.3 Reading the QA result

The published test file has 0 BLOCK and 2 WARN findings, both about the placeholders:

SeverityRuleAccountFinding
WARNQA-02BNheaderEquifax Program Identifier is missing or still a placeholder: put in the one Equifax Canada issues before sending
WARNQAF-02PYAUTO000101Identification Number is still a placeholder on 8 record(s): put in your own company / branch code and tell Equifax Canada what it is

9. The test submission summary

The builder writes a summary next to every file (...-submission.txt). It is read from the file itself, so it always matches what is sent. Below is the summary of the published test file; ours will show the real identifiers and counts. The SHA-256 is a fingerprint of the exact bytes of the file: if Equifax Canada’s copy has the same fingerprint, it arrived unchanged.

ItemValue for the test fileNote
The file
File nameEFXCA-M2-202609-TEST.TXT
BureauEquifax Canada
FormatMetro 2, character format, fixed-length records (no block descriptor word)
Record length844 characters = Base 426 + J1 100 + J2 200 + K2 34 + K4 30 + L1 54
Records10 = 1 header + 8 account records + 1 trailer
Segments in each record (how many carry data)Base 8, J1 1, J2 1, K2 1, K4 1, L1 1An unused segment slot carries only its two-letter ID
Characters and line endingASCII, uppercase, accents transliterated; one record per line, LF
Size8,450 bytes
SHA-256016234dfaf524301b531052ad4e21638e27f02e567a39d55dd00c9915eaaca15
Reporting
Reporting periodSeptember 2026 (2026-09-01 to 2026-09-30)
FrequencyMonthly, as of the end of the month
Date created (header, positions 56-63)2026-10-02
Activity date (header, positions 48-55)2026-09-30
Identifiers
Equifax Program Identifier (header, positions 23-32)EFXPENDINGPLACEHOLDER: replace with the Program Identifier Equifax Canada issues
Identification Number (every account record, positions 21-40)PENDINGID01PLACEHOLDER: replace with your own company / branch code
Reporter nameSAMPLE LENDING CO
Reporter address100 EXAMPLE AVE NW EDMONTON AB T5J0N3
Reporter phone7805550100
SoftwareIN-HOUSE 1.0; program date 2026-09-01, last revised 2026-09-01
Contents
Accounts by portfolio type (field 8)I Installment: 8
Accounts by account status (field 17A)11 Current: 3, 13 Paid / closed, zero balance: 1, 78 60-89 days late: 1, 80 90-119 days late: 1, 97 Written off: 1, ZA In a consumer proposal, OPD or credit counselling plan: 1
Associated consumersJ1 (same address) 1, J2 (different address) 1
Identity data reportedSIN 0, date of birth 10, phone 10The SIN is optional; where none was given the date of birth carries the match
Provinces (field 43)AB: 2, BC: 1, MB: 1, NS: 1, ON: 2, QC: 1
Insolvency indicators (field 38)B Consumer proposal filed: 1
Consumer Transaction Types (field 29)3 Address change: 1
Quality check
QA result0 BLOCK, 2 WARN
• Equifax Program Identifier is missing or still a placeholder: put in the one Equifax Canada issues before sending
• Identification Number is still a placeholder on 8 record(s): put in your own company / branch code and tell Equifax Canada what it is
Trailer totalsRecounted from the records: every total matches
To fill in before sending
Our contact for this file (name, email, phone)____________________
Equifax Canada data reporting contact____________________
Loan system that holds the accounts (name and version)____________________
How the file is sent (the method Equifax Canada gave us)____________________
Planned first live reporting month____________________

Do not send this example summary with a real file. Build the real file, and send the summary the builder writes for it, with the five blank lines filled in.

10. What to settle with Equifax Canada

10.1 Before the test

10.2 Format and code questions

Each of these is a point marked Confirm with Equifax Canada in the decision flows, where the reasoning is set out.

10.3 Company decisions (internal)

11. Handling data and credentials

Appendix A. The 8 test accounts

The test file covers the cases most likely to go wrong. Every person in it is made up.

#AccountProvinceStatus in the fileCase
S1AUTO000101AB11 Current (Equifax Canada rate 1)
Current auto loan, joint borrowers at the same address (AB)
Paid on time. Two borrowers on the contract, living together in Edmonton.
S2AUTO000102ON78 60-89 days late (Equifax Canada rate 3)
60 days late, co-signer at a different address, consumer dispute open (ON)
Missed the 07/15 and 08/15 payments. Disputed the balance with us directly; investigation running. His mother co-signed.
S3AUTO000103BC13 Paid / closed, zero balance (Equifax Canada rate 1)
Paid in full this month, was 30 days late earlier in the month; moved (BC)
The 08/10 payment was 30 days late on 09/09; the loan was paid off on 09/22. Also moved to a new address this month.
S4AUTO000104MB97 Written off (Equifax Canada rate 9)
Charged off, consumer still paying it down (MB)
Charged off in March 2026 for $8,200. A $150 payment came in this month.
S5AUTO000105NS11 Current (Equifax Canada rate 1)
New loan in deferral: first payment not due until November (NS)
Opened 08/20 with the first payment deferred to 11/01. Never in repayment yet.
S6AUTO000106ONZA In a consumer proposal, OPD or credit counselling plan (Equifax Canada rate 7)
Consumer proposal filed; account was current (ON)
Borrower filed a consumer proposal with a Licensed Insolvency Trustee on 09/08. Payments now go to the trustee, so nothing is due to us. Equifax Canada shows this as R7.
S7AUTO000107AB80 90-119 days late (Equifax Canada rate 4)
Sold to another company while 90 days late (final record, AB)
Buyer will not carry our history, so we send a final "sold" record on 09/25.
S8AUTO000108QC11 Current (Equifax Canada rate 1)
Account renumbered in a system conversion (L1); French name with accents (QC)
New account number from 10/2026. This file still carries the old number plus an L1 with the new one. The name and address are keyed with accents; the file carries them as plain letters (GAGNE, ELODIE, MONTREAL).

Appendix B. Glossary

TermMeaning
Metro 2The standard fixed-width format for reporting consumer credit accounts to credit bureaus.
CRRGThe Credit Reporting Resource Guide: the Metro 2 specification, published by the Consumer Data Industry Association (CDIA). Licensed.
Data furnisherA lender that reports its accounts to a credit bureau: here, us.
Program IdentifierThe identifier Equifax Canada issues to us; header positions 23-32.
Identification NumberOur own company or branch code, in every account record (Base field 5, positions 21-40).
Header / trailerThe first and last records of the file. The trailer holds the totals.
Base segmentThe 426-character core of each account record: the account and the primary borrower.
J1 / J2Segments for another person on the account, at the same / a different address.
K2, K4, L1Segments for an account bought or sold (K2), a special payment arrangement (K4), and an account number change (L1).
P1An optional Equifax Canada segment for extra contact and identity details.
RDWRecord descriptor word: the 4-digit record length at the start of each record (0844).
Account status (17A)The account’s state this month: 11 current; 71, 78, 80, 82, 83 and 84 for 30, 60, 90, 120, 150 and 180+ days late; 13 paid; 97 written off; ZA in a proposal or plan; and so on.
Payment rating (17B)How up to date the account was when it reached a final status (paid, closed, transferred).
Payment history (18)24 characters, one per month, most recent first.
DOFD (25)Date of first delinquency: when the delinquency that led to a negative status began. It sets how long the negative information stays on file.
Insolvency indicator (38)The Consumer Information Indicator: bankruptcy, consumer proposal, Orderly Payment of Debts, credit counselling.
Association code (37)The person’s relationship to the account (individual, joint, co-signer, guarantor...).
Consumer Transaction TypeFlags a new account, or a change of name, address or SIN.
SINSocial Insurance Number. Optional in credit reporting.
OPDOrderly Payment of Debts: a provincial debt-repayment program.
OFSLLOracle Financial Services Lending and Leasing: the loan platform described in the Metro 2 guide the company was sent. Its fields are listed in Section 6 in case it is our system.
QAThe checks run on the built file. BLOCK must be fixed; WARN must be read.
R0-R9Equifax Canada’s rating scale on credit reports, from R1 (paid as agreed) to R9 (bad debt). ZA shows as R7.
SHA-256A fingerprint of a file’s exact bytes. Two files with the same SHA-256 are identical.

Appendix C. Sources

Built from the project’s engine on 1 October 2026; the figures match the published test file (SHA-256 016234dfaf524301b531052ad4e21638e27f02e567a39d55dd00c9915eaaca15).