Ir al contenido

FISCALISTO / API

Recetas de facturación

Las facturas más comunes listas para copiar: con catálogo, a crédito (PPD), en dólares, con retenciones, global a público en general y en lote.

Todas van a POST /v1/invoices con su llave y una Idempotency-Key nueva. Solo cambia el cuerpo; lo que no manda tiene su valor usual (PUE, MXN, uso G03 o S01 con régimen 616, unidad E48, objeto de impuesto 02, IVA 16%, cantidad 1).

Con su catálogo de clientes y productos

Guarde una vez al cliente y al producto, y facture con sus ids. El producto pone su clave, unidad, precio e impuestos; puede cambiar la cantidad o el precio en cada concepto.

curl https://api.fiscalisto.com/v1/customers \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "tax_id": "ICV060329BY0", "legal_name": "INMOBILIARIA CVA", "tax_system": "601", "zip": "33826", "email": "pagos@cva.example" }'
curl https://api.fiscalisto.com/v1/invoices \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Idempotency-Key: pedido-A-1043" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": "cus_OufpKqnrvx9p1",
    "payment_form": "04",
    "items": [{ "product": "prd_OufpKqnrvx9p1", "quantity": 3 }],
    "send_email": true
  }'

Con send_email le llega al cliente el PDF y el XML al correo de su ficha (o al de customer.email); sin ninguno contesta 400 parameter_missing, para que no se timbre una factura que no le llega a nadie. Un cliente nuevo también puede ir completo en customer, como en el inicio rápido; no se guarda en el catálogo.

A crédito (PPD)

Si el cliente le paga después o en partes, la factura va con método PPD y forma de pago 99 (por definir), que Fiscalisto pone sola. Cada pago se registra después con un complemento de pago.

curl https://api.fiscalisto.com/v1/invoices \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Idempotency-Key: contrato-88-oct" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": { "tax_id": "ICV060329BY0", "legal_name": "INMOBILIARIA CVA", "tax_system": "601", "zip": "33826" },
    "payment_method": "PPD",
    "items": [{ "description": "Implementación del sistema", "product_key": "81111500", "unit_price": 45000 }]
  }'

En dólares

Mande la moneda y el tipo de cambio del día (el que publica el DOF el día hábil anterior). Los precios van en dólares.

curl https://api.fiscalisto.com/v1/invoices \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Idempotency-Key: pedido-USD-17" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": { "tax_id": "ICV060329BY0", "legal_name": "INMOBILIARIA CVA", "tax_system": "601", "zip": "33826" },
    "payment_form": "03",
    "currency": "USD",
    "exchange_rate": 18.35,
    "items": [{ "description": "Licencia anual", "product_key": "43232400", "unit_price": 1200 }]
  }'

Con retenciones

Las retenciones van por concepto, como tasa. Por ejemplo, un flete a una persona moral lleva retención de IVA del 4%:

curl https://api.fiscalisto.com/v1/invoices \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Idempotency-Key: flete-5521" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": { "tax_id": "ICV060329BY0", "legal_name": "INMOBILIARIA CVA", "tax_system": "601", "zip": "33826" },
    "payment_form": "03",
    "items": [{ "description": "Flete Monterrey–Saltillo", "product_key": "78101800", "unit_price": 8000, "iva_retention": 0.04 }]
  }'

La respuesta trae lo retenido en taxes.iva_withheld y taxes.isr_withheld, y el total ya con ellas restadas. Otras comunes: honorarios o arrendamiento de una persona física a una moral (isr_retention: 0.10, iva_retention: 0.106667) y RESICO a una persona moral (isr_retention: 0.0125).

Global a público en general

Lo que vendió con ticket a quien no pidió factura va en una factura global por día, semana, mes o bimestre. El cliente es el público en general: RFC XAXX010101000, nombre PUBLICO EN GENERAL, régimen 616 y, como código postal, el del emisor (en pruebas, el del emisor de pruebas del SAT: 42501). Cada concepto es una venta, con el número del ticket en sku.

curl https://api.fiscalisto.com/v1/invoices \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Idempotency-Key: global-2026-10" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": { "tax_id": "XAXX010101000", "legal_name": "PUBLICO EN GENERAL", "tax_system": "616", "zip": "42501" },
    "global": { "periodicity": "04", "months": "10", "year": 2026 },
    "payment_form": "01",
    "items": [
      { "description": "Venta", "product_key": "01010101", "unit_key": "ACT", "sku": "T-1001", "unit_price": 431.03 },
      { "description": "Venta", "product_key": "01010101", "unit_key": "ACT", "sku": "T-1002", "unit_price": 862.07 }
    ]
  }'

Muchas a la vez

Para cientos o miles de facturas (las cuotas del mes, la facturación de un marketplace), use un lote: una sola solicitud con hasta 1,000.

Para saber más