UUID out.
Quickstart
Stamp your first invoice in three requests — zero credentials, simulated PAC.
API Reference
Every endpoint, request, and response — generated from the OpenAPI 3.1 spec.
Connect (multi-tenant)
One platform key, many tenants — Stripe Connect–style. Built for accounting apps.
Going live
Live API keys, a real CSD, the carta manifiesto, and the production checklist.
What it does
Fiscal profiles
Register an emitter RFC + CSD (and FIEL). Keys are AES-256-GCM encrypted and never returned.
Invoices
JSON → CFDI 4.0 XML → local CSD sello → PAC stamp. Drafts, PDF, credit notes, complemento de pago.
Cancellation
Motivos 01–04 with the SAT acuse and receptor-acceptance polling.
Validation
Validate any CFDI XML — structure, arithmetic, sello, and SAT status.
Massive download
SAT descarga masiva jobs by date range, issued/received, CFDI or metadata.
Webhooks
HMAC-signed events with retries — including Connect webhooks across all your tenants.
SDKs
Two first-party SDKs wrap the API — both fully typed, dependency-free, and covering every endpoint (invoices, fiscal profiles, downloads, webhooks, events, usage, versions):Node.js
@invoice-api/node — ESM, fully typed, with a webhook-signature verifier.Python
invoice_api — stdlib-only, Python 3.9+, with the same webhook verifier.Neither package is on a public registry yet —
npm install @invoice-api/node and
pip install invoice-api 404 today. Install from the repository (npm pack the sdk/ folder,
or pip install ./sdk-python); the exact commands live in the repo README’s SDKs section.Built for agents
RFC 9457problem+json errors carry a stable code and human- and LLM-readable
remediation. The API ships llms.txt, an OpenAPI 3.1 spec, and a simulated PAC so anything —
human or agent — can integrate with zero credentials. Dated versioning (Invoice-Version) keeps
old integrations stable — see the changelog.
Test mode (
sk_test_) targets the sandbox or the built-in simulated PAC; live mode
(sk_live_) targets production. Data is fully isolated per mode.