Singapore PayNow & eGIRO
Generate PayNow corporate collection QR codes and eGIRO (ISO 20022 pain.008) direct-debit instruction files - using your own DBS / UOB / OCBC credentials (BYOK).
Two Singapore collection rails, one module
This app turns Odoo into a Singapore collections cockpit. It
builds PayNow merchant-presented QR codes to the EMVCo /
SGQR specification, and eGIRO direct-debit files as
ISO 20022 pain.008 CustomerDirectDebitInitiation
messages. Everything is generated inside your database;
you submit the file with your own bank credentials. The module is
not a payment gateway and transmits nothing to any third party.
PayNow Collection QR
- Collect by UEN or mobile PayNow proxy.
- Full EMVCo merchant-presented payload with the SG.PAYNOW merchant-account template.
- Fixed, editable or open amounts; fixed amounts produce a dynamic per-transaction QR.
- Bill number / reference and optional expiry date.
- Correct CRC-16/CCITT-FALSE checksum so wallets accept the code on the first scan.
- Rendered as a scannable PNG plus the raw payload string.
eGIRO Direct Debit
- Manage Direct Debit Authorisations (DDA) with state, signature date and per-collection limit.
- Build collection batches and export a valid ISO 20022 pain.008 file.
- Creditor agent BIC for DBS, UOB and OCBC.
- Biller / Originator ID written to the creditor scheme id.
- One-click build from posted customer invoices, grouped per customer against their active DDA.
- Mandate guard: inactive DDAs and over-limit amounts are blocked before a file is generated.
PayNow QR data objects
| ID | Field | Value |
|---|---|---|
| 00 | Payload Format Indicator | 01 |
| 01 | Point of Initiation Method | 11 static / 12 dynamic |
| 26 | Merchant Account Information | SG.PAYNOW · proxy type · proxy value · editable flag · expiry |
| 52 | Merchant Category Code | ISO 18245 (0000 if N/A) |
| 53 | Transaction Currency | 702 (SGD) |
| 54 | Transaction Amount | e.g. 49.90 |
| 58 | Country Code | SG |
| 59 / 60 | Merchant Name / City | payee · Singapore |
| 62 | Additional Data | bill number / reference |
| 63 | CRC | CRC-16/CCITT-FALSE checksum |
eGIRO pain.008 message structure
| Block | Contents |
|---|---|
| Group Header | Message id, creation timestamp, number of transactions, control sum, initiating party. |
| Payment Information | Payment method DD, local instrument GIRO, requested collection date, creditor name / account / agent BIC, creditor scheme (Biller ID). |
| Direct Debit Transaction | End-to-end id, instructed amount & currency, mandate (DDA) reference & signature date, debtor name / account / agent, remittance reference. |
Bring Your Own Keys (BYOK)
You stay in control of the bank relationship. Configure your PayNow proxy, your eGIRO Biller ID, your collection account and your bank's API key once under Settings → SG PayNow / eGIRO. The module generates the PayNow QR payload and the eGIRO pain.008 file; you submit them through your own bank's PayNow / eGIRO channel with your own credentials. We are not a certified PAC, gateway or integrator - your data never leaves your Odoo database.
Highlights
Standards-accurate
EMVCo merchant-presented QR and ISO 20022 pain.008, SGD currency 702, validated CRC and control sums.
Community-only
Builds on Accounting and Mail; no Enterprise dependency. Compatible with Odoo 18 and Odoo 19.
Audit trail
Chatter, sequenced references and state workflow on every QR, mandate and collection batch.
Invoice integration
Turn posted customer invoices into a ready eGIRO collection run in one click.
Screenshots
Egiro Collections
Collect From Invoices
Egiro Mandates Dda
Paynow Qr Codes
Update date: 2026-07-02