mcp-invoicenow-sg 🇸🇬
Introduction
mcp-invoicenow-sg is an MCP (Model Context Protocol) server
for Singapore electronic invoicing over InvoiceNow, the national e-invoicing platform
operated by IMDA. It builds and validates PINT-SG v1.4.1 and SG Peppol BIS Billing 3.0 sent
invoices (originally-issued invoices, not the received/purchase side). It is part of the
mcp-einvoicing-* family of country-specific servers, all built on
mcp-einvoicing-core, which provides the
shared validation engine, EN 16931 abstractions, and Peppol network utilities.
Supported standards
- PINT-SG v1.4.1 (
urn:peppol:pint:billing-1@sg-1) — the recommended profile for new senders. - SG Peppol BIS Billing 3.0 — legacy profile, predates the PINT programme.
- Both are EN 16931-conformant; the invoice model extends
mcp_einvoicing_core.en16931.EN16931Invoice. - Validation runs the real PINT-SG Schematron (base + jurisdiction rulesets) plus IRAS's own C5 acceptance layer — a document can be PINT-SG-conformant and still be rejected by IRAS (e.g. a missing buyer/seller UEN), and both outcomes are reported.
Not yet supported (see specs/README.md and this monorepo's
context-library/countries/sg.md for full detail):
- The Peppol Ordering message family (
Order,OrderResponse, etc.) and IMDA's SG-specific Order Balance. - Submission to an IMDA-accredited Access Point — no publicly available document states an Access Point's actual API base URL or authentication flow; this package builds and validates documents, it does not transmit them.
- SG Peppol BIS Billing 3.0 Schematron validation — only PINT-SG's rule sets are bundled.
- The received/purchase-side invoice model (
LocalTaxInvoice, TX2_Annex Annex B Type 1B).
Installation
Requirements
- Python ≥ 3.11
mcp-einvoicing-core(installed automatically as a dependency)- Optional: the
xslt2extra (pip install mcp-invoicenow-sg[xslt2]) — required forvalidate_invoice_sgto run. The bundled PINT-SG and IRAS C5 stylesheets require XSLT 2.0.
Using uvx (recommended)
uvx mcp-invoicenow-sg
Using uv
uv add mcp-invoicenow-sg
From source
git clone https://github.com/cmendezs/mcp-invoicenow-sg.git
cd mcp-invoicenow-sg
uv sync --all-extras
Configuration
Add the server to your MCP client configuration:
{
"mcpServers": {
"invoicenow-sg": {
"command": "uvx",
"args": ["mcp-invoicenow-sg"]
}
}
}
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
LOG_LEVEL |
No | INFO |
Logging level: DEBUG, INFO, WARNING, or ERROR |
Tools
| Tool | Description |
|---|---|
generate_invoice_sg |
Build an SGInvoice from structured data and serialize it to UBL 2.1 XML. |
validate_invoice_sg |
Validate a UBL 2.1 invoice against PINT-SG's Schematron rulesets plus IRAS's C5 acceptance layer. |
get_gst_category_codes_sg |
Return the IRAS GST category codes (Annex E) accepted on Singapore invoices. |
get_profile_urn_sg |
Return the CustomizationID (BT-24) and ProfileID (BT-23) for a given profile (PINT_SG or BIS3). |
Recommended workflow: get_profile_urn_sg to pick the profile pair, then
generate_invoice_sg with that pair in the invoice data, then validate_invoice_sg on the
result.
The tool reference in docs/TOOLS.md is generated from the running server:
uv run python scripts/gen_tool_reference.py
Contributing
See CONTRIBUTING.md for development setup, the test and lint commands, and the pull request checklist. Security issues follow the private disclosure process in SECURITY.md.
Other e-invoicing MCP servers
| Country | Server |
|---|---|
| 🌍 Global | mcp-einvoicing-core |
| 🇧🇪 Belgium | mcp-einvoicing-be |
| 🇧🇷 Brazil | mcp-nfe-br |
| 🇫🇷 France | mcp-facture-electronique-fr |
| 🇩🇪 Germany | mcp-einvoicing-de |
| 🇮🇹 Italy | mcp-fattura-elettronica-it |
| 🇵🇱 Poland | mcp-ksef-pl |
| 🇸🇬 Singapore | mcp-invoicenow-sg |
| 🇪🇸 Spain | mcp-facturacion-electronica-es |
| 🇦🇪 United Arab Emirates | mcp-einvoicing-ae |
License
This project is licensed under the Apache 2.0 license — see LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_invoicenow_sg-0.2.0.tar.gz.
File metadata
- Download URL: mcp_invoicenow_sg-0.2.0.tar.gz
- Upload date:
- Size: 8.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
902e49ed9ab9a5b6c68737689ba8f61a60fe082bf4a48c4f0e66b899af85affd
|
|
| MD5 |
d102e97e9f638af5d99d3ca378179a8c
|
|
| BLAKE2b-256 |
ae78d1501291a5fe535e4a3481274272443cd6488755a9b23c3dfb7e51d8b6a6
|
Provenance
The following attestation bundles were made for mcp_invoicenow_sg-0.2.0.tar.gz:
Publisher:
publish.yml on cmendezs/mcp-invoicenow-sg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_invoicenow_sg-0.2.0.tar.gz -
Subject digest:
902e49ed9ab9a5b6c68737689ba8f61a60fe082bf4a48c4f0e66b899af85affd - Sigstore transparency entry: 2625725294
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-invoicenow-sg@5d1fd0916d9cc2f5927cf0218744af4b95ed6300 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d1fd0916d9cc2f5927cf0218744af4b95ed6300 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_invoicenow_sg-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_invoicenow_sg-0.2.0-py3-none-any.whl
- Upload date:
- Size: 34.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f6e9347fe6ebc0b4996077a1b1c76b5889beb1aa44db8143635def4c895e81e
|
|
| MD5 |
909e43f4f94eb24ccb59a17fd5c17ecf
|
|
| BLAKE2b-256 |
78393afebfad505f760fb218ae92eae7684208a20a9e6dcec05ff7a999081082
|
Provenance
The following attestation bundles were made for mcp_invoicenow_sg-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on cmendezs/mcp-invoicenow-sg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_invoicenow_sg-0.2.0-py3-none-any.whl -
Subject digest:
8f6e9347fe6ebc0b4996077a1b1c76b5889beb1aa44db8143635def4c895e81e - Sigstore transparency entry: 2625725312
- Sigstore integration time:
-
Permalink:
cmendezs/mcp-invoicenow-sg@5d1fd0916d9cc2f5927cf0218744af4b95ed6300 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/cmendezs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d1fd0916d9cc2f5927cf0218744af4b95ed6300 -
Trigger Event:
push
-
Statement type: