Free Canadian T5018 Statement of Contract Payments for Odoo 19: the $500 test is applied WITHOUT GST/HST while box 22 is reported WITH it — the two amounts are kept apart on every payment. Calendar year or fiscal period, six-month deadline, the more-than-5-slips electronic filing notice, and two separate printouts because the CRA forbids the payer's program account number on the subcontractor's copy.
Overview
Subcontractor payment reporting — Canada (T5018)
A free app for Odoo 19 Community. Canadian satellite of the dyo_paiements_st_na_lite foundation. Also searched for as: T5018 Odoo, statement of contract payments, contract payment reporting system, CPRS, SDPC, subcontractor payments construction Canada.
The T5018 trap, spelled out in black and white
The Canada Revenue Agency says two things that do not look alike:
to know whether a slip is required — “The total of all payments made in the calendar year to a subcontractor was more than $500, not including GST/HST”;
to know what to report — “Include GST/HST and PST (if applicable) in the amount reported in box 22.”
A business that counts the tax on both sides reports subcontractors it did not have to. One that excludes it on both sides reports amounts that are too low. Here, each payment carries the amount used for the threshold and the amount to report, side by side, and they are not the same.
And “more than $500” means exceeded, not reached: a subcontractor paid exactly $500 before tax does not give rise to any slip.
Two copies, because the CRA requires it
“Payer's program account number — Enter your 15-character account number only on your copy and on the copy you send to the CRA. Do not enter your account number on the copies you give to the contractors.”
It is a short instruction, easy to overlook, and impossible to fix once the copies have been mailed. The module therefore prints two separate reports — the subcontractor's copy and the ARC copy — rather than a single one with a box that someone forgets to uncheck.
What is out of scope, and where it is covered
Nothing disappears: the payment stays in the register, flagged, with its reason and the relevant form in its place.
Subcontractor not resident in Canada → T4A-NR slip.
Construction is not your principal source of business income (less than 50% of your income-earning activities) → T4A slip. The CRA itself gives the example: a natural gas company that lays a lot of pipeline is not a construction business.
Payment made for goods only → not reportable.
The period is the payer's
Calendar year or fiscal year, your choice. The deadline falls six months after the end of the chosen period — not on February 28 like most other slips, which is the other classic mistake. The choice is set once on the company record, and the return suggests its date range accordingly.
Finally, the module flags that electronic filing is mandatory beyond five slips of the same type for returns filed since January 1, 2024. It flags it; it does not file anything on your behalf.
Free and paid
This module is free. The paid module dyo_paiements_st_ca adds automatic matching to vendor bills, verification of the account number against the public registry and its fallback, the transmission export and amended returns.
Not proven in production. No actual filing has been made with the CRA using this module. Regulatory values come from cited, dated official pages; have them checked by your Canadian accountant before relying on them.
Specifications
| Price | Free |
|---|---|
| License | LGPL-3 |
| Odoo series | 19.0: published on the Odoo Apps Store; 20.0: published on the Odoo Apps Store |
| Version | 1.0.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_paiements_st_ca_lite |
| Domain | Accounting and finance |
| Premium version | dyo_paiements_st_ca |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.