Free T5018 XML generator for CRA
Built to CRA XML schema 1-26-3 (T619 2026, T5018 2026V3)
If your business's primary activity is construction, you report the payments you made to subcontractors for construction services on the T5018 Statement of Contract Payments: a T5018 slip for each subcontractor and a T5018 Summary. The return is due within 6 months after the end of your reporting period, which can be the calendar year or your fiscal period. TaxXML turns the T5018 spreadsheet you already have into the XML file CRA accepts through Internet File Transfer (IFT), in your browser, for free.
Information and a conversion tool, not advice
TaxXML provides information and a conversion tool only. It is not tax, legal, or accounting advice. CRA specifications change, so always verify the requirements, and your files, against the CRA's official XML specifications for information returns before you file.
What a T5018 XML file is
A T5018 XML file is one <Submission> with two parts:
- T619 transmitter record. The wrapper that says who is sending the file: the transmitter's CRA account number (usually the 15-character business number), a Submission Reference ID, a contact name, phone and email, and the language.
- T5018 return. One
<T5018Slip>per subcontractor, followed by one<T5018Summary>with the payer's details, the end date of the reporting period and the total paid to subcontractors.
You upload the file to IFT, which checks it against CRA's XML schema. Electronic filing is required once you file more than 5 slips of a type in a calendar year. Below that, it is optional but still accepted.
CRA XML specifications in plain terms
TaxXML follows schema 1-26-3: T619 2026 for the transmitter record and T5018 2026V3 for the return. The elements you will see most:
bn: the payer's 15-character account number on the RZ program, for example123456789RZ0001, on every slip and the summary.RCPNT_NMorCORP_PTNRP_NM: the subcontractor's name. Individuals useRCPNT_NM; corporations and partnerships useCORP_PTNRP_NM.sin,rcpnt_bn: the subcontractor's social insurance number or business number (Box 24). Both tags appear on every slip; the one that doesn't apply gets a zero placeholder, such as000000000for the SIN.rcpnt_tcd: recipient type, such as individual or corporation.sbctrcr_amt: the construction subcontract payments for the period (Box 22).PRD_END_DT: on the summary, the day, month and year your reporting period ends.slp_cnt,tot_sbctrcr_amt: on the summary, the number of slips and the total paid.rpt_tcd: report type.Ofor original,Afor amendment,Cfor cancel.
The full rules are on CRA's site: XML specifications for information returns and the T619 2026 specification.
How to make a T5018 XML file in 3 steps
- Pick T5018 and open your spreadsheet. Choose T5018 in Step 1 of the converter, then open the .xlsx or .csv with one row per subcontractor. Not sure how to lay it out? Download the T5018 sample spreadsheet.
- Check the columns and fill in the filing details. TaxXML matches your headers to CRA fields. Fix any it missed, then enter the transmitter and payer details and the end date of your reporting period. Those are saved in this browser for next time.
- Generate and download. Problems are listed by row and column before anything downloads. Then upload the XML to IFT signed in with My Business Account, Represent a Client, or a web access code (WAC).
Common reasons CRA rejects a T5018 XML file
- IDs that lost their leading zero. Excel treats a SIN like
046454286as a number and drops the zero. Format the SIN and BN column as Text. TaxXML reads them as text, and flags any SIN that isn't 9 digits or fails the checksum. - Empty optional tags. CRA rejects files that contain empty optional tags: a tag with nothing in it, like
<pstl_cd/>, gets the file rejected. Optional fields with no value must be left out entirely. TaxXML leaves out blank optional fields. Don't type "N/A" or a space to fill a cell. - Business number in the wrong format. A BN here is 15 characters: 9 digits, 2 letters, 4 digits. For the payer, T5018 uses the RZ program account, for example
123456789RZ0001, not the RP payroll account. A 9-digit BN on its own is not enough. - Reused Submission Reference ID. Every file needs a new one. TaxXML bumps it for you (A to B) when you come back to resubmit.
- A second original instead of an amendment. Corrections to accepted slips go in as an amendment, not another original.
Other free CRA XML returns
The same converter handles these. Pick the return in Step 1: