For teams billing in México

CFDI was going to eat your quarter.

SAT catalogs, CSD certificates, cadenas, sellos, a cancellation flow with a 72-hour clock — get one byte wrong and the invoice bounces, the client waits, and your team is debugging "sello no corresponde" at 2 a.m. Or: send one JSON request and bill like it's a solved problem. Because now it is.

CFDI plumbing you build
None
catalogs, sellos, PAC — ours to worry about
First stamped invoice
~5 min
free account → sk_test_ → real prueba CFDI
What your client gets
XML + PDF
SAT QR, cadena, your logo — accountant-proof
Laguna de Bacalar, Quintana Roo

You've seen what raw CFDI XML looks like.

Nested namespaces, XSLT cadenas, base64 certificates, catalog codes that change under you. Nobody should need a fiscal degree to bill a client. This is the entire request — and when something is off, the error tells you the fix in plain language instead of a four-digit SAT code.

# stamp an invoice
POST https://api.newinvoice.dev/v1/invoices
{
  "customer": { "rfc": "XAXX010101000" },
  "items": [{ "description": "Consultoría", "amount": "1500.00" }]
}

{
  "status": "stamped",
  "uuid": "a7f0c1e2-4b83-4d1a-9e77-2c5f1b0d8e42",
  "xml_url": "…/v1/invoices/inv_3k9/xml",
  "pdf_url": "…/v1/invoices/inv_3k9/pdf"
}

The parts that were going to hurt. Gone.

Every CFDI integration dies in the same four places. We took them off your plate.

XML written by hand
Zero
no namespaces, no cadenas, no XSLT — JSON in, stamped CFDI out
Rejected invoices
Caught early
uso, régimen, product keys validated before the SAT ever sees them
Cryptic SAT errors
Translated
every code mapped to a fix in plain language — no more forum archaeology
Cancellation chaos
Handled
72-hour windows, receptor acceptance, polling — we track it, you get a webhook