Catálogos SAT
Dos se pueden buscar por la API, porque son los que nadie se sabe de memoria. El resto no tiene endpoint, y esta página contesta lo que de verdad se pregunta un integrador: qué clave se rechaza aquí, sin costar timbre, y cuál llega hasta el SAT antes de rebotar.
Los que validamos antes de llamar al PAC
- c_UsoCFDI
- Completo, y con la matriz de qué régimen y qué tipo de persona admite cada uso. Una combinación que no va contesta validation_failed.
- c_RegimenFiscal
- El del emisor, contra el catálogo. El del receptor sólo tiene que venir; que sea el que el SAT le tiene lo valida el SAT.
- c_ObjetoImp
- Los cuatro que sabemos desglosar. Los otros cuatro se rechazan aquí en vez de fingir que se entienden.
- c_TipoDeComprobante
- Por la API, ingreso (I) y egreso (E).
- c_Exportacion
- Los cuatro.
- c_TipoRelacion
- Los siete.
- c_MotivoCancelacion
- Los cuatro, con la regla de que el 01 exige folio de sustitución.
- c_Periodicidad y c_Meses
- Para la factura global, con la regla de que un bimestre pide un mes del 13 al 18.
- c_Moneda
- Un subconjunto: las de dos decimales, que es lo que las columnas de importes pueden expresar sin mentir en el último dígito.
- c_Pais
- Un subconjunto, para la residencia fiscal de un receptor extranjero.
Los dos que se pueden buscar
Son los que nadie se sabe de memoria, y equivocarlos es un rechazo. La búsqueda va por prefijo de clave y por parecido
en la descripción, así que ?q=contabilidad
encuentra 84111506
sin que nadie tenga que saberlo.
- c_ClaveProdServ
- 52,513 claves. La que va en cada concepto.
- c_ClaveUnidad
- 2,418 unidades de medida, con su símbolo.
El texto va en q, con tres letras como mínimo: con menos contestamos
data
vacío, no un error. Devuelve diez por default; con limit
pides hasta cincuenta. No hay forma de pedir el catálogo entero — para eso está el
portal del SAT, que es de donde nosotros lo sacamos.
Una clave que el SAT dio de baja no aparece en los resultados, porque la rechazaría. Sí se puede pedir con ?retired=1, que es lo que hace falta para leer una factura de hace tres años: viene con "retired": true.
Cada resultado trae key
y label; las unidades traen
además symbol
cuando tienen. Se piden con la misma llave que todo lo demás.
Y los que se validan del otro lado
Que un código postal exista lo valida el SAT: una clave inventada vuelve como invalid_issue_postal_code. De nuestro lado lo usamos para otra cosa, que es la hora del
comprobante.
- c_FormaPago
- 22 claves. Sólo revisamos que sean dos dígitos; una clave que no existe vuelve como invalid_payment_form.
- c_CodigoPostal
- 95,747 códigos. Lo usamos para el huso horario del comprobante; que exista lo valida el SAT.
Las dos claves que más se teclean, 84111506
para servicios contables y E48
para "unidad de servicio", cubren la mayoría de lo que factura un despacho. Guardar
un producto
es la forma de no volver a
escribirlas.
El código postal y la hora
El Fecha
de un CFDI es hora local sin huso, y el SAT la lee contra la zona del lugar de
expedición. México tiene cuatro zonas, así que el código postal del emisor no sólo lo ubica: decide qué hora lleva
escrita el comprobante, y con ella si cae dentro de las 72 horas.
La sacamos del catálogo, que trae el huso de cada código. Es la fuente exacta: es contra ésa que el SAT valida. Guardamos el identificador IANA y no el offset, porque la zona de un código postal no cambia y sus reglas sí — y de ésas se encarga tzdata.