Saltar al contenido

Referencia de la API

Referencia completa de todos los endpoints de la API de Facturación. Todas las solicitudes utilizan HTTP Basic Auth con tu llave de API.

Base URL: https://api.facturacion.srs-ngr.com

Facturas

El recurso principal. Crea, timbra, cancela y descarga facturas.

Crear una factura

POST /v1/facturas

Crea y opcionalmente timbra una factura en una sola llamada.

Cuerpo de la solicitud:

CampoTipoRequeridoDescripción
organizacionstringID de organización (org_...)
tipostring"ingreso" o "egreso"
clientestringRFC del cliente o ID (cli_...)
conceptosarrayPartidas (ver abajo)
forma_pagostringCondicionalCódigo de forma de pago del SAT ("01", "03", etc.)
metodo_pagostringCondicional"PUE" o "PPD"
monedastringNoPor defecto: "MXN"
tipo_cambiostringNoRequerido si moneda no es MXN
lugar_expedicionstringNoPor defecto: codigo_postal de la organización
exportacionstringNoPor defecto: "01"
seriestringNoSerie de la factura
foliostringNoNúmero de factura
condiciones_pagostringNoCondiciones de pago
relacionesarrayNoCFDIs relacionados
auto_timbrarboolNoPor defecto: true

Objeto Concepto:

CampoTipoRequeridoDescripción
productostringNoID de producto — hereda valores por defecto
cantidadstringCantidad
clave_prod_servstringCondicionalCódigo del SAT (requerido si no hay producto)
clave_unidadstringCondicionalCódigo de unidad del SAT
descripcionstringCondicionalDescripción
valor_unitariostringCondicionalPrecio unitario
descuentostringNoMonto de descuento
objeto_impstringCondicional"01", "02", "03"
impuestosobjectNoDesglose de impuestos
curl -X POST https://api.facturacion.srs-ngr.com/v1/facturas \
  -u sk_test_xxx: \
  -H "Content-Type: application/json" \
  -d '{
    "organizacion": "org_1a2b3c4d",
    "tipo": "ingreso",
    "cliente": "XAXX010101000",
    "forma_pago": "03",
    "metodo_pago": "PUE",
    "conceptos": [
      {"producto": "prod_xyz789", "cantidad": "2"}
    ]
  }'

Listar facturas

GET /v1/facturas
ParámetroTipoDescripción
organizacionstringFiltrar por organización
clientestringFiltrar por cliente
estadostringFiltrar por estado
tipostringFiltrar por tipo
paginacion.limiteintTamaño de página (por defecto: 20)
paginacion.cursor_iniciostringCursor de la página anterior

Obtener una factura

GET /v1/facturas/{id}

Devuelve la factura completa con conceptos, impuestos y relaciones anidados.

Timbrar un borrador

POST /v1/facturas/{id}/timbrar

Envía un borrador de factura al PAC para timbrado. Solo funciona cuando estado es "borrador".

Cancelar una factura

POST /v1/facturas/{id}/cancelar
CampoTipoRequeridoDescripción
motivostring"01", "02", "03" o "04"
uuid_sustitucionstringCondicionalRequerido cuando motivo es "01"

Descargar XML

GET /v1/facturas/{id}/xml

Devuelve Content-Type: application/xml.

Descargar PDF

GET /v1/facturas/{id}/pdf

Devuelve Content-Type: application/pdf.


Clientes

Administra los datos fiscales de tus clientes.

Crear un cliente

POST /v1/clientes
CampoTipoRequeridoDescripción
organizacionstringID de organización
rfcstring12 o 13 caracteres
nombrestringRazón social (debe coincidir con el SAT)
regimen_fiscalstringCódigo de régimen del SAT
domicilio_fiscalstringCódigo postal (debe coincidir con el SAT)
uso_cfdistringDebe ser compatible con regimen_fiscal
correostringNoDirección de correo electrónico

Listar clientes

GET /v1/clientes
ParámetroDescripción
organizacionFiltrar por organización
qBuscar por RFC o nombre

Obtener un cliente

GET /v1/clientes/{id}

Actualizar un cliente

PATCH /v1/clientes/{id}

Eliminar un cliente

DELETE /v1/clientes/{id}

Productos

Catálogo de productos con mapeo de códigos del SAT e impuestos por defecto.

Crear un producto

POST /v1/productos
CampoTipoRequeridoDescripción
organizacionstringID de organización
descripcionstringDescripción del producto
valor_unitariostringPrecio unitario (6 decimales)
clave_prod_servstringCódigo de producto del SAT
clave_unidadstringCódigo de unidad del SAT
unidadstringNoNombre de la unidad (texto libre)
no_identificacionstringNoSKU interno
objeto_impstring"01", "02", "03"
impuestos_defaultobjectNoImpuestos por defecto aplicados en facturas

Listar / Buscar / Obtener / Actualizar / Eliminar

Mismos patrones que Clientes. Busca con el parámetro q en descripcion y no_identificacion.


Organizaciones

Administra tus entidades de negocio (soporte multi-RFC).

Crear una organización

POST /v1/organizaciones
CampoTipoRequerido
rfcstring
nombrestring
regimen_fiscalstring
codigo_postalstring
color_acentostringNo

Listar / Obtener / Actualizar

CRUD estándar con paginación.


Certificados

Carga y administra Certificados de Sello Digital (CSD).

Cargar un certificado

POST /v1/certificados
CampoTipoRequeridoDescripción
organizacionstringID o RFC de la organización
cerbytesArchivo de certificado (.cer)
llavebytesArchivo de llave privada (.key)
contrasenastringContraseña de la llave privada

Acepta multipart/form-data (archivos vía curl -F) o JSON (archivos en base64).

Listar / Obtener / Activar-Desactivar

CRUD estándar. El endpoint PATCH alterna la bandera activo.


Pagos

Registra pagos contra facturas PPD. Genera Complemento de Pagos 2.0.

Crear un pago

POST /v1/pagos
CampoTipoRequeridoDescripción
organizacionstringID de organización
fecha_pagotimestampFecha de pago
forma_pagostringCódigo de forma de pago del SAT
monedastringNoPor defecto: "MXN"
montostringMonto total del pago
facturas_pagadasarrayFacturas que se están pagando

Elemento de facturas_pagadas:

CampoTipoRequerido
facturastring
imp_pagadostring

Listar / Obtener

Filtra por organizacion y opcionalmente por factura.


Catálogos SAT

Busca en los catálogos de referencia del SAT de solo lectura. No se requiere autenticación para los endpoints de catálogos.

EndpointDescripciónBuscable
GET /v1/catalogos/claves_prod_serv?q=...Códigos de productos/servicios (55K+)
GET /v1/catalogos/claves_unidad?q=...Códigos de unidad
GET /v1/catalogos/codigos_postales?q=...Códigos postales
GET /v1/catalogos/regimenes_fiscalesRegímenes fiscalesNo
GET /v1/catalogos/usos_cfdiUsos de CFDINo
GET /v1/catalogos/formas_pagoFormas de pagoNo
GET /v1/catalogos/metodos_pagoMétodos de pagoNo
GET /v1/catalogos/monedasMonedasNo
GET /v1/catalogos/exportacionesTipos de exportaciónNo
GET /v1/catalogos/objetos_impObjetos de impuestoNo
GET /v1/catalogos/tipos_relacionTipos de relaciónNo

Los catálogos buscables aceptan los parámetros q (consulta) y limite.


Webhooks

Registra URLs para recibir notificaciones de eventos.

Crear / Listar / Obtener / Actualizar / Eliminar

POST /v1/webhooks · GET /v1/webhooks · GET /v1/webhooks/{id} · PATCH /v1/webhooks/{id} · DELETE /v1/webhooks/{id}

Consulta la guía de Webhooks para ver los tipos de eventos y la verificación de firmas.


Eventos

Registro inmutable de todos los eventos en tu cuenta.

Listar eventos

GET /v1/eventos
ParámetroDescripción
tipoFiltrar por tipo de evento (ej., "factura.timbrada")

Obtener un evento

GET /v1/eventos/{id}

Cuenta & Llaves API

Cuenta

POST /v1/cuenta · GET /v1/cuenta · PATCH /v1/cuenta

Llaves de API

POST /v1/llaves_api · GET /v1/llaves_api · DELETE /v1/llaves_api/{id}

Consulta la guía de Autenticación para más detalles.


Patrones comunes

Paginación

Todos los endpoints de listado usan paginación basada en cursor:

{
  "datos": [...],
  "paginacion": {
    "hay_mas": true,
    "siguiente_cursor": "abc123..."
  }
}

Pasa siguiente_cursor como paginacion.cursor_inicio en la siguiente solicitud.

Idempotencia

Incluye un encabezado Clave-Idempotencia en cualquier solicitud POST para reintentar de forma segura:

curl -X POST https://api.facturacion.srs-ngr.com/v1/facturas \
  -H "Clave-Idempotencia: pedido_12345" \
  -u sk_test_xxx: \
  -d '{...}'

Misma clave + mismo cuerpo = misma respuesta. Las claves expiran después de 24 horas.