URL PRUEBAS: POST https://facturacion.789.mx/api/test/factura/crear
URL PRODUCCIÓN: POST https://facturacion.789.mx/api/factura/crear
| Argumento | Tipo | Default | Descripción |
|---|---|---|---|
| main | Contiene los datos generales de la factura y los datos del emisor. | ||
| razonSocial | string | none | Nombre ó Razón social del emisor. |
|
rfc
requerido |
string | none | RFC del emisor. 12 dígitos para persona moral y 13 dígitos para persona física. |
|
tipo
requerido |
string | none | Tipo de comprobante (ingreso, egreso, traslado, nomina, pago). Para este tipo de comprobante enviar ingreso |
| moneda | string | MXN | Código de la moneda, acorde al estándar ISO 4217 |
| cambio | decimal | 1.0 | Tipo de cambio conforme a la moneda usada. Representa el número de pesos mexicanos que equivalen a una unidad de la moneda señalada. |
|
formaDePago
requerido |
string | none | Código de la forma de pago según el catálogo del SAT. |
|
metodoDePago
requerido |
string | none | Código del método de pago según el catálogo del SAT. PUE. Pago en una sola exhibición PPD. Pago en parcialidades o diferido |
| folio | string | '' | Número de folio asignado por la empresa para control interno. |
| serie | string | '' | Serie. De 1 a 25 caracteres designados por la empresa para control interno y sin validez fiscal. |
|
total
requerido |
decimal | none | Importe total facturado con impuestos incluido. |
|
subtotal
requerido |
decimal | none | Importe total facturado antes de impuestos. |
|
uso
requerido |
string | none | Clave del uso comprobante según el catálogo del SAT. |
| fechaEmision | date | now() 2025-12-01T16:49:41 |
Campo opcional para indicar la FECHA de EMISIÓN de la factura, puede ser hasta 48hrs hacia atras de la fecha actual. Debe cumplir el siguiente formato "Y-m-d\TH:i:s" |
| observaciones | string | none | Campo exclusivo para la representación impresa (PDF), se puede enviar un HTML básico como negritas y/o saltos de linea "<br>" |
| direccionFiscal | string | '' | Domicilio fiscal del emisor. |
| direccionFiscal.calle | string | '' | Calle del emisor. |
| direccionFiscal.num_ext | string | '' | Número exterior (númerio visible desde la calle) del domicilio del emisor. |
| direccionFiscal.num_int | string | '' | Número interior del domicilio del emisor. |
| direccionFiscal.colonia | string | '' | Colonia del domicilio del emisor. |
|
direccionFiscal.cp
requerido |
string | '' | Código Postal del domicilio del emisor. |
| direccionFiscal.ciudad | string | '' | Ciudad del domicilio del emisor. |
| direccionFiscal.localidad | string | '' | Delegación o Municipio del domicilio del emisor. |
| direccionFiscal.estado | string | '' | Estado del domicilio del emisor. |
| direccionFiscal.pais | string | '' | País del domicilio del emisor. |
| receptor | Datos del Receptor | ||
| razon_social | string | none | Nombre o Razón social del receptor |
|
rfc
requerido |
string | none | RFC del receptor. 12 dígitos para persona moral y 13 dígitos para persona física. |
| string | none | Correo electrónico del receptor, debe ser válido. | |
| direccion | string | '' | Domicilio fiscal del receptor. |
| direccion.calle | string | '' | Calle del receptor. |
| direccion.num_ext | string | '' | Número exterior (númerio visible desde la calle) del domicilio del receptor. |
| direccion.num_int | string | '' | Número interior del domicilio del receptor. |
| direccion.colonia | string | '' | Colonia del domicilio del receptor. |
|
direccion.codigo_postal
requerido |
string | '' | Código Postal del domicilio del receptor. |
| direccion.ciudad | string | '' | Ciudad del domicilio del receptor. |
| direccion.estado | string | '' | Estado del domicilio del receptor. |
| direccion.pais | string | '' | País del domicilio del receptor. |
| conceptos | Conjuto de datos de los productos o conceptos a facturar | ||
|
conceptos[].nombre
requerido |
string | none | Nombre del producto o servicio |
| conceptos[].unidad | string | none | Descripción de la unidad de medida |
|
conceptos[].medidaKey
requerido |
string | none | Clave de la unidad de medida segun el catálogo del SAT |
|
conceptos[].productKey
requerido |
string | none | Clave del producto segun el catálogo del SAT |
| conceptos[].cantidad | integer, decimal | 1 | Cantidad de productos o servicios vendidos, debe ser mayor a 0 |
|
conceptos[].precioUnitario
requerido |
decimal | none | Precio unitario del producto o servicio, debe ser mayor a 0, solo se permiete el número de decimales que indica el catálogo de monedas del SAT |
| conceptos[].descuento | decimal | none | Descuento que se aplicará al producto o servicio, debe ser mayor a 0, solo se permiete el número de decimales que indica el catálogo de monedas del SAT |
|
conceptos[].total
opcional |
decimal | conceptos[].cantidad * conceptos[].precioUnitario | Importe total a factura del producto o servicio antes de impuestos, debe ser mayor a 0, solo se permiete el número de decimales que indica el catálogo de monedas del SAT |
| conceptos[].impuestos | Conjunto | [] | Conjuto de datos con los impuestos federales a aplicar, este nodo puede omitirse sí no es necesario deducir impuestos. |
|
conceptos[].impuestos[].tasa
requerido |
decimal | none | Tasa del impuesto a aplicar, debe ser en decimal, ej. 16% se debe enviar como 0.16 |
|
conceptos[].impuestos[].tipo
requerido |
string | none | Indica el tipo de impuesto a aplicar (IVA, ISR, IEPS) |
| conceptos[].impuestos[].factor | string | Tasa | Indica el factor del impuesto a aplicar (Tasa, Cuota, Exento) |
|
conceptos[].impuestos[].importe
opcional |
string | (conceptos[].total - conceptos[].descuento ) * conceptos[].impuestos[].tasa | Importe total del impuesto, debe ser mayor a 0, solo se permiete el número de decimales que indica el catálogo de monedas del SAT |
|
conceptos[].impuestos[].retencion
requerido |
boolean | none | Indica si se trata de una retención |
|
conceptos[].iedu
requerido |
Object | [] | Complemento concepto para la expedición de comprobantes fiscales por parte de Instituciones Educativas Privadas. |
|
conceptos[].iedu.nombre
requerido |
string | none | Nombre del Alumno de la institución educativa |
|
conceptos[].iedu.curp
requerido |
string | none | CURP del alumno de la institución educativa |
|
conceptos[].iedu.nivelEducativo
requerido |
string | none | Nivel Educativo del alumno de la institución educativa |
|
conceptos[].iedu.autRVOE
requerido |
string | none | Clave del centro de trabajo o el reconocimiento de validez oficial de estudios en los términos de la Ley General de Educación que tenga la institución educativa privada donde se realiza el pago. |
|
conceptos[].iedu.rfc
requerido |
string | none | RFC de quien realiza el pago cuando sea diferente a quien recibe el servicio |
| ipn | Parametro opcional, permite recibir autonotificación del status del CFDI. Ver ejemplo |
||
|
ipn.url
requerido |
url | none | Endpoint o api donde ser recibiran las notificaciones de los cambios de status del CFDI |
|
ipn.data_request
requerido |
string, object | none | Conjunto de datos de control interno. Estos datos tal cual como sean enviados serán recibidos por el Endpoint o api. |
data: {
"main":{
"razonSocial":"EMISOR SA DE CV",
"rfc":"IIA040805DZ4",
"tipo": "ingreso",
"moneda": "MXN",
"cambio": "1",
"formaDePago": "03",
"metodoDePago": "PUE",
"folio": "88",
"serie": "B",
"total": "1.16",
"subtotal": "1.00",
"uso": "G01",
"direccionFiscal":{
"calle":"1RO DE MAYO",
"num_ext":"153-A",
"num_int":null,
"colonia":"SAN LUIS TLATILCO",
"ciudad":"NAUCALPAN DE JUAREZ",
"cp":"53580",
"estado":"Estado de México",
"pais":"MÉXICO",
"localidad":"NAUCALPAN DE JUAREZ",
}
},
"receptor": {
"razon_social": "RECEPTOR, S.A. DE C.V.",
"rfc": "FGM830830749",
"email": "facturas@receptor.mx",
"direccion": {
"calle": "JUAN PEREZ",
"colonia": "TRANSITO",
"ciudad": "CIUDAD DE MEXICO",
"estado": "Ciudad de México",
"codigo_postal": "06820",
"pais": "MEXICO",
"num_ext": "39",
"num_int": "0"
}
},
"conceptos": [
{
"nombre": "Prueba factura de ingreso",
"unidad": "kg",
"medidaKey": "58",
"productKey": "13111205",
"precioUnitario": "1.00",
"cantidad": "1",
"total": "1",
"descuento": "0.00",
"impuestos": [
{
"tasa": 0.16,
"tipo": "IVA",
"retencion": false,
"importe": 0.16
}
],
"iedu": {
"nombre": "SANTOS RUIZ DOMINGA MONSERRATH",
"curp": "SARD030210MMCNZMA7",
"nivelEducativo": "Bachillerato o su equivalente",
"autRVOE": "92",
"rfc": "AAEH750609RQ4"
}
}
],
"ipn": {
"url":"http://***.cloudwaysapps.com/api/requestStatus",
"data_request": 1,
}
}
Código de respuesta: 200 OK
{
id: 1,
success: "Exito",
uuid: "6B558DD0-D8B2-4C42-9445-68CCB2BE2C12",
url_xml: "./6B558DD0-xxxxx.xml",
url_pdf: "./6B558DD0-xxxxx.pdf"
}
Código de respuesta: 406 Not Acceptable
Nota: este tipo de error hace indicación a que uno de los datos no es valido o esta mal llenado
[
0: "El RFC del receptor no tiene un valor valido"
]
Código de respuesta: 403 Forbidden
Nota: este tipo de error hace indicación a la falta de datos obligatorios dentro de la solicitud
{
error: "Undefined property: stdClass::$rfc"
}
Datos enviado al endpoint o api
{
"data_request": 1,
"id": 1,
"code_status": 200,
"uuid": "6B558DD0-D8B2-4C42-9445-68CCB2BE2C12",
"url_xml": "./6B558DD0-xxxxx.xml",
"url_pdf":"./6B558DD0-xxxxx.pdf"
}
Datos enviado al endpoint o api
{
"data_request": 1,
"code_status": 403,
"error": "Undefined property: stdClass::$rfc"
}