Facturación
El recurso de facturación es uno de los pilares centrales de FiscalAPI. Este recurso permite la creación, validación, timbrado, consulta, descarga y generación de PDFs de Comprobantes Fiscales Digitales por Internet (CFDI 4.0), asegurando el cumplimiento con la normativa vigente del SAT. Con este recurso, puedes gestionar todo el ciclo de vida de tus facturas electrónicas, desde su emisión hasta su cancelación.
Cómo funciona
Este recurso ha sido diseñado para ser simple y eficiente. El motor de facturación de FiscalAPI se encarga de todo el proceso: generar el XML, calcularlo, validarlo, sellarlo y timbrarlo. Una vez timbrado, FiscalAPI retorna un objeto invoice
que representa la factura timbrada. Este objeto contiene toda la información relevante de la factura, incluyendo los detalles del timbrado.
Le recomendamos encarecidamente prestar especial atención al modelo de factura, que describe la estructura de un CFDI 4.0 en FiscalAPI. Comprender los objetos que componen el objeto invoice
le permitirá aprovechar al máximo este recurso.
El modelo de factura
El modelo de factura se refiere a los modelos (DTO) utilizados para crear y recuperar facturas. El SAT define cinco tipos de facturas en México: Ingreso
(I), Egreso
(E), Traslado
(T), Nómina
(N) y Pago
(P). Cada uno de estos tipos está compuesto por diferentes elementos, como el emisor
, el receptor
, los conceptos
, los impuestos
, entre otros.
Aunque en FiscalAPI no es necesario, siempre es útil consultar la documentación oficial del SAT para familiarizarse con los conceptos básicos de la facturación electrónica en México.
FiscalAPI utiliza modelos equivalentes, optimizados y estandarizados con nomenclaturas claras. Por ejemplo:
- Los modelos de solicitud incluyen el sufijo
InputModel
. - Los modelos de respuesta incluyen el sufijo
OutputModel
.
Este enfoque contribuye a la claridad y simplicidad durante el proceso de integración.
Modelos de entrada
Modelo | Descripción | Tipo Factura | Detalles |
---|---|---|---|
incomeInvoiceInputModel | Modelo para crear una factura de ingreso. | I | detalles |
invoiceGlobalInformationInputModel | Modelo para representar la información global en la factura global de ingreso. | I | detalles |
creditNoteInvoiceInputModel | Modelo para crear una factura de egreso (nota de crédito). | E | detalles |
paymentInvoiceInputModel | Modelo para crear una factura de pago (complemento de pago). | P | detalles |
paidPayment | Modelo para representar el pago en la factura de pago (complemento de pago). | P | detalles |
paidInvoice | Modelo para representar cada factura pagada en la factura de pago (complemento de pago). | P | detalles |
paidInvoiceTax | Modelo para representar cada impuesto de cada factura pagada en la factura de pago. | P | detalles |
payrollInvoiceInputModel | Modelo para crear una factura de nómina. | N | detalles |
transportationInvoiceInputModel | Modelo para crear una factura de transporte. | T | detalles |
invoiceItemInputModel | Modelo para representar un concepto de la factura. | I, E, P, N, T | detalles |
invoiceItemTaxInputModel | Modelo para representar un impuesto de un concepto de la factura. | I, E, P, N, T | detalles |
invoiceRelatedInvoiceInputModel | Modelo para representar los CFDIs relacionados. | I, E, P, N, T | detalles |
invoiceIssuerInputModel | Modelo para representar el emisor de la factura. | I, E, P, N, T | detalles |
invoiceRecipientInputModel | Modelo para representar el receptor de la factura. | I, E, P, N, T | detalles |
credentialInputModel | Modelo para representar los sellos del emisor (archivos CSD). | I, E, P, N, T | detalles |
Modelo para crear una factura de ingreso
El modelo incomeInvoiceInputModel
se utiliza para crear una factura de ingreso. Este modelo contiene toda la información necesaria para crear una factura de ingreso, incluyendo los conceptos, los impuestos, el emisor, el receptor, etc. Tenga en cuenta que las propiedades con el sufijo Code
deben ser valores válidos según los catálogos del SAT. Puedes consultar los catálogos CFDI 4.0
- Name
versionCode
- Type
- string?
- Description
Código de la versión de la facura.
Default:"4.0"
- Name
series
- Type
- string
- required
- Description
Serie de la factura. Este campo acepta de uno hasta 25 caracteres alfanuméricos.
- Name
date
- Type
- string
- required
- Description
Es la fecha y hora de la factura. Se expresa en la forma
AAAA-MM-DDThh:mm:ss
y debe corresponder con la fecha y hora de la transacción.
- Name
paymentFormCode
- Type
- string enum
- required
- Description
Código de la forma de pago para la factura. Catálogo del SAT
c_FormaPago
- Type
- enum:
- Values
- "01""02""03"
- Name
paymentConditions
- Type
- string?
- Description
Condiciones de pago. Se pueden registrar las condiciones comerciales aplicables para el pago de la factura cuando existan y el tipo de comprobante sea ingreso o egreso.
- Name
currencyCode
- Type
- string
- required
- Description
Código de la moneda para la factura. Se debe registrar la clave de la moneda utilizada en la transacción. Catálogo del SAT
c_Moneda
- Type
- enum:
- Values
- "MXN""USD""EUR"
- Name
typeCode
- Type
- string
- required
- Description
Código de tipo de factura del catálogo del SAT
c_TipoDeComprobante
- Type
- enum:
- Values
- "I""E""T"
- Name
expeditionZipCode
- Type
- string
- required
- Description
Código postal del emisor, debe corresponder con el código postal expresado en su constancia de situación fiscal. Catálogo del SAT
c_CodigoPostal
- Name
paymentMethodCode
- Type
- string
- required
- Description
Código de método para la factura de pago del catálogo del SAT
c_MetodoPago
- Type
- enum:
- Values
- "PUE""PPD"
- Name
exchangeRate
- Type
- number?
- Description
Tipo de cambio FIX conforme a la moneda registrada en la factura. Si la moneda es MXN, el tipo de cambio debe ser 1.
Default:1
- Name
exportCode
- Type
- string
- required
- Description
Código que se identifica si la factura ampara una operación de exportación. Catálogo del SAT
c_Exportacion
- Type
- enum:
- Values
- "01""02""03"
- Name
issuer
- Type
- object (Issuer)
- required
El emisor de la factura
- Name
id
- Type
- string?
- conditional required
- Description
ID del emisor en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
tin
- Type
- string?
- conditional required
- Description
RFC del emisor (Tax Identification Number).
- Name
legalName
- Type
- string?
- conditional required
- Description
Razón social del emisor sin regimen de capital.
- Name
taxRegimeCode
- Type
- string?
- Description
Código del régimen fiscal del emisor. Catálogo
c_RegimenFiscal
.- Type
- enum:
- Values
- "601""603""605"
- Name
taxCredentials
- Type
- array of objects (Credential)?
- conditional required
Sellos del emisor (archivos .cer y .key). Debe envíar exactamente dos objetos
Credential
.- Name
base64File
- Type
- string?
- conditional required
- Description
Archivo en formato base64. Lea cómo codificar los sellos en base 64.
- Name
fileType
- Type
- number?
- conditional required
- Description
Tipo de archivo.
- Type
- enum:
- Values
- 01
- Name
password
- Type
- string?
- conditional required
- Description
Contraseña del archivo .key
Debe ser la misma en ambos objetos (.cer y .key)
- Name
recipient
- Type
- object (Recipient)
- required
Receptor de la factura
- Name
id
- Type
- string?
- conditional required
- Description
ID del receptor en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
tin
- Type
- string?
- conditional required
- Description
RFC del receptor (Tax Identification Number).
- Name
legalName
- Type
- string?
- conditional required
- Description
Razón social del receptor sin regimen de capital.
- Name
taxRegimeCode
- Type
- string?
- conditional required
- Description
Código del régimen fiscal del receptor. Catálogo
c_RegimenFiscal
.- Type
- enum:
- Values
- "601""603""605"
- Name
cfdiUseCode
- Type
- string?
- conditional required
- Description
Código del uso CFDI. Catálogo
c_UsoCFDI
.- Type
- enum:
- Values
- "G01""G02""G03"
- Name
email
- Type
- string?
- Description
Correo electrónico del receptor. Para enviar la factura manualmente desde el dasborard.
- Name
items
- Type
- array of objects (InvoiceItem)
- required
Conceptos de la factura (productos o servicios)
- Name
id
- Type
- string?
- conditional required
- Description
ID del producto en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
itemCode
- Type
- string?
- conditional required
- Description
Código del producto o servicio del catálogo
c_ClaveProdServ
- Type
- enum:
- Values
- "01010101""01010108""01010109"
- Name
quantity
- Type
- number | decimal
- required
- Description
Cantidad del producto o servicio.
- Name
unitOfMeasurementCode
- Type
- string?
- conditional required
- Description
Código de la unidad de medida del producto o servicio. Catálogo
c_ClaveUnidad
- Type
- enum:
- Values
- "H87""E48""EA"
- Name
description
- Type
- string
- required
- Description
Descripción del producto o servicio.
- Name
unitPrice
- Type
- number | decimal?
- conditional required
- Description
Precio unitario del producto o servicio. (Sin impuestos)
- Name
taxObjectCode
- Type
- string?
- conditional required
- Description
Código de obligaciones de impuesto aplicables al producto o servicio. Catálogo
c_ObjetoImp
- Type
- enum:
- Values
- "01""02""03"
- Name
itemSku
- Type
- string?
- Description
SKU o clave del sistema externo que identifica al producto o servicio.
- Name
itemTaxes
- Type
- array of objects (ItemTax)?
- conditional required
Impuestos aplicables al producto o servicio.
- Name
taxCode
- Type
- string?
- conditional required
- Description
Código del impuesto del catálogo
c_Impuesto
- Name
taxTypeCode
- Type
- string?
- conditional required
- Description
Tipo de factor del catálogo
c_TipoFactor
- Name
taxRate
- Type
- number | decimal?
- conditional required
- Description
Tasa del impuesto.
- Name
taxFlagCode
- Type
- string?
- conditional required
- Description
Código que indica la naturaleza del impuesto.
- Type
- enum:
- Values
- "T""R"
Modelo JSON
{
"versionCode": "4.0",
"series": "F",
"date": "2024-11-12T18:53:57",
"paymentFormCode": "01",
"paymentConditions": "Contado",
"currencyCode": "MXN",
"typeCode": "I",
"expeditionZipCode": "01160",
"paymentMethodCode": "PUE",
"exchangeRate": 1,
"exportCode": "01",
"issuer": {
"tin": "FUNK671228PH6",
"legalName": "KARLA FUENTE NOLASCO",
"taxRegimeCode": "621",
"taxCredentials": [
{
"base64File": "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
"fileType": 0,
"password": "12345678a"
},
{
"base64File": "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
"fileType": 1,
"password": "12345678a"
}
]
},
"recipient": {
"tin": "EKU9003173C9",
"legalName": "ESCUELA KEMPER URGATE",
"zipCode": "42501",
"taxRegimeCode": "601",
"cfdiUseCode": "G01",
"email": "someone@somewhere.com"
},
"items": [
{
"itemCode": "01010101",
"quantity": 2.5,
"unitOfMeasurementCode": "E48",
"unitOfMeasurement": "Unidad de servicio",
"description": "Computer model acme",
"unitPrice": 1250.75,
"taxObjectCode": "02",
"itemSku": "7506022301699",
"itemTaxes": [
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.160000,
"TaxFlagCode": "T"
},
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.106666,
"TaxFlagCode": "R"
}
]
}
]
}
Crear factura
Este endpoint permite crear una factura, formalmente conocida cómo factura de ingreso o CFDI de ingreso.
Modelo de la factura de ingreso
- Name
versionCode
- Type
- string?
- Description
Código de la versión de la facura.
Default:"4.0"
- Name
series
- Type
- string
- required
- Description
Serie de la factura. Este campo acepta de uno hasta 25 caracteres alfanuméricos.
- Name
date
- Type
- string
- required
- Description
Es la fecha y hora de la factura. Se expresa en la forma
AAAA-MM-DDThh:mm:ss
y debe corresponder con la fecha y hora de la transacción.
- Name
paymentFormCode
- Type
- string enum
- required
- Description
Código de la forma de pago para la factura. Catálogo del SAT
c_FormaPago
- Type
- enum:
- Values
- "01""02""03"
- Name
paymentConditions
- Type
- string?
- Description
Condiciones de pago. Se pueden registrar las condiciones comerciales aplicables para el pago de la factura cuando existan y el tipo de comprobante sea ingreso o egreso.
- Name
currencyCode
- Type
- string
- required
- Description
Código de la moneda para la factura. Se debe registrar la clave de la moneda utilizada en la transacción. Catálogo del SAT
c_Moneda
- Type
- enum:
- Values
- "MXN""USD""EUR"
- Name
typeCode
- Type
- string
- required
- Description
Código de tipo de factura del catálogo del SAT
c_TipoDeComprobante
- Type
- enum:
- Values
- "I""E""T"
- Name
expeditionZipCode
- Type
- string
- required
- Description
Código postal del emisor, debe corresponder con el código postal expresado en su constancia de situación fiscal. Catálogo del SAT
c_CodigoPostal
- Name
paymentMethodCode
- Type
- string
- required
- Description
Código de método para la factura de pago del catálogo del SAT
c_MetodoPago
- Type
- enum:
- Values
- "PUE""PPD"
- Name
exchangeRate
- Type
- number?
- Description
Tipo de cambio FIX conforme a la moneda registrada en la factura. Si la moneda es MXN, el tipo de cambio debe ser 1.
Default:1
- Name
exportCode
- Type
- string
- required
- Description
Código que se identifica si la factura ampara una operación de exportación. Catálogo del SAT
c_Exportacion
- Type
- enum:
- Values
- "01""02""03"
- Name
issuer
- Type
- object (Issuer)
- required
El emisor de la factura
- Name
id
- Type
- string?
- conditional required
- Description
ID del emisor en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
tin
- Type
- string?
- conditional required
- Description
RFC del emisor (Tax Identification Number).
- Name
legalName
- Type
- string?
- conditional required
- Description
Razón social del emisor sin regimen de capital.
- Name
taxRegimeCode
- Type
- string?
- Description
Código del régimen fiscal del emisor. Catálogo
c_RegimenFiscal
.- Type
- enum:
- Values
- "601""603""605"
- Name
taxCredentials
- Type
- array of objects (Credential)?
- conditional required
Sellos del emisor (archivos .cer y .key). Debe envíar exactamente dos objetos
Credential
.- Name
base64File
- Type
- string?
- conditional required
- Description
Archivo en formato base64. Lea cómo codificar los sellos en base 64.
- Name
fileType
- Type
- number?
- conditional required
- Description
Tipo de archivo.
- Type
- enum:
- Values
- 01
- Name
password
- Type
- string?
- conditional required
- Description
Contraseña del archivo .key
Debe ser la misma en ambos objetos (.cer y .key)
- Name
recipient
- Type
- object (Recipient)
- required
Receptor de la factura
- Name
id
- Type
- string?
- conditional required
- Description
ID del receptor en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
tin
- Type
- string?
- conditional required
- Description
RFC del receptor (Tax Identification Number).
- Name
legalName
- Type
- string?
- conditional required
- Description
Razón social del receptor sin regimen de capital.
- Name
taxRegimeCode
- Type
- string?
- conditional required
- Description
Código del régimen fiscal del receptor. Catálogo
c_RegimenFiscal
.- Type
- enum:
- Values
- "601""603""605"
- Name
cfdiUseCode
- Type
- string?
- conditional required
- Description
Código del uso CFDI. Catálogo
c_UsoCFDI
.- Type
- enum:
- Values
- "G01""G02""G03"
- Name
email
- Type
- string?
- Description
Correo electrónico del receptor. Para enviar la factura manualmente desde el dasborard.
- Name
items
- Type
- array of objects (InvoiceItem)
- required
Conceptos de la factura (productos o servicios)
- Name
id
- Type
- string?
- conditional required
- Description
ID del producto en fiscalapi.
Este campo es mutuamente excluyente con los demás campos de este objeto. Es decir debe enviar o bien el campo
id
o bien los demás campos del objeto, pero nunca ambos simultáneamente.
- Name
itemCode
- Type
- string?
- conditional required
- Description
Código del producto o servicio del catálogo
c_ClaveProdServ
- Type
- enum:
- Values
- "01010101""01010108""01010109"
- Name
quantity
- Type
- number | decimal
- required
- Description
Cantidad del producto o servicio.
- Name
unitOfMeasurementCode
- Type
- string?
- conditional required
- Description
Código de la unidad de medida del producto o servicio. Catálogo
c_ClaveUnidad
- Type
- enum:
- Values
- "H87""E48""EA"
- Name
description
- Type
- string
- required
- Description
Descripción del producto o servicio.
- Name
unitPrice
- Type
- number | decimal?
- conditional required
- Description
Precio unitario del producto o servicio. (Sin impuestos)
- Name
taxObjectCode
- Type
- string?
- conditional required
- Description
Código de obligaciones de impuesto aplicables al producto o servicio. Catálogo
c_ObjetoImp
- Type
- enum:
- Values
- "01""02""03"
- Name
itemSku
- Type
- string?
- Description
SKU o clave del sistema externo que identifica al producto o servicio.
- Name
itemTaxes
- Type
- array of objects (ItemTax)?
- conditional required
Impuestos aplicables al producto o servicio.
- Name
taxCode
- Type
- string?
- conditional required
- Description
Código del impuesto del catálogo
c_Impuesto
- Name
taxTypeCode
- Type
- string?
- conditional required
- Description
Tipo de factor del catálogo
c_TipoFactor
- Name
taxRate
- Type
- number | decimal?
- conditional required
- Description
Tasa del impuesto.
- Name
taxFlagCode
- Type
- string?
- conditional required
- Description
Código que indica la naturaleza del impuesto.
- Type
- enum:
- Values
- "T""R"
Request
curl --location 'https://test.fiscalapi.com/api/v4/invoices/income' \
--header 'Content-Type: application/json' \
--header 'X-TENANT-KEY: <tenant>' \
--header 'X-API-KEY: <apiKey>' \
--data-raw '{
"versionCode": "4.0",
"series": "F",
"date": "2024-11-19T19:51:18",
"paymentFormCode": "01",
"paymentConditions": "Contado",
"currencyCode": "MXN",
"typeCode": "I",
"expeditionZipCode": "01160",
"paymentMethodCode": "PUE",
"exchangeRate": 1,
"exportCode": "01",
"issuer": {
"tin": "FUNK671228PH6",
"legalName": "KARLA FUENTE NOLASCO",
"taxRegimeCode": "621",
"taxCredentials": [
{
"base64File": "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
"fileType": 0,
"password": "12345678a"
},
{
"base64File": "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
"fileType": 1,
"password": "12345678a"
}
]
},
"recipient": {
"tin": "EKU9003173C9",
"legalName": "ESCUELA KEMPER URGATE",
"zipCode": "42501",
"taxRegimeCode": "601",
"cfdiUseCode": "G01",
"email": "someone@somewhere.com"
},
"items": [
{
"itemCode": "01010101",
"quantity": 1.5,
"unitOfMeasurementCode": "E48",
"unitOfMeasurement": "Unidad de servicio",
"description": "Invoicing software as a service",
"unitPrice": 1225.75,
"taxObjectCode": "02",
"itemSku": "7506022301697",
"discount": 255.85,
"itemTaxes": [
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.160000,
"TaxFlagCode": "T"
}
]
},
{
"itemCode": "01010101",
"quantity": 9,
"unitOfMeasurementCode": "E48",
"unitOfMeasurement": "Unidad de servicio2",
"description": "Software Consultant",
"unitPrice": 635.85,
"taxObjectCode": "02",
"itemSku": "7506022301698",
"discount": 255.85,
"itemTaxes": [
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.160000,
"TaxFlagCode": "T"
}
]
},
{
"itemCode": "01010101",
"quantity": 2.5,
"unitOfMeasurementCode": "E48",
"unitOfMeasurement": "Unidad de servicio3",
"description": "Computer software",
"unitPrice": 1250.75,
"taxObjectCode": "02",
"itemSku": "7506022301699",
"itemTaxes": [
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.160000,
"TaxFlagCode": "T"
},
{
"taxCode": "002",
"taxTypeCode": "Tasa",
"taxRate": 0.106666,
"TaxFlagCode": "R"
}
]
}
]
}'
Response
{
"data": {
"versionCode": "4.0",
"series": "F",
"number": "FUNK671228PH6-10",
"date": "2024-11-19T19:51:18",
"paymentFormCode": "01",
"paymentConditions": "Contado",
"subtotal": 10688.15,
"discount": 511.70,
"currencyCode": "MXN",
"exchangeRate": 1,
"total": 11553.02,
"typeCode": "I",
"exportCode": "01",
"paymentMethodCode": "PUE",
"expeditionZipCode": "01160",
"issuerId": null,
"recipientId": null,
"invoiceIssuer": {
"tin": "FUNK671228PH6",
"legalName": "KARLA FUENTE NOLASCO",
"taxRegimeCode": "621",
"tenantId": "494a5958-0993-4a53-972e-f3b51e16358d",
"id": "490e5b6f-55d2-42e3-9d7b-7d7ca3429d34",
"createdAt": "2024-11-20T02:45:10.1575768Z",
"updatedAt": "2024-11-20T02:45:10.1575769Z"
},
"issuerTin": "FUNK671228PH6",
"issuerLegalName": "KARLA FUENTE NOLASCO",
"invoiceRecipient": {
"tin": "EKU9003173C9",
"legalName": "ESCUELA KEMPER URGATE",
"zipCode": "42501",
"taxRegimeCode": "601",
"cfdiUseCode": "G01",
"email": "someone@somewhere.com",
"id": "a0987655-17b3-48a0-8e96-f62c580186e9",
"createdAt": "2024-11-20T02:45:10.1575843Z",
"updatedAt": "2024-11-20T02:45:10.1575845Z"
},
"recipientTin": "EKU9003173C9",
"recipientLegalName": "ESCUELA KEMPER URGATE",
"invoiceResponses": [
{
"invoiceId": "b1da2d54-8a56-4fbc-b5ac-21a12745bd0a",
"base64TaOriginalString": "fHwxLjF8NDIzNDY2NGMtY2Y5ZC00ZDM5LTlkNGUtY2I2NDQ0NjAyNmRmfDIwMjQtMTEtMTlUMjA6NDU6MDl8U1BSMTkwNjEzSTUyfENzbGliZi9RUkgxWkVRdTJ6MTZtYklmZWMzbVh4c1Y0MjRhbVp4UHpaejVuaktaMGsyeVRwUkFMUWdWeU5sdGsxK3hwRnBRUjhqZnZ6Ty9EMUE2UTNKWnFmVXBLb1E5Z09HbGdGTmlIWTJTZ2p2L3orbFdiVlEvbmRNaEVnRko5enlGUGFoM3d4aU9kOVV6aWk3aWh3ZldvUXVabENTdXJLbWQxakdmZlBQRmpXV1JaMW9hV1U2VElsa0pSVTN2N2JIRXM5cGNQTllac21Gb1hIT3NHTnBCbGgyV3F0MlBWeVRLVHk5em1pSlMvbWcrRlRtZ21NY3pqMkpZT2VZYVU1SlJkRnpPdE92a3I4OXc0OVV1c1g1MVQ0aXFiak9keHE4Wk9mdERyVG8xazlGVS9aVXVKeDl5akU1cXdicURMY2lPWlVyS041TjZBMTJndDFteGtVQT09fDMwMDAxMDAwMDAwNTAwMDAzNDU2fHw=",
"taCertificateNumber": "30001000000500003456",
"invoiceCertificateNumber": "30001000000500003446",
"invoiceUuid": "4234664c-cf9d-4d39-9d4e-cb64446026df",
"base64TaSignatureValue": "Ldp0hUXLcW6YnyTTq9M5FRecsXEA4FPteozoqiiaBjgBPB9qQ9B44LQACOTg4sGK3Ks7nzAJDVAqyeJnm18K7Szuj3gRzKG+E6WcrSO1hUYc4eUzpKULTk13ekAJIXobi//QlHAGHbDqT0LxX/ZmW1+8ln0zguNKpCClADZI8tUX6rlX6rlbR62ZbNZ3/CSE+gWd/Fl9z8TgEBPueDlJ8pM2n/xOHzAuT9tDytMdjJWMFq+86cHqmDeXXYAVecz0ZuBeU8fnfIDivtORL0tlXn6Wo4OXwf++whlQ5q3HE+40UjHX6y9VkFDnsoke9zo8NoyQe20rNVZrEjJpI0ziJw==",
"base64InvoiceSignatureValue": "Cslibf/QRH1ZEQu2z16mbIfec3mXxsV424amZxPzZz5njKZ0k2yTpRALQgVyNltk1+xpFpQR8jfvzO/D1A6Q3JZqfUpKoQ9gOGlgFNiHY2Sgjv/z+lWbVQ/ndMhEgFJ9zyFPah3wxiOd9Uzii7ihwfWoQuZlCSurKmd1jGffPPFjWWRZ1oaWU6TIlkJRU3v7bHEs9pcPNYZsmFoXHOsGNpBlh2Wqt2PVyTKTy9zmiJS/mg+FTmgmMczj2JYOeYaU5JRdFzOtOvkr89w49UusX51T4iqbjOdxq8ZOftDrTo1k9FU/ZUuJx9yjE5qwbqDLciOZUrKN5N6A12gt1mxkUA==",
"invoiceSignatureDate": "2024-11-19T20:45:09Z",
"base64InvoiceQrCode": "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",
"base64Invoice": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48Y2ZkaTpDb21wcm9iYW50ZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc2F0LmdvYi5teC9jZmQvNCBodHRwOi8vd3d3LnNhdC5nb2IubXgvc2l0aW9faW50ZXJuZXQvY2ZkLzQvY2ZkdjQwLnhzZCIgTHVnYXJFeHBlZGljaW9uPSIwMTE2MCIgTWV0b2RvUGFnbz0iUFVFIiBFeHBvcnRhY2lvbj0iMDEiIFRpcG9EZUNvbXByb2JhbnRlPSJJIiBUb3RhbD0iMTE1NTMuMDIiIFRpcG9DYW1iaW89IjEiIERlc2N1ZW50bz0iNTExLjcwIiBTdWJUb3RhbD0iMTA2ODguMTUiIENvbmRpY2lvbmVzRGVQYWdvPSJDb250YWRvIiBDZXJ0aWZpY2Fkbz0iTUlJRmdEQ0NBMmlnQXdJQkFnSVVNekF3TURFd01EQXdNREExTURBd01ETTBORFl3RFFZSktvWklodmNOQVFFTEJRQXdnZ0VyTVE4d0RRWURWUVFEREFaQlF5QlZRVlF4TGpBc0JnTlZCQW9NSlZORlVsWkpRMGxQSUVSRklFRkVUVWxPU1ZOVVVrRkRTVTlPSUZSU1NVSlZWRUZTU1VFeEdqQVlCZ05WQkFzTUVWTkJWQzFKUlZNZ1FYVjBhRzl5YVhSNU1TZ3dKZ1lKS29aSWh2Y05BUWtCRmhsdmMyTmhjaTV0WVhKMGFXNWxla0J6WVhRdVoyOWlMbTE0TVIwd0d3WURWUVFKREJRemNtRWdZMlZ5Y21Ga1lTQmtaU0JqWVd4cGVqRU9NQXdHQTFVRUVRd0ZNRFl6TnpBeEN6QUpCZ05WQkFZVEFrMVlNUmt3RndZRFZRUUlEQkJEU1ZWRVFVUWdSRVVnVFVWWVNVTlBNUkV3RHdZRFZRUUhEQWhEVDFsUFFVTkJUakVSTUE4R0ExVUVMUk1JTWk0MUxqUXVORFV4SlRBakJna3Foa2lHOXcwQkNRSVRGbkpsYzNCdmJuTmhZbXhsT2lCQlEwUk5RUzFUUVZRd0hoY05Nak13TlRFNE1UUXpOVE0zV2hjTk1qY3dOVEU0TVRRek5UTTNXakNCcHpFZE1Cc0dBMVVFQXhNVVMwRlNURUVnUmxWRlRsUkZJRTVQVEVGVFEwOHhIVEFiQmdOVkJDa1RGRXRCVWt4QklFWlZSVTVVUlNCT1QweEJVME5QTVIwd0d3WURWUVFLRXhSTFFWSk1RU0JHVlVWT1ZFVWdUazlNUVZORFR6RVdNQlFHQTFVRUxSTU5SbFZPU3pZM01USXlPRkJJTmpFYk1Ca0dBMVVFQlJNU1JsVk9TelkzTVRJeU9FMURURTVNVWpBMU1STXdFUVlEVlFRTEV3cFRkV04xY25OaGJDQXhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQWhOWGJUU3FHWDYrLzNVcnBlbXl5NXZWRzJJZFAydjd2MDAxK2M0Qm9NeEVERkRRMzJjT0ZkRGlSeHkwRnE5YVIrT2pyb2ZxOFZlZnR2TjU4Nml5QTFBNmEwUW5BNjhpN0puUUtJNHVKeSt1MHFpaXh1SHU2dTNiM0JoU3BvYVZIY1V0cUZXTExsenIweUJ4ZlZMT3FWbmEvMS90SGJRSmc5aHg1N21wOTdQMEptWE8xV2VJcWkrWnFvYi9tVlpoMmxzUEdkSjhpcWdqWUZhRm45UVZPUTFQcTc0bzFQVHF3ZnpxZ0pTZlYwek9PbEVTRFBXZ2dhREFZRTRWTnlUQmlzT1VqbE5kMHg3cHBjVHhTaTN5ZW5ySkhxa3EvcHFKc1JMS2Y2VkovczlwNmJzZDJiajA3aFNEcGpsREMybEIyNWVFZmtFa2VNa1hvRTdFclhRNVFDd0lEQVFBQm94MHdHekFNQmdOVkhSTUJBZjhFQWpBQU1Bc0dBMVVkRHdRRUF3SUd3REFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBSHdZcGdiQ2xIVUxYWWhLNEdOVGdvbnZYaDgxb3FmWHdDU1dBeURQaVRZRkRXVmZXTTlDNEFweE1MeWMwWHZKdGU3NVJsYStiUEMwOG9ZTjNPbGhiYnZQM3R3QkwvdzlTc2Z4dmticEZuMlpmR1NUWFpoeWlxNHZqbVFIVzFwbkZ2R2Vsd2dVNHYzZWVSRS9Nam9DbkU3TS9RNXRocHVvZzZXR2Y3Q2JLRVJuV1puOFFzVWFKc1pTRWtnNkJ2MmptNjl5ZTU3YWI1cnJPVWFlTWxzdFRmZGxhSEFFa1VnTFgvTlhxN1JiR3d2ODJoa0hZNWIydlljWGVoMzR0VU1CTDZvczNPZFJsb29OOVpRR2tWSUlTdnhWWnBTSGtZQzIwREZOaDFCYjBvdmpmdWpsVGNrYTgxR25iVWhGR1p0UnVvVlExUlZwTU84eHR4M1lLQkxwNGRvM2hQbW5SQ1Y1aENtNDNPSWpZeDlPdjJkcUlDVjNBYU5YU0xWMWRXMzlCYWsvUkJpSURHSHpPSVcyK1ZNUGp2dnlwQmptUHYvdG1icU5IV1BTQVdPeFR5TXg2RTFnRkNadmkrNUYrQmdrZEMzTG03VTBCVTBOZnZzWGFqWmQ4c1huSWxsdkVNcmlrQ0xvSS95dXJ2ZXhORGNGMVJXL0ZoTXNvdWEwZWVyd2N6Y05tNjZwR2pIbTA1cDlEUjZsRmVKWnJ0cWVxWnVvamR4Qld5NHZINmdoeUphdXBlcmdvWCtubWRHM0pZZVJ0dENGRi9JVEk2OFRlQ0VTNVYzWTBDM3BzWUFnMVh4Y0dSTEdkNGNoUG8vNHh3aUxraWpXdGd0MC90bzVsakdCd2ZLN3I2MlBIWmZMMURwK2k3VjN3N2htT2xoYlh6UCt6aE1abjFHQ2s3S1k9IiBOb0NlcnRpZmljYWRvPSIzMDAwMTAwMDAwMDUwMDAwMzQ0NiIgRm9ybWFQYWdvPSIwMSIgU2VsbG89IkNzbGliZi9RUkgxWkVRdTJ6MTZtYklmZWMzbVh4c1Y0MjRhbVp4UHpaejVuaktaMGsyeVRwUkFMUWdWeU5sdGsxK3hwRnBRUjhqZnZ6Ty9EMUE2UTNKWnFmVXBLb1E5Z09HbGdGTmlIWTJTZ2p2L3orbFdiVlEvbmRNaEVnRko5enlGUGFoM3d4aU9kOVV6aWk3aWh3ZldvUXVabENTdXJLbWQxakdmZlBQRmpXV1JaMW9hV1U2VElsa0pSVTN2N2JIRXM5cGNQTllac21Gb1hIT3NHTnBCbGgyV3F0MlBWeVRLVHk5em1pSlMvbWcrRlRtZ21NY3pqMkpZT2VZYVU1SlJkRnpPdE92a3I4OXc0OVV1c1g1MVQ0aXFiak9keHE4Wk9mdERyVG8xazlGVS9aVXVKeDl5akU1cXdicURMY2lPWlVyS041TjZBMTJndDFteGtVQT09IiBGZWNoYT0iMjAyNC0xMS0xOVQxOTo1MToxOCIgRm9saW89IkZVTks2NzEyMjhQSDYtMTAiIFNlcmllPSJGIiBNb25lZGE9Ik1YTiIgVmVyc2lvbj0iNC4wIiB4bWxuczpjZmRpPSJodHRwOi8vd3d3LnNhdC5nb2IubXgvY2ZkLzQiPjxjZmRpOkVtaXNvciBSZmM9IkZVTks2NzEyMjhQSDYiIE5vbWJyZT0iS0FSTEEgRlVFTlRFIE5PTEFTQ08iIFJlZ2ltZW5GaXNjYWw9IjYyMSIgLz48Y2ZkaTpSZWNlcHRvciBSZmM9IkVLVTkwMDMxNzNDOSIgTm9tYnJlPSJFU0NVRUxBIEtFTVBFUiBVUkdBVEUiIERvbWljaWxpb0Zpc2NhbFJlY2VwdG9yPSI0MjUwMSIgUmVnaW1lbkZpc2NhbFJlY2VwdG9yPSI2MDEiIFVzb0NGREk9IkcwMSIgLz48Y2ZkaTpDb25jZXB0b3M+PGNmZGk6Q29uY2VwdG8gQ2xhdmVQcm9kU2Vydj0iMDEwMTAxMDEiIENhbnRpZGFkPSIxLjUiIENsYXZlVW5pZGFkPSJFNDgiIERlc2NyaXBjaW9uPSJJbnZvaWNpbmcgc29mdHdhcmUgYXMgYSBzZXJ2aWNlIiBWYWxvclVuaXRhcmlvPSIxMjI1Ljc1IiBJbXBvcnRlPSIxODM4LjYyNSIgT2JqZXRvSW1wPSIwMiIgTm9JZGVudGlmaWNhY2lvbj0iNzUwNjAyMjMwMTY5NyIgVW5pZGFkPSJVbmlkYWQgZGUgc2VydmljaW8iIERlc2N1ZW50bz0iMjU1Ljg1Ij48Y2ZkaTpJbXB1ZXN0b3M+PGNmZGk6VHJhc2xhZG9zPjxjZmRpOlRyYXNsYWRvIEJhc2U9IjE4MzguNjI1IiBJbXB1ZXN0bz0iMDAyIiBUaXBvRmFjdG9yPSJUYXNhIiBUYXNhT0N1b3RhPSIwLjE2MDAwMCIgSW1wb3J0ZT0iMjk0LjE4MDAwMCIgLz48L2NmZGk6VHJhc2xhZG9zPjwvY2ZkaTpJbXB1ZXN0b3M+PC9jZmRpOkNvbmNlcHRvPjxjZmRpOkNvbmNlcHRvIENsYXZlUHJvZFNlcnY9IjAxMDEwMTAxIiBDYW50aWRhZD0iOSIgQ2xhdmVVbmlkYWQ9IkU0OCIgRGVzY3JpcGNpb249IlNvZnR3YXJlIENvbnN1bHRhbnQiIFZhbG9yVW5pdGFyaW89IjYzNS44NSIgSW1wb3J0ZT0iNTcyMi42NSIgT2JqZXRvSW1wPSIwMiIgTm9JZGVudGlmaWNhY2lvbj0iNzUwNjAyMjMwMTY5OCIgVW5pZGFkPSJVbmlkYWQgZGUgc2VydmljaW8yIiBEZXNjdWVudG89IjI1NS44NSI+PGNmZGk6SW1wdWVzdG9zPjxjZmRpOlRyYXNsYWRvcz48Y2ZkaTpUcmFzbGFkbyBCYXNlPSI1NzIyLjY1IiBJbXB1ZXN0bz0iMDAyIiBUaXBvRmFjdG9yPSJUYXNhIiBUYXNhT0N1b3RhPSIwLjE2MDAwMCIgSW1wb3J0ZT0iOTE1LjYyNDAwMCIgLz48L2NmZGk6VHJhc2xhZG9zPjwvY2ZkaTpJbXB1ZXN0b3M+PC9jZmRpOkNvbmNlcHRvPjxjZmRpOkNvbmNlcHRvIENsYXZlUHJvZFNlcnY9IjAxMDEwMTAxIiBDYW50aWRhZD0iMi41IiBDbGF2ZVVuaWRhZD0iRTQ4IiBEZXNjcmlwY2lvbj0iQ29tcHV0ZXIgc29mdHdhcmUiIFZhbG9yVW5pdGFyaW89IjEyNTAuNzUiIEltcG9ydGU9IjMxMjYuODc1IiBPYmpldG9JbXA9IjAyIiBOb0lkZW50aWZpY2FjaW9uPSI3NTA2MDIyMzAxNjk5IiBVbmlkYWQ9IlVuaWRhZCBkZSBzZXJ2aWNpbzMiPjxjZmRpOkltcHVlc3Rvcz48Y2ZkaTpUcmFzbGFkb3M+PGNmZGk6VHJhc2xhZG8gQmFzZT0iMzEyNi44NzUiIEltcHVlc3RvPSIwMDIiIFRpcG9GYWN0b3I9IlRhc2EiIFRhc2FPQ3VvdGE9IjAuMTYwMDAwIiBJbXBvcnRlPSI1MDAuMzAwMDAwIiAvPjwvY2ZkaTpUcmFzbGFkb3M+PGNmZGk6UmV0ZW5jaW9uZXM+PGNmZGk6UmV0ZW5jaW9uIEJhc2U9IjMxMjYuODc1IiBJbXB1ZXN0bz0iMDAyIiBUaXBvRmFjdG9yPSJUYXNhIiBUYXNhT0N1b3RhPSIwLjEwNjY2NiIgSW1wb3J0ZT0iMzMzLjUzMTI0OSIgLz48L2NmZGk6UmV0ZW5jaW9uZXM+PC9jZmRpOkltcHVlc3Rvcz48L2NmZGk6Q29uY2VwdG8+PC9jZmRpOkNvbmNlcHRvcz48Y2ZkaTpJbXB1ZXN0b3MgVG90YWxJbXB1ZXN0b3NSZXRlbmlkb3M9IjMzMy41MyIgVG90YWxJbXB1ZXN0b3NUcmFzbGFkYWRvcz0iMTcxMC4xMCI+PGNmZGk6UmV0ZW5jaW9uZXM+PGNmZGk6UmV0ZW5jaW9uIEltcHVlc3RvPSIwMDIiIEltcG9ydGU9IjMzMy41MyIgLz48L2NmZGk6UmV0ZW5jaW9uZXM+PGNmZGk6VHJhc2xhZG9zPjxjZmRpOlRyYXNsYWRvIEJhc2U9IjEwNjg4LjE1IiBJbXB1ZXN0bz0iMDAyIiBUaXBvRmFjdG9yPSJUYXNhIiBUYXNhT0N1b3RhPSIwLjE2MDAwMCIgSW1wb3J0ZT0iMTcxMC4xMCIgLz48L2NmZGk6VHJhc2xhZG9zPjwvY2ZkaTpJbXB1ZXN0b3M+PGNmZGk6Q29tcGxlbWVudG8+PHRmZDpUaW1icmVGaXNjYWxEaWdpdGFsIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5zYXQuZ29iLm14L1RpbWJyZUZpc2NhbERpZ2l0YWwgaHR0cDovL3d3dy5zYXQuZ29iLm14L3NpdGlvX2ludGVybmV0L2NmZC9UaW1icmVGaXNjYWxEaWdpdGFsL1RpbWJyZUZpc2NhbERpZ2l0YWx2MTEueHNkIiBWZXJzaW9uPSIxLjEiIFVVSUQ9IjQyMzQ2NjRjLWNmOWQtNGQzOS05ZDRlLWNiNjQ0NDYwMjZkZiIgRmVjaGFUaW1icmFkbz0iMjAyNC0xMS0xOVQyMDo0NTowOSIgUmZjUHJvdkNlcnRpZj0iU1BSMTkwNjEzSTUyIiBTZWxsb0NGRD0iQ3NsaWJmL1FSSDFaRVF1MnoxNm1iSWZlYzNtWHhzVjQyNGFtWnhQelp6NW5qS1owazJ5VHBSQUxRZ1Z5Tmx0azEreHBGcFFSOGpmdnpPL0QxQTZRM0pacWZVcEtvUTlnT0dsZ0ZOaUhZMlNnanYveitsV2JWUS9uZE1oRWdGSjl6eUZQYWgzd3hpT2Q5VXppaTdpaHdmV29RdVpsQ1N1ckttZDFqR2ZmUFBGaldXUloxb2FXVTZUSWxrSlJVM3Y3YkhFczlwY1BOWVpzbUZvWEhPc0dOcEJsaDJXcXQyUFZ5VEtUeTl6bWlKUy9tZytGVG1nbU1jemoySllPZVlhVTVKUmRGek90T3Zrcjg5dzQ5VXVzWDUxVDRpcWJqT2R4cThaT2Z0RHJUbzFrOUZVL1pVdUp4OXlqRTVxd2JxRExjaU9aVXJLTjVONkExMmd0MW14a1VBPT0iIE5vQ2VydGlmaWNhZG9TQVQ9IjMwMDAxMDAwMDAwNTAwMDAzNDU2IiBTZWxsb1NBVD0iTGRwMGhVWExjVzZZbnlUVHE5TTVGUmVjc1hFQTRGUHRlb3pvcWlpYUJqZ0JQQjlxUTlCNDRMUUFDT1RnNHNHSzNLczduekFKRFZBcXllSm5tMThLN1N6dWozZ1J6S0crRTZXY3JTTzFoVVljNGVVenBLVUxUazEzZWtBSklYb2JpLy9RbEhBR0hiRHFUMEx4WC9abVcxKzhsbjB6Z3VOS3BDQ2xBRFpJOHRVWDZybFg2cmxiUjYyWmJOWjMvQ1NFK2dXZC9GbDl6OFRnRUJQdWVEbEo4cE0ybi94T0h6QXVUOXREeXRNZGpKV01GcSs4NmNIcW1EZVhYWUFWZWN6MFp1QmVVOGZuZklEaXZ0T1JMMHRsWG42V280T1h3Zisrd2hsUTVxM0hFKzQwVWpIWDZ5OVZrRkRuc29rZTl6bzhOb3lRZTIwck5WWnJFakpwSTB6aUp3PT0iIHhtbG5zOnRmZD0iaHR0cDovL3d3dy5zYXQuZ29iLm14L1RpbWJyZUZpc2NhbERpZ2l0YWwiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIC8+PC9jZmRpOkNvbXBsZW1lbnRvPjwvY2ZkaTpDb21wcm9iYW50ZT4=",
"id": "be7ac385-61e9-4333-b39b-9e4bc9033c32",
"createdAt": "2024-11-20T02:45:10.157585Z",
"updatedAt": "2024-11-20T02:45:10.1575852Z"
}
],
"id": "b1da2d54-8a56-4fbc-b5ac-21a12745bd0a",
"createdAt": "2024-11-20T02:45:10.1575731Z",
"updatedAt": "2024-11-20T02:45:10.1575751Z"
},
"succeeded": true,
"message": "",
"details": "",
"httpStatusCode": 200
}