SAT catalogs
The SAT (Mexico's tax authority, Servicio de Administración Tributaria) publishes standard catalogs for e-invoicing in Mexico. You must use their keys and descriptions when you issue a CFDI (Mexico's electronic invoice).
SAT catalogs and their Fiscalapi equivalents
The SAT catalogs in the API have exactly the same records as the official catalogs. For example, SatPaymentForms contains the same records as c_FormaPago. The tables below show the name of each catalog in the SAT and in the API.
Invoicing catalogs
| SAT catalog | API catalog | Description |
|---|---|---|
| c_FormaPago | SatPaymentForms | Forms of payment (how the customer paid: cash, bank transfer, card; the FormaPago key) accepted on the invoice |
| c_Moneda | SatCurrencies | Currencies allowed on the invoice |
| c_TipoDeComprobante | SatInvoiceTypes | The invoice's CFDI type (the TipoDeComprobante key: I income, the regular sales invoice; E credit note; T transfer, moves goods without a sale; N payroll; P payment) |
| c_Exportacion | SatExportCodes | Export operations of the invoice |
| c_MetodoPago | SatPaymentMethods | Payment methods (whether the CFDI is paid in full when issued, PUE, or later or in installments, PPD; not how the customer pays) of the invoice |
| c_Periodicidad | SatPeriodicities | Frequency of the global invoice (factura global, one CFDI that groups a period's sales to the general public) |
| c_Meses | SatMonths | Periods the invoice covers |
| c_TipoRelacion | SatRelationshipTypes | Relationship types between invoices |
| c_RegimenFiscal | SatTaxRegimes | Tax regimes (régimen fiscal, the SAT category a taxpayer is registered under, such as 601 or 626) of the issuer or the recipient |
| c_UsoCFDI | SatCfdiUses | CFDI uses (how the recipient will use the CFDI for tax purposes) |
| c_ClaveProdServ | SatProductCodes | SAT product or service keys |
| c_ClaveUnidad | SatUnitMeasurements | Units of measure of the CFDI products |
| c_ObjetoImp | SatTaxObjects | Tax object (whether an item is subject to tax, ObjetoImp) of the CFDI products |
| c_Impuesto | SatTaxes | Taxes that apply to the invoice |
| c_TipoFactor | SatTaxTypes | Factor types of the CFDI products' taxes |
| c_MotivosCancelacion | SatMotivosCancelacion | Cancellation reasons (one of the SAT keys 01 to 04) for invoices |
| c_Pais | SatCountries | Countries according to the ISO 3166-1 standard |
| c_Estado | SatStates | Mexican states, US states, and Canadian provinces |
Payroll catalogs
| SAT catalog | API catalog | Description |
|---|---|---|
| c_Banco | SatBanks | Banks for payroll transfers |
| c_OrigenRecurso | SatFundSources | Source of funds in the payroll of SNCF member entities (SNCF: Sistema Nacional de Coordinación Fiscal, the system that coordinates federal and state taxes in Mexico; a member government entity adds EntidadSNCF to its payroll CFDIs) |
| c_PeriodicidadPago | SatPaymentPeriodicities | Payroll pay periods |
| c_TipoContrato | SatContractTypes | Types of contract between the employee and the employer |
| c_TipoDeduccion | SatDeductionTypes | Payroll deduction types |
| c_TipoHoras | SatOvertimeTypes | Types of overtime an employee works |
| c_TipoIncapacidad | SatDisabilityTypes | Types of work incapacity of an employee |
| c_TipoJornada | SatWorkdayTypes | Types of workday of an employee |
| c_TipoNomina | SatPayrollTypes | Payroll types |
| c_TipoOtroPago | SatOtherPaymentTypes | Types of other payments an employee receives |
| c_TipoPercepcion | SatEarningTypes | Types of earnings (percepciones: salary, overtime, bonuses, and other pay) an employee receives |
| c_TipoRegimen | SatTaxRegimeTypes | Types of hiring regime of the employee |
| c_RiesgoPuesto | SatJobRisks | The employee's occupational risk class |
| c_Estado | SatPayrollStates | Mexican states where the workplace can be located |
| c_Sindicalizado | SatUnionizedStatuses | Indicates whether the worker belongs to a union |
Fiscalapi internal catalogs
| API catalog | Description |
|---|---|
| ProductTypes | Product types in the UNSPSC classification (segment level) |
| ProductDivisions | Product divisions in the UNSPSC classification (division level) |
| ProductGroups | Product groups in the UNSPSC classification (group level) |
| ProductClasses | Product classes in the UNSPSC classification (class level) |
| UserTypes | Types of people (person: any individual or legal entity registered in your tenant) in the system |
| ReportRuleTypes | Types of report rules (the logo, colors, and templates applied to an issuer's invoice PDFs) |
| Taxes | Applicable taxes: ISR (Mexico's income tax, Impuesto Sobre la Renta), IVA (Mexico's value-added tax, VAT), and IEPS (Mexico's excise tax on specific goods and services, Impuesto Especial sobre Producción y Servicios) |
| TaxFlags | Tax flag: R, withholding (retención), or T, transferred tax (traslado, a tax the issuer charges the recipient) |
| TaxTypes | Tax factor types: Tasa (rate), Cuota (fixed amount), or Exento (exempt) |
| TaxRules | Tax calculation rules by product type, division, group, or class |
| PersonTypes | Person types: individual (persona física) or legal entity (persona moral) |
| InvoiceStatuses | Invoice statuses in the CFDI lifecycle |
| SatValidationTypes | Types of SAT validation you can run on a CFDI |
SatValidationTypes returns all validation types, including inactive ones, because it's a
generic catalog. To get only the types you can request, use
List validation types. The possible statuses of each type
aren't a catalog: look them up with List a type's statuses.
Carta Porte 3.1 catalogs
| SAT catalog | API catalog | Description |
|---|---|---|
| c_CveTransporte | SatCveTransporte | Transportation mode key: Autotransporte (01, road), Marítimo (02, sea), Aéreo (03, air), Ferroviario (04, rail) |
| c_TipoEstacion | SatTipoEstacion | Station type: Origen Nacional (01, domestic origin), Intermedia (02, intermediate), Destino Nacional (03, domestic destination) |
| c_Estaciones | SatEstaciones | Origin, intermediate, and destination stations and terminals for each transportation type |
| c_TipoPermiso | SatTipoPermiso | Permit types that the SCT (Secretaría de Comunicaciones y Transportes, Mexico's transportation ministry) grants for freight and passenger transportation |
| c_ClaveUnidadPeso | SatClaveUnidadPeso | Weight unit keys: Kilogramo (KGM, kilogram), Tonelada (TNE, ton), Libra (LBR, pound), among others |
| c_MotivoTraslado | SatMotivoTraslado | Reason for moving the goods covered by the CFDI |
| c_TipoMateria | SatTipoMateria | Type of material or goods transported |
| c_SectorCOFEPRIS | SatSectorCOFEPRIS | COFEPRIS (Comisión Federal para la Protección contra Riesgos Sanitarios, Mexico's health regulator) sector: Medicamentos (01, medicines), Precursores (02, precursors), Psicotrópicos (03, psychotropics), Tóxicas (04, toxic substances), Plaguicidas (05, pesticides) |
| c_FormaFarmaceutica | SatFormaFarmaceutica | Pharmaceutical form of the product when the COFEPRIS sector is Medicamentos (medicines) |
| c_CondicionesEspeciales | SatCondicionesEspeciales | Special transportation conditions for goods regulated by COFEPRIS |
| c_RegistroISTMO | SatRegistroISTMO | Registration in the Interoceanic Corridor of the Isthmus of Tehuantepec |
| c_ClaveTipoCarga | SatClaveTipoCarga | Classification of the type of cargo transported |
| c_Colonia | SatColonia | Neighborhoods of the origin and destination locations |
| c_Localidad | SatLocalidad | Localities of the origin and destination locations |
| c_Municipio | SatMunicipio | Municipalities of the origin and destination locations |
| c_MaterialPeligroso | SatMaterialPeligroso | Hazardous materials according to the NOM (Norma Oficial Mexicana, a Mexican official standard): explosives, ammunition, chemical substances |
| c_TipoEmbalaje | SatTipoEmbalaje | Packaging type for transporting hazardous materials |
| c_ConfigAutotransporte | SatConfigAutotransporte | Vehicle configuration for road transportation (vehicle and trailer type) |
| c_SubTipoRem | SatSubTipoRem | Trailer or semitrailer subtype for road transportation |
| c_ParteTransporte | SatParteTransporte | Transportation parts or segments |
| c_FiguraTransporte | SatFiguraTransporte | Parties involved in the transportation: Operador (01, operator), Propietario (owner), Arrendatario (lessee), Notificado (notified party) |
| c_ConfigMaritima | SatConfigMaritima | Maritime transportation configuration |
| c_ContenedorMaritimo | SatContenedorMaritimo | Maritime container types |
| c_NumAutorizacionNaviero | SatNumAutorizacionNaviero | Authorization number of the consignee shipping agent |
| c_TipoDeServicio | SatTipoDeServicio | Rail service type |
| c_CodigoTransporteAereo | SatCodigoTransporteAereo | Airline codes for air cargo transportation |
| c_DerechosDePaso | SatDerechosDePaso | Trackage rights (tolls) on rail routes |
| c_TipoCarro | SatTipoCarro | Rail car type |
| c_Contenedor | SatContenedor | Rail container specifications |
| c_TipoDeTrafico | SatTipoDeTrafico | Rail traffic type |
| c_RegimenAduanero | SatRegimenAduanero | Customs regime: Importación Definitiva (IMD, definitive import), Exportación Definitiva (EXD, definitive export), Temporal (ITR, temporary), Depósito Fiscal (DFI, bonded warehouse), Tránsito (TRA, transit) |
| c_DocumentoAduanero | SatDocumentoAduanero | Customs document type |
| c_FlagTipoUbicacion | SatFlagTipoUbicacion | Location type: Origen (origin) or Destino (destination) |
| c_FlagNavegacionTrafico | SatFlagNavegacionTrafico | Maritime navigation and traffic indicator |
| c_FlagMaterialPeligroso | SatFlagMaterialPeligroso | Hazardous material indicator: Sí (yes) or No |
| c_FlagLogisticaInversaRecoleccionDevolucion | SatFlagLogisticaInversaRecoleccionDevolucion | Reverse logistics indicator for pickup or return |
| c_FlagTranspInternac | SatFlagTranspInternac | International transportation indicator: Sí (yes) or No |
| c_FlagEntradaSalidaMerc | SatFlagEntradaSalidaMerc | Goods entry or exit indicator |
| c_FlagRegistroISTMO | SatFlagRegistroISTMO | Indicator of registration in the Isthmus of Tehuantepec Corridor |
Comercio Exterior 2.0 catalogs
| SAT catalog | API catalog | Description |
|---|---|---|
| c_ClavePedimento | SatClavePedimento | Key of the pedimento (the Mexican customs declaration for imports and exports) |
| c_FraccionArancelaria | SatFraccionArancelaria | Fracción arancelaria (Mexico's 8-digit tariff code: the 6-digit Harmonized System code plus 2 Mexican digits) of the goods in foreign trade operations |
| c_INCOTERM | SatINCOTERM | International commercial terms (INCOTERM) that define the delivery responsibilities |
| c_TipoOperacion | SatTipoOperacion | Foreign trade operation type |
| c_UnidadAduana | SatUnidadAduana | Unit of measure used in customs documentation |
PagedList model
Because SAT catalogs have many records, Search a catalog returns the paginated PagedList model. Each item on the page is a CatalogDto, which represents one record of the catalog.
Properties
- Name
items- Type
- array of objects (CatalogDto)?
- Description
The items on the current page.
- Name
pageNumber- Type
- integer | number?
- Description
The current page.
- Name
totalPages- Type
- integer | number?
- Description
The total number of pages.
- Name
totalCount- Type
- integer | number?
- Description
The total number of items.
- Name
hasPreviousPage- Type
- boolean?
- Description
Whether there's a previous page.
- Name
hasNextPage- Type
- boolean?
- Description
Whether there's a next page.
List catalogs
This endpoint returns the names of the available catalogs, without pagination. Use these names to get or search the records of a catalog. Write them exactly as they appear, because they're case-sensitive: a name that isn't on the list returns 404 on the other catalog endpoints.
Request
curl --location 'https://test.fiscalapi.com/api/v4/catalogs' \
--header 'X-TENANT-KEY: <tenant>' \
--header 'X-TIME-ZONE: America/Mexico_City' \
--header 'X-API-KEY: <api-key>' \
--data ''
Response
{
"data": [
"SatCfdiUses",
"SatCountries",
"SatCurrencies",
"SatExportCodes",
"SatInvoiceTypes",
"SatMonths",
"SatTaxObjects",
"SatPaymentForms",
"SatPaymentMethods",
"SatPeriodicities",
"SatProductCodes",
"SatRelationshipTypes",
"SatTaxes",
"SatStates",
"SatTaxRegimes",
"SatTaxTypes",
"SatUnitMeasurements",
"ProductTypes",
"ProductDivisions",
"ProductGroups",
"ProductClasses",
"UserTypes",
"ReportRuleTypes",
"Taxes",
"TaxFlags",
"TaxTypes",
"TaxRules",
"PersonTypes",
"InvoiceStatuses",
"SatBanks",
"SatFundSources",
"SatPaymentPeriodicities",
"SatContractTypes",
"SatDeductionTypes",
"SatOvertimeTypes",
"SatDisabilityTypes",
"SatWorkdayTypes",
"SatPayrollTypes",
"SatOtherPaymentTypes",
"SatEarningTypes",
"SatTaxRegimeTypes",
"SatJobRisks",
"SatPayrollStates",
"SatUnionizedStatuses",
"SatRegimenAduanero",
"SatCveTransporte",
"SatTipoEstacion",
"SatEstaciones",
"SatClaveUnidadPeso",
"SatMaterialPeligroso",
"SatTipoEmbalaje",
"SatTipoPermiso",
"SatColonia",
"SatLocalidad",
"SatMunicipio",
"SatSectorCOFEPRIS",
"SatFormaFarmaceutica",
"SatCondicionesEspeciales",
"SatTipoMateria",
"SatDocumentoAduanero",
"SatParteTransporte",
"SatFiguraTransporte",
"SatConfigAutotransporte",
"SatSubTipoRem",
"SatRegistroISTMO",
"SatConfigMaritima",
"SatClaveTipoCarga",
"SatContenedorMaritimo",
"SatNumAutorizacionNaviero",
"SatCodigoTransporteAereo",
"SatTipoDeServicio",
"SatDerechosDePaso",
"SatTipoCarro",
"SatContenedor",
"SatTipoDeTrafico",
"SatFlagTipoUbicacion",
"SatFlagNavegacionTrafico",
"SatFlagMaterialPeligroso",
"SatFlagLogisticaInversaRecoleccionDevolucion",
"SatFlagTranspInternac",
"SatFlagEntradaSalidaMerc",
"SatFlagRegistroISTMO",
"SatMotivosCancelacion",
"SatClavePedimento",
"SatFraccionArancelaria",
"SatINCOTERM",
"SatMotivoTraslado",
"SatTipoOperacion",
"SatUnidadAduana"
],
"succeeded": true,
"message": "",
"details": "",
"httpStatusCode": 200
}
Get a record by ID
This endpoint returns a record from a catalog by the catalog name and the record ID, which is the record's key in the catalog. The catalog name is case-sensitive.
Errors
The messages arrive in details. In them, <recordId> is the record's key and <catalogName> is the catalog name.
| Status | When it happens | Message |
|---|---|---|
| 404 | The record key doesn't exist in the catalog. | No such resource for the given Id: <recordId> |
| 404 | The catalog name doesn't exist. | No existe el catálogo '<catalogName>'. |
Request
curl --location 'https://test.fiscalapi.com/api/v4/catalogs/SatPaymentForms/key/03' \
--header 'X-TENANT-KEY: <tenant-key>' \
--header 'X-TIME-ZONE: America/Mexico_City' \
--header 'X-API-KEY: <api-key>' \
--data ''
Response
{
"data": {
"id": "03",
"description": "Transferencia electrónica de fondos",
"createdAt": "2024-08-10T15:46:30.3730000",
"updatedAt": null
},
"succeeded": true,
"message": "",
"details": "",
"httpStatusCode": 200
}
Search a catalog
This endpoint searches for records in a catalog by the catalog name and a search term. The response is a paginated list.
Query parameters
- Name
pageNumber- Type
- integer | number
- required
- Description
The page number you want to retrieve.
Default:1
- Name
pageSize- Type
- integer | number
- required
- Description
The number of records per page, from 1 to 100.
Default:50
Errors
The message arrives in details. In it, <catalogName> is the catalog name.
| Status | When it happens | Message |
|---|---|---|
| 404 | The catalog name doesn't exist. | No existe el catálogo '<catalogName>'. |
Request
curl --location 'https://test.fiscalapi.com/api/v4/catalogs/SatPaymentForms/Tarjeta?pageNumber=1&pageSize=100' \
--header 'X-TENANT-KEY: <tenant-key>' \
--header 'X-TIME-ZONE: America/Mexico_City' \
--header 'X-API-KEY: <api-key>' \
--data ''
Response
{
"data": {
"items": [
{
"id": "04",
"description": "Tarjeta de crédito",
"createdAt": "0001-01-01T00:00:00.0000000",
"updatedAt": null
},
{
"id": "28",
"description": "Tarjeta de débito",
"createdAt": "0001-01-01T00:00:00.0000000",
"updatedAt": null
},
{
"id": "29",
"description": "Tarjeta de servicios",
"createdAt": "0001-01-01T00:00:00.0000000",
"updatedAt": null
}
],
"pageNumber": 1,
"totalPages": 1,
"totalCount": 3,
"hasPreviousPage": false,
"hasNextPage": false
},
"succeeded": true,
"message": "",
"details": "",
"httpStatusCode": 200
}