Saltar al contenido
Secciones de la documentación

Validador de JSON

Pega el JSON que mandas a POST /invoice/create y revisa, antes de timbrar, si los importes cuadran y si el receptor cumple las reglas del SAT. Cada observación trae la clave de error que te devolvería el SAT o la API.

La revisión local corre en tu navegador mientras escribes. Usa datos de prueba: no hace falta poner los de tu cliente.

Revisión local

Sin observaciones en la revisión local.

Validar con la API de sandbox

Manda el JSON a la API v5 del sandbox, que arma el XML y lo valida contra el esquema del SAT como en producción, sin timbrarlo. No revisa la lista de RFC del SAT (CFDI40143 y similares): eso pasa al timbrar.

La validación con la API no está disponible en este momento. La revisión local sigue funcionando.

Qué revisa en tu navegador

  • La estructura: que el texto sea JSON, que Version sea "4.0" y que estén los campos obligatorios del esquema del SAT.
  • Los catálogos chicos del SAT: c_TipoDeComprobante, c_Exportacion, c_Moneda, c_FormaPago, c_MetodoPago, c_RegimenFiscal, c_UsoCFDI, c_ObjetoImp, c_Impuesto, c_TipoFactor y c_Pais.
  • Las reglas del receptor: forma del RFC, régimen contra el tipo de persona (CFDI40158), uso contra el régimen (CFDI40161) y las reglas del RFC genérico (CFDI40130, CFDI40146, CFDI40149, CFDI40159).
  • La aritmética: Importe de cada concepto con los márgenes del SAT (CFDI40167), impuestos por concepto (CFDI40180), SubTotal (CFDI40108), traslados y retenciones globales (CFDI40205, CFDI40215, CFDI40221, CFDI40211) y Total (CFDI40119).
  • Los decimales de cada importe contra los que permite la moneda (CFDI40107, CFDI40112, CFDI40220).

No revisa los catálogos grandes (c_ClaveProdServ, c_ClaveUnidad, c_CodigoPostal), los complementos ni la lista de RFC del SAT. Esos los valida la API al timbrar.

Qué hace la validación con la API

Manda tu JSON a POST /invoice/create del sandbox con OmitirTimbrado: "si". La API arma el XML, lo sella con el certificado de prueba de una cuenta del sandbox y lo valida contra el esquema del SAT, igual que en producción, pero se detiene antes de timbrar. Si algo falla, ves la misma respuesta que recibiría tu sistema: code, message y, en un 702, la lista errors.

  • El emisor es el de la cuenta de pruebas del sandbox; tu JSON solo aporta Emisor.RegimenFiscal.
  • Si mandas Folio: "AUTO", se valida con el folio 1, porque las series automáticas dependen de cada cuenta.
  • No se mandan correos ni se usa una plantilla de PDF: enviar_mail y plantilla_id se quitan antes de enviar.
  • Las validaciones contra la lista de RFC del SAT (CFDI40143 a CFDI40148) no corren aquí. Para verlas, timbra en tu cuenta de sandbox.

Revisado contra la API v5 en producción el 2026-11-03.