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 admite cada uso: es lo que evita el rechazo más común.
- c_RegimenFiscal
- Los que este producto sabe emitir.
- c_ObjetoImp
- Los cuatro que sabemos desglosar. Los otros cuatro se rechazan aquí en vez de fingir que se entienden.
- c_TipoDeComprobante
- Ingreso, egreso y pago. El traslado existe en el catálogo y todavía no tiene camino.
- 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_FormaPago
- Los veintitrés.
- 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.
Tres letras como mínimo: menos empata con media tabla. Devuelve diez por default y cincuenta como máximo, y 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.
Y el que se valida 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_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.