Documentación oficial API

Integra facturación SUNAT sin tocar la configuración sensible.

Esta documentación es para clientes que emitirán documentos desde su sistema. Las credenciales SUNAT, certificado digital, logos, series y webhooks se configuran desde el panel administrativo. La API cliente se enfoca en crear documentos, enviarlos a SUNAT, consultar estado y descargar archivos.

Base: /api/v1 Auth cliente: Bearer token SUNAT config: solo panel
POST /api/v1/invoices
{
  "branch_id": 1,
  "serie": "F001",
  "fecha_emision": "2026-08-04",
  "moneda": "PEN",
  "forma_pago_tipo": "Contado",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE SAC"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}

La API emite documentos. La configuración sensible se maneja desde el panel.

Permitido por API

  • Crear factura, boleta, nota de crédito, nota de débito y guía de remisión.
  • Enviar documentos a SUNAT.
  • Consultar estado y listar ventas/documentos.
  • Descargar PDF, XML y CDR.

Solo desde panel

  • Certificado digital y contraseña.
  • Usuario SOL, clave SOL y credenciales GRE.
  • Logo, detracciones y cambio de ambiente beta/producción.
  • Configuración webhook y token de firma.

Disponible con condiciones

  • Ventas: GET /api/v1/sales lista facturas, boletas y notas; la creación se realiza por endpoint de documento.
  • Webhooks con entrega real, logs, firma, autenticación del receptor y reintentos automáticos.
  • Consulta DNI/RUC disponible por endpoint y sujeta al plan/cuota contratado.

Crear, enviar, consultar y descargar.

1. Crear documento

El cliente envía los datos completos del comprobante. La API calcula, valida y guarda el documento pendiente.

2. Enviar a SUNAT

El cliente llama a send-sunat. La API usa las credenciales configuradas previamente en el panel.

3. Consultar estado

Usa el detalle del documento o endpoints de consulta según el tipo de comprobante.

4. Descargar archivos

Cuando existan archivos, descarga PDF, XML y CDR desde los endpoints del documento.

Todos los endpoints de cliente usan autenticación.

Cómo obtener tu API key

  1. Inicia sesión en el dashboard con un usuario administrador de la empresa.
  2. Abre Configuración > API keys.
  3. Selecciona Generar API key y guarda la credencial para configurar tu sistema externo.

La empresa utiliza una sola API key activa. Al regenerarla, la anterior se invalida inmediatamente y los sistemas externos que todavía la utilicen dejarán de funcionar hasta que actualices sus credenciales. La API key se guarda cifrada y solo los administradores pueden generarla o consultarla.

La API key se envía como token Bearer. Usa siempre Authorization: Bearer TU_API_KEY. No uses api-key, api_key ni x-api-key para autenticar estos endpoints.

En Postman: usa Authorization > Bearer Token y copia el bloque «Body JSON» del endpoint que vas a consumir.

La colección incluye los casos completos compatibles con SUNAT que se encuentran en los ejemplos internos: operaciones gravadas, exoneradas, inafectas, gratuitas, descuentos, anticipos, detracciones, percepción, retención, IVAP, ISC, ICBPER, exportación, documentos relacionados y escenarios de guías.

Descargar colección JSON para Postman

La gestión de la credencial se realiza únicamente desde Configuración > API keys en el dashboard. Los endpoints internos del dashboard no forman parte de la colección de integración del cliente.

Headers requeridos

Authorization: Bearer TU_API_KEY
Accept: application/json
Content-Type: application/json

Validar la API key antes de consumir ventas

Primero prueba el Bearer contra /api/v1/auth/me. Si responde 401 Unauthenticated, el token no existe en la base actual, fue revocado al regenerar la credencial o pertenece a otro entorno.

curl --location 'https://facturacion.watsontic.com/api/v1/auth/me' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TU_API_KEY'
{
  "user": {
    "id": 10,
    "name": "Administrador demo",
    "email": "[email protected]",
    "role": "Administrador de Empresa",
    "role_name": "company_admin",
    "company": "EMPRESA DEMO SAC",
    "company_uuid": "uuid-de-tu-empresa",
    "permissions": ["company.manage", "sales.*", "invoices.*"]
  }
}

Cuando cambies la API key desde Configuración > API keys, vuelve a copiar la credencial completa con formato id|secreto. No mezcles una API key generada en producción con otro entorno ni una key anterior a la última regeneración.

GET/api/v1/auth/me
Valida el usuario autenticado, empresa, rol y permisos.
GET/api/v1/company/sunat-environment
Consulta si tu empresa autenticada está emitiendo en beta o producción. Este endpoint exige Bearer token y no devuelve credenciales SUNAT.
curl --location 'https://facturacion.watsontic.com/api/v1/company/sunat-environment' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TU_API_KEY'
{
  "success": true,
  "data": {
    "company": {
      "uuid": "uuid-de-tu-empresa",
      "ruc": "20123456789",
      "razon_social": "EMPRESA DEMO SAC"
    },
    "modo_produccion": false,
    "environment": "beta"
  }
}

Qué significa cada campo y de dónde obtenerlo.

La API identifica la empresa por el Bearer token. En una integración normal no envíes company_id ni company_uuid; esos valores aparecen solo como datos informativos de la sesión autenticada o en herramientas administrativas.

Campos comunes

branch_idID de la sucursal emisora. Se obtiene con GET /api/v1/branches. Usa el id de la sucursal desde la que emitirás el comprobante.
serieSerie del comprobante, por ejemplo F001, B001, FC01, FD01 o T001. Se obtiene desde las series de la sucursal en GET /api/v1/branches o desde GET /api/v1/branches/{branch_id}/correlatives.
{id}ID interno del recurso. Sale de la respuesta de creación (POST) o de un listado (GET) del mismo recurso. Ejemplo: para enviar una factura usa el id devuelto por POST /api/v1/invoices.
correlativoNúmero secuencial de la serie. Normalmente lo asigna la API. Para consultar el próximo número usa /next-number?branch_id=...&serie=....
company_uuidNo lo envíes en una integración cliente normal. La empresa se resuelve por el Bearer token. Solo aplica a flujos administrativos con permisos de superadmin.

Queries frecuentes

pagePágina del listado. Ejemplo: ?page=2.
per_pageCantidad por página cuando el endpoint lo soporta. En documentos acepta hasta 100; en algunos catálogos el mínimo efectivo es 20.
branch_idFiltro por sucursal en listados de ventas, documentos e inventario. Es el mismo ID obtenido desde /branches.
estado_sunatFiltro por estado SUNAT: PENDIENTE, PROCESANDO, ACEPTADO, RECHAZADO o ANULADO.
fecha_desde / fecha_hastaRango por fecha de emisión en formato YYYY-MM-DD. Ejemplo: ?fecha_desde=2026-09-01&fecha_hasta=2026-09-30.
cliente / searchBúsqueda textual. En documentos usa cliente; en ventas, clientes e inventario usa search.

Endpoints previos que debes consultar

GET/api/v1/branches
Obtiene tus sucursales. Usa data[].id como branch_id y revisa sus series disponibles para factura, boleta, notas y guía.
GET/api/v1/branches/{branch_id}/correlatives
Obtiene las series configuradas y el próximo número por tipo de documento. Úsalo antes de llamar a /next-number o crear documentos.
GET/api/v1/clients?search=CLIENTE&page=1
Busca clientes guardados. También puedes enviar el objeto client completo dentro del documento y la API lo reutiliza o crea según corresponda.
GET/api/v1/unspsc-catalog?search=aceite&type=product
Busca códigos SUNAT/UNSPSC. El campo id_producto de la respuesta es el valor que debes enviar como sunat_product_code o codigo_producto_sunat.
GET/api/v1/ubigeos/search?q=lima
Busca ubigeo para direcciones. El parámetro correcto es q; no uses search en este endpoint.
GET/api/v1/pdf/formats
Lista formatos disponibles para descargas PDF. Luego usa format en download-pdf, por ejemplo ?format=a4.

Ejemplo: obtener sucursal, serie y próximo número

curl --location 'https://facturacion.watsontic.com/api/v1/branches' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TU_API_KEY'
{
  "success": true,
  "data": [{
    "id": 1,
    "codigo": "0001",
    "nombre": "Sucursal Principal",
    "series_factura": ["F001"],
    "series_boleta": ["B001"],
    "series_nota_credito": ["FC01"],
    "series_nota_debito": ["FD01"],
    "series_guia_remision": ["T001"]
  }]
}
curl --location 'https://facturacion.watsontic.com/api/v1/invoices/next-number?branch_id=1&serie=F001' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TU_API_KEY'
{
  "success": true,
  "data": {
    "serie": "F001",
    "correlativo": "000022",
    "numero_completo": "F001-000022",
    "source": "correlatives"
  }
}

Códigos SUNAT usados en documentos

tipo_documentoTipo de documento del cliente: 6 RUC, 1 DNI, 0 sin documento, 4 carné de extranjería.
tipo_doc_afectadoTipo del comprobante original en notas: 01 factura, 03 boleta.
cod_motivoMotivo SUNAT de nota. Obtén los valores permitidos en /credit-notes/catalogs/motivos o /debit-notes/catalogs/motivos.
unidad / unit_codeCódigo de unidad SUNAT. Para productos unitarios usa NIU; para servicios suele usarse ZZ.
tip_afe_igv / tax_affectationAfectación IGV: 10 gravado, 20 exonerado, 30 inafecto, 40 exportación.
sunat_product_codeCódigo UNSPSC de 8 dígitos. Puedes obtenerlo desde /unspsc-catalog o descargar el archivo oficial CCNU_MOD_2.xlsm.

Endpoints que el cliente puede usar para emitir.

Factura

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/invoices
Listar facturas de la empresa autenticada. Query params: page, per_page, branch_id, estado_sunat, fecha_desde, fecha_hasta y cliente.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/invoices
Crear factura. Body requerido: branch_id de /branches, serie de correlativos, client con RUC y detalles con unidad, cantidad, valor unitario e IGV.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "F001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "forma_pago_tipo": "Contado",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
GET/api/v1/invoices/next-number?branch_id=1&serie=F001
Obtener el próximo número de una serie. Query obligatorio: branch_id de /branches y serie configurada para factura.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "serie": "F001",
        "correlativo": "000021",
        "numero_completo": "F001-000021",
        "source": "correlatives"
    }
}
GET/api/v1/invoices/{id}
Ver detalle de factura. {id} es el ID devuelto al crear o listar facturas.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
PUT/api/v1/invoices/{id}
Editar factura pendiente. Usa el mismo contrato de creación y el {id} de la factura.
Ver ejemplo de envío y respuesta
Body JSON
{
    "observacion": "Actualización solicitada por el sistema externo"
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
POST/api/v1/invoices/{id}/send-sunat
Enviar factura a SUNAT. {id} debe pertenecer a una factura pendiente de tu empresa.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "F001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "forma_pago_tipo": "Contado",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Boleta

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/boletas
Listar boletas. Query params: page, per_page, branch_id, estado_sunat, fecha_desde, fecha_hasta y cliente.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/boletas
Crear boleta. Body requerido: branch_id, serie B configurada, client con DNI o nombre y detalles.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "B001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "metodo_envio": "individual",
  "forma_pago_tipo": "Contado",
  "client": {
    "tipo_documento": "1",
    "numero_documento": "71234567",
    "razon_social": "CLIENTE DEMO"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Boleta creada correctamente",
    "data": {
        "id": 17,
        "numero_completo": "B001-000016",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "59.00"
    }
}
GET/api/v1/boletas/next-number?branch_id=1&serie=B001
Obtener el próximo número de boleta. Query obligatorio: branch_id de /branches y serie configurada para boleta.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "serie": "B001",
        "correlativo": "000016",
        "numero_completo": "B001-000016",
        "source": "correlatives"
    }
}
GET/api/v1/boletas/{id}
Ver detalle de boleta. {id} sale del POST o del listado de boletas.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
PUT/api/v1/boletas/{id}
Editar boleta pendiente. Usa el mismo contrato de creación.
Ver ejemplo de envío y respuesta
Body JSON
{
    "observacion": "Actualización solicitada por el sistema externo"
}
Respuesta JSON
{
    "success": true,
    "message": "Boleta creada correctamente",
    "data": {
        "id": 17,
        "numero_completo": "B001-000016",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "59.00"
    }
}
POST/api/v1/boletas/{id}/send-sunat
Enviar boleta o prepararla para resumen según configuración. {id} es la boleta creada.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "B001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "metodo_envio": "individual",
  "forma_pago_tipo": "Contado",
  "client": {
    "tipo_documento": "1",
    "numero_documento": "71234567",
    "razon_social": "CLIENTE DEMO"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Notas de crédito

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/credit-notes
Listar notas de crédito. Query params: page, per_page, branch_id, estado_sunat, fecha_desde, fecha_hasta y cliente.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/credit-notes
Crear nota de crédito. Body requerido: branch_id, serie de nota, tipo_doc_afectado, num_doc_afectado, cod_motivo, client y detalles.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "FC01",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000021",
  "cod_motivo": "01",
  "des_motivo": "Anulación de la operación",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto devuelto",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Nota de crédito creada correctamente",
    "data": {
        "id": 2,
        "numero_completo": "FC01-000002",
        "tipo_doc_afectado": "01",
        "num_doc_afectado": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
GET/api/v1/credit-notes/catalogs/motivos
Motivos SUNAT permitidos para cod_motivo y des_motivo. No requiere query.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
GET/api/v1/credit-notes/next-number?branch_id=1&serie=FC01
Obtener el próximo número de nota de crédito. Query obligatorio: branch_id y serie FC configurada.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "serie": "F001",
        "correlativo": "000021",
        "numero_completo": "F001-000021",
        "source": "correlatives"
    }
}
POST/api/v1/credit-notes/{id}/send-sunat
Enviar nota de crédito a SUNAT. {id} sale del POST o listado de notas.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "FC01",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000021",
  "cod_motivo": "01",
  "des_motivo": "Anulación de la operación",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto devuelto",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 100,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Notas de débito

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/debit-notes
Listar notas de débito. Query params: page, per_page, branch_id, estado_sunat, fecha_desde, fecha_hasta y cliente.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/debit-notes
Crear nota de débito. Body requerido: branch_id, serie de nota, tipo_doc_afectado, num_doc_afectado, cod_motivo, client y detalles.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "FD01",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000021",
  "cod_motivo": "02",
  "des_motivo": "Aumento en el valor",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "AJUSTE",
    "descripcion": "Ajuste de precio",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 30,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Nota de débito creada correctamente",
    "data": {
        "id": 2,
        "numero_completo": "FD01-000001",
        "tipo_doc_afectado": "01",
        "num_doc_afectado": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "35.40"
    }
}
GET/api/v1/debit-notes/catalogs/motivos
Motivos SUNAT permitidos para cod_motivo y des_motivo. No requiere query.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
GET/api/v1/debit-notes/next-number?branch_id=1&serie=FD01
Obtener el próximo número de nota de débito. Query obligatorio: branch_id y serie FD configurada.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "serie": "F001",
        "correlativo": "000021",
        "numero_completo": "F001-000021",
        "source": "correlatives"
    }
}
POST/api/v1/debit-notes/{id}/send-sunat
Enviar nota de débito a SUNAT. {id} sale del POST o listado de notas.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "FD01",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000021",
  "cod_motivo": "02",
  "des_motivo": "Aumento en el valor",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "codigo": "AJUSTE",
    "descripcion": "Ajuste de precio",
    "unidad": "NIU",
    "cantidad": 1,
    "mto_valor_unitario": 30,
    "porcentaje_igv": 18,
    "tip_afe_igv": "10"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Guías de remisión

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/dispatch-guides
Listar guías de remisión. Query params: page, per_page, branch_id, estado_sunat, fecha_desde y fecha_hasta.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/dispatch-guides
Crear guía. Body requerido: branch_id, serie T configurada, destinatario, motivo, modalidad, partida/llegada con ubigeo, transporte y detalles.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "T001",
  "fecha_emision": "2026-09-01",
  "destinatario": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "cod_traslado": "01",
  "mod_traslado": "02",
  "fecha_traslado": "2026-08-09",
  "peso_total": 12.5,
  "und_peso_total": "KGM",
  "num_bultos": 2,
  "partida": {
    "ubigeo": "150101",
    "direccion": "Av. Origen 123"
  },
  "llegada": {
    "ubigeo": "150101",
    "direccion": "Av. Destino 456"
  },
  "conductor_tipo_doc": "1",
  "conductor_num_doc": "71234567",
  "conductor_licencia": "Q12345678",
  "conductor_nombres": "Juan",
  "conductor_apellidos": "Perez Ramos",
  "vehiculo_placa": "ABC123",
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 10
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
GET/api/v1/dispatch-guides/next-number?branch_id=1&serie=T001
Obtener el próximo número de guía. Query obligatorio: branch_id y serie T configurada.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "serie": "F001",
        "correlativo": "000021",
        "numero_completo": "F001-000021",
        "source": "correlatives"
    }
}
GET/api/v1/dispatch-guides/catalogs/transfer-reasons
Motivos de traslado SUNAT para cod_traslado. No requiere query.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
GET/api/v1/dispatch-guides/catalogs/transport-modes
Modalidades de transporte SUNAT para mod_traslado. No requiere query.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/dispatch-guides/{id}/send-sunat
Enviar guía a SUNAT. {id} es la guía creada.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "T001",
  "fecha_emision": "2026-09-01",
  "destinatario": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "cod_traslado": "01",
  "mod_traslado": "02",
  "fecha_traslado": "2026-08-09",
  "peso_total": 12.5,
  "und_peso_total": "KGM",
  "num_bultos": 2,
  "partida": {
    "ubigeo": "150101",
    "direccion": "Av. Origen 123"
  },
  "llegada": {
    "ubigeo": "150101",
    "direccion": "Av. Destino 456"
  },
  "conductor_tipo_doc": "1",
  "conductor_num_doc": "71234567",
  "conductor_licencia": "Q12345678",
  "conductor_nombres": "Juan",
  "conductor_apellidos": "Perez Ramos",
  "vehiculo_placa": "ABC123",
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 10
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}
POST/api/v1/dispatch-guides/{id}/check-status
Consultar estado de guía enviada. {id} es la guía enviada previamente.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "T001",
  "fecha_emision": "2026-09-01",
  "destinatario": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "cod_traslado": "01",
  "mod_traslado": "02",
  "fecha_traslado": "2026-08-09",
  "peso_total": 12.5,
  "und_peso_total": "KGM",
  "num_bultos": 2,
  "partida": {
    "ubigeo": "150101",
    "direccion": "Av. Origen 123"
  },
  "llegada": {
    "ubigeo": "150101",
    "direccion": "Av. Destino 456"
  },
  "conductor_tipo_doc": "1",
  "conductor_num_doc": "71234567",
  "conductor_licencia": "Q12345678",
  "conductor_nombres": "Juan",
  "conductor_apellidos": "Perez Ramos",
  "vehiculo_placa": "ABC123",
  "detalles": [{
    "codigo": "P001",
    "descripcion": "Producto demo",
    "unidad": "NIU",
    "cantidad": 10
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}

Bajas y resúmenes

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/voided-documents
Listar comunicaciones de baja. Query params: page, per_page, branch_id y estado_sunat.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/voided-documents
Crear comunicación de baja. Body requerido: branch_id, fecha_referencia, motivo y documentos a dar de baja.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "fecha_referencia": "2026-09-01",
  "motivo_baja": "Error en datos del cliente",
  "detalles": [{
    "tipo_documento": "01",
    "serie": "F001",
    "correlativo": "000021",
    "motivo_especifico": "Error en datos del cliente"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
POST/api/v1/voided-documents/{id}/send-sunat
Enviar baja a SUNAT. {id} es la baja creada.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "fecha_referencia": "2026-09-01",
  "motivo_baja": "Error en datos del cliente",
  "detalles": [{
    "tipo_documento": "01",
    "serie": "F001",
    "correlativo": "000021",
    "motivo_especifico": "Error en datos del cliente"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}
GET/api/v1/daily-summaries
Listar resúmenes diarios. Query params: page, per_page, branch_id y estado_sunat.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/daily-summaries
Crear resumen diario. Body requerido: branch_id, fecha_referencia, fecha_generacion y boletas/notas incluidas.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "fecha_referencia": "2026-09-01",
  "fecha_generacion": "2026-09-01",
  "documentos": [{
    "tipo_documento": "03",
    "serie": "B001",
    "correlativo": "000123"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
POST/api/v1/daily-summaries/{id}/send-sunat
Enviar resumen diario. {id} es el resumen creado.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "fecha_referencia": "2026-09-01",
  "fecha_generacion": "2026-09-01",
  "documentos": [{
    "tipo_documento": "03",
    "serie": "B001",
    "correlativo": "000123"
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Retenciones y percepciones

Cada endpoint muestra el body que debes enviar y una respuesta esperada. Sustituye identificadores, serie, correlativo y datos del cliente por los de tu empresa.

GET/api/v1/retentions
Listar comprobantes de retención. Query params: page, per_page, branch_id y estado_sunat.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/retentions
Crear retención. Body requerido: branch_id, serie R, proveedor, régimen, tasa, importes y documentos relacionados.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "R001",
  "correlativo": "000001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "regimen": "01",
  "tasa": 3,
  "imp_retenido": 35.40,
  "imp_pagado": 1144.60,
  "proveedor": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "PROVEEDOR DEMO SAC"
  },
  "detalles": [{
    "tipo_doc": "01",
    "num_doc": "F001-000456",
    "fecha_emision": "2026-08-01",
    "fecha_retencion": "2026-09-01",
    "moneda": "PEN",
    "imp_total": 1180,
    "imp_pagar": 1144.60,
    "imp_retenido": 35.40,
    "pagos": [{"moneda": "PEN", "fecha": "2026-09-01", "importe": 1144.60}],
    "tipo_cambio": {"fecha": "2026-09-01", "factor": 1, "moneda_obj": "PEN", "moneda_ref": "PEN"}
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
GET/api/v1/retentions/{id}
Ver detalle de retención. {id} sale del POST o listado.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/retentions/{id}/send-sunat
Enviar retención a SUNAT. {id} es la retención creada.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "R001",
  "correlativo": "000001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "regimen": "01",
  "tasa": 3,
  "imp_retenido": 35.40,
  "imp_pagado": 1144.60,
  "proveedor": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "PROVEEDOR DEMO SAC"
  },
  "detalles": [{
    "tipo_doc": "01",
    "num_doc": "F001-000456",
    "fecha_emision": "2026-08-01",
    "fecha_retencion": "2026-09-01",
    "moneda": "PEN",
    "imp_total": 1180,
    "imp_pagar": 1144.60,
    "imp_retenido": 35.40,
    "pagos": [{"moneda": "PEN", "fecha": "2026-09-01", "importe": 1144.60}],
    "tipo_cambio": {"fecha": "2026-09-01", "factor": 1, "moneda_obj": "PEN", "moneda_ref": "PEN"}
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}
GET/api/v1/perceptions
Listar comprobantes de percepción. Query params: page, per_page, branch_id y estado_sunat.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/perceptions
Crear percepción. Body requerido: branch_id, serie P, cliente, régimen, tasa, importes y documentos relacionados.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "P001",
  "correlativo": "000001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "regimen": "01",
  "tasa": 2,
  "imp_percibido": 23.60,
  "imp_cobrado": 1203.60,
  "cliente": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "tipo_doc": "01",
    "num_doc": "F001-000021",
    "fecha_emision": "2026-08-01",
    "fecha_percepcion": "2026-09-01",
    "moneda": "PEN",
    "imp_total": 1180,
    "imp_cobrar": 1203.60,
    "imp_percibido": 23.60,
    "cobros": [{"moneda": "PEN", "fecha": "2026-09-01", "importe": 1203.60}],
    "tipo_cambio": {"fecha": "2026-09-01", "factor": 1, "moneda_obj": "PEN", "moneda_ref": "PEN"}
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Factura creada correctamente",
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00"
    }
}
GET/api/v1/perceptions/{id}
Ver detalle de percepción. {id} sale del POST o listado.
Ver ejemplo de envío y respuesta
Body JSON
Este endpoint no utiliza body JSON.
Respuesta JSON
{
    "success": true,
    "data": {
        "id": 23,
        "numero_completo": "F001-000021",
        "estado_sunat": "PENDIENTE",
        "mto_imp_venta": "118.00",
        "client": {
            "razon_social": "CLIENTE DEMO SAC",
            "numero_documento": "20111111111"
        }
    }
}
POST/api/v1/perceptions/{id}/send-sunat
Enviar percepción a SUNAT. {id} es la percepción creada.
Ver ejemplo de envío y respuesta
Body JSON
{
  "branch_id": 1,
  "serie": "P001",
  "correlativo": "000001",
  "fecha_emision": "2026-09-01",
  "moneda": "PEN",
  "regimen": "01",
  "tasa": 2,
  "imp_percibido": 23.60,
  "imp_cobrado": 1203.60,
  "cliente": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "CLIENTE DEMO SAC"
  },
  "detalles": [{
    "tipo_doc": "01",
    "num_doc": "F001-000021",
    "fecha_emision": "2026-08-01",
    "fecha_percepcion": "2026-09-01",
    "moneda": "PEN",
    "imp_total": 1180,
    "imp_cobrar": 1203.60,
    "imp_percibido": 23.60,
    "cobros": [{"moneda": "PEN", "fecha": "2026-09-01", "importe": 1203.60}],
    "tipo_cambio": {"fecha": "2026-09-01", "factor": 1, "moneda_obj": "PEN", "moneda_ref": "PEN"}
  }]
}
Respuesta JSON
{
    "success": true,
    "message": "Documento enviado a SUNAT correctamente",
    "data": {
        "id": 123,
        "estado_sunat": "ACEPTADO",
        "cdr_path": "storage\/documents\/cdr\/R-20123456789-01-F001-000123.zip"
    }
}

Ejemplos completos compatibles con SUNAT.

Estos escenarios son los mismos que contiene la colección descargable de Postman. Abre un caso para copiar la ruta y el body JSON; configura siempre tu propia API key.

Facturas - casos completos 42 ejemplos
POST Factura gravada y exonerada {{base_url}}/api/v1/invoices
Body JSON
{

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-15",
    "fecha_vencimiento": "2025-10-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE SAC",
      "nombre_comercial": "Cliente Comercial",
      "direccion": "Av. Los Negocios 123, Miraflores",
      "ubigeo": "150140",
      "distrito": "Miraflores",
      "provincia": "Lima",
      "departamento": "Lima",
      "telefono": "01-2345678",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Laptop HP Pavilion 15.6\" Intel Core i5",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 2542.37,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43211507"
      },
      {
        "codigo": "LIBRO001",
        "descripcion": "Libro de matemáticas educativo",
        "unidad": "NIU",
        "cantidad": 5,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55101500"
      },
      {
        "codigo": "MED001",
        "descripcion": "Medicamento genérico - Paracetamol 500mg",
        "unidad": "NIU",
        "cantidad": 10,
        "mto_valor_unitario": 12.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      },
      {
        "codigo": "SERV001",
        "descripcion": "Servicio de instalación y configuración",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 847.46,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "81112200"
      }
    ],
    "usuario_creacion": "admin"
  }
POST Factura Exonerada - Material Educativo {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Exonerada - Material Educativo",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "UNIVERSIDAD SAN MARCOS",
      "direccion": "Av. Universitaria 123, Lima",
      "telefono": "01-2345678",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "LIB001",
        "descripcion": "LIBRO DE TEXTO - Matemáticas Avanzadas para Ingeniería",
        "unidad": "NIU",
        "cantidad": 500,
        "mto_valor_unitario": 85.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55101500"
      },
      {
        "codigo": "REV001",
        "descripcion": "REVISTA CIENTÍFICA - Investigación en Ciencias Vol. 2025",
        "unidad": "NIU",
        "cantidad": 200,
        "mto_valor_unitario": 45.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55102000"
      }
    ],
    "usuario_creacion": "educacion01"
  }
POST Factura Exonerada - Medicamentos {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Exonerada - Medicamentos",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20234567890",
      "razon_social": "HOSPITAL NACIONAL DOS DE MAYO",
      "direccion": "Av. Grau 13, Cercado de Lima"
    },
    "detalles": [
      {
        "codigo": "MED001",
        "descripcion": "PARACETAMOL 500mg - Tableta (uso humano)",
        "unidad": "NIU",
        "cantidad": 10000,
        "mto_valor_unitario": 0.25,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      },
      {
        "codigo": "MED002",
        "descripcion": "AMOXICILINA 500mg - Cápsula (uso humano)",
        "unidad": "NIU",
        "cantidad": 5000,
        "mto_valor_unitario": 0.80,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51121500"
      },
      {
        "codigo": "MED003",
        "descripcion": "INSULINA HUMANA - Vial 10ml (uso diabético)",
        "unidad": "NIU",
        "cantidad": 500,
        "mto_valor_unitario": 45.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51181500"
      }
    ]
  }
POST Factura Exonerada - Alimentos de Primera Necesidad {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Exonerada - Alimentos Primera Necesidad",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20345678901",
      "razon_social": "PROGRAMA NACIONAL DE ALIMENTACION ESCOLAR",
      "direccion": "Jr. Carabaya 650, Cercado de Lima"
    },
    "detalles": [
      {
        "codigo": "ALI001",
        "descripcion": "LECHE EVAPORADA ENTERA - Lata 410g",
        "unidad": "NIU",
        "cantidad": 2000,
        "mto_valor_unitario": 4.20,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "04029100"
      },
      {
        "codigo": "ALI002",
        "descripcion": "HARINA DE TRIGO FORTIFICADA - Bolsa 50kg",
        "unidad": "SA",
        "cantidad": 100,
        "mto_valor_unitario": 95.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "11010000"
      },
      {
        "codigo": "ALI003",
        "descripcion": "ACEITE VEGETAL COMESTIBLE - Bidón 20 litros",
        "unidad": "NIU",
        "cantidad": 150,
        "mto_valor_unitario": 65.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "15079000"
      }
    ]
  }
POST Factura Exonerada - Servicios Educativos {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Exonerada - Servicios Educativos",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20345678901",
      "razon_social": "JUAN CARLOS MENDOZA TORRES",
      "direccion": "Av. Los Estudiantes 789, San Borja"
    },
    "detalles": [
      {
        "codigo": "EDU001",
        "descripcion": "MATRÍCULA ANUAL - Carrera de Ingeniería de Sistemas",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 1200.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "86121600"
      },
      {
        "codigo": "EDU002",
        "descripcion": "MENSUALIDAD MARZO 2025 - Carrera de Ingeniería",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 850.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "86121600"
      }
    ]
  }
POST Factura Exonerada - Servicios Médicos {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Exonerada - Servicios Médicos",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20456789012",
      "razon_social": "ESSALUD - HOSPITAL REBAGLIATI",
      "direccion": "Av. Rebagliati 490, Jesús María"
    },
    "detalles": [
      {
        "codigo": "MED101",
        "descripcion": "CONSULTA MÉDICA ESPECIALIZADA - Cardiología",
        "unidad": "ZZ",
        "cantidad": 50,
        "mto_valor_unitario": 120.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "85121500"
      },
      {
        "codigo": "MED102",
        "descripcion": "EXAMEN RADIOLÓGICO - Rayos X Tórax",
        "unidad": "ZZ",
        "cantidad": 30,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "85121600"
      },
      {
        "codigo": "MED103",
        "descripcion": "ANÁLISIS CLÍNICO - Hemograma completo",
        "unidad": "ZZ",
        "cantidad": 100,
        "mto_valor_unitario": 35.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "85121700"
      }
    ]
  }
POST Factura gravada (Credito) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
  "scenario": "Factura Crédito 2 (3 Cuotas)",

  "branch_id": 2,
  "serie": "F001",
  "fecha_emision": "2025-09-04",
  "fecha_vencimiento": "2025-12-04",
  "moneda": "PEN",
  "tipo_operacion": "0101",
  "forma_pago_tipo": "Credito",
  "forma_pago_cuotas": [
    {
      "moneda": "PEN",
      "monto": 2360.00,
      "fecha_pago": "2025-10-04"
    },
    {
      "moneda": "PEN",
      "monto": 2360.00,
      "fecha_pago": "2025-11-04"
    },
    {
      "moneda": "PEN",
      "monto": 2360.00,
      "fecha_pago": "2025-12-04"
    }
  ],
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20444555666",
    "razon_social": "CONSTRUCTORA DEL NORTE SAC",
    "direccion": "Av. La Marina 2000, San Miguel"
  },
  "detalles": [
    {
      "codigo": "MAQ001",
      "descripcion": "Mezcladora de concreto industrial",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 6000.00,
      "porcentaje_igv": 18,
      "tip_afe_igv": "10"
    }
  ]
}
POST Factura exonerada (Credito) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Exonerada al Crédito (3 Cuotas)",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-12-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Credito",
    "forma_pago_cuotas": [
      {
        "moneda": "PEN",
        "monto": 2000.00,
        "fecha_pago": "2025-10-04"
      },
      {
        "moneda": "PEN",
        "monto": 2000.00,
        "fecha_pago": "2025-11-04"
      },
      {
        "moneda": "PEN",
        "monto": 2000.00,
        "fecha_pago": "2025-12-04"
      }
    ],
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "INSTITUTO EDUCATIVO PERUANO SAC",
      "direccion": "Av. Educación 123, San Borja"
    },
    "detalles": [
      {
        "codigo": "LIB001",
        "descripcion": "Libros de matemáticas educativas - Paquete completo",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 6000.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20"
      }
    ]
  }
POST Factura gratuita {{base_url}}/api/v1/invoices
Body JSON
 {
    "scenario": "Factura Gratuita Corregida",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "DISTRIBUIDORA NORTE PERU SAC",
      "direccion": "Av. Promociones 456, San Isidro"
    },
    "detalles": [
      {
        "codigo": "P001",
        "descripcion": "Muestra gratuita - Shampoo anticaspa 50ml",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "11"
      },
      {
        "codigo": "P002",
        "descripcion": "Premio promocional - Crema hidratante 30ml",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 50.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "13"
      }
    ]
  }
POST Factura con items gravado, exonerado, inafecto y gratuitos. {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Mixta Completa (Gravado + Exonerado + Inafecto + Gratuito)",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-10-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20567890123",
      "razon_social": "EMPRESA COMERCIAL MULTIRUBRO SAC",
      "direccion": "Av. Los Comerciantes 789, Miraflores",
      "telefono": "01-5678901",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "GRAV001",
        "descripcion": "Laptop Dell Inspiron 15 - Uso comercial",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 2500.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43211507"
      },
      {
        "codigo": "EXON001",
        "descripcion": "Libro de contabilidad empresarial - Manual técnico",
        "unidad": "NIU",
        "cantidad": 5,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55101500"
      },
      {
        "codigo": "INAF001",
        "descripcion": "Arroz integral orgánico - Bolsa 5kg",
        "unidad": "NIU",
        "cantidad": 10,
        "mto_valor_unitario": 25.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "50161500"
      },
      {
        "codigo": "GRAT001",
        "descripcion": "Muestra promocional - USB publicitario 16GB",
        "unidad": "NIU",
        "cantidad": 20,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 15.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "11",
        "codigo_producto_sunat": "43172000"
      },
      {
        "codigo": "GRAV002",
        "descripcion": "Servicio de consultoría empresarial",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 1500.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "80111500"
      }
    ],
    "usuario_creacion": "vendedor03"
  }
POST Factura con IVAP (Arroz pilado) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20567890123",
      "razon_social": "DISTRIBUIDORA DE ARROZ DEL NORTE SAC"
    },
    "detalles": [
      {
        "codigo": "A001",
        "descripcion": "ARROZ PILADO EXTRA - Saco 50kg",
        "unidad": "SA",
        "cantidad": 100,
        "mto_valor_unitario": 120.00,
        "porcentaje_igv": 4,
        "tip_afe_igv": "17"
      }
    ]
  }
POST Factura con ISC (Cigarrillos, alchol, y troos) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura con ISC - Productos gravados",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20456789123",
      "razon_social": "COMERCIALIZADORA DE BEBIDAS SAC",
      "direccion": "Av. Las Licoreras 789, Miraflores",
      "telefono": "01-7890123",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "CIG001",
        "descripcion": "CIGARRILLOS MARLBORO RED - Cajetilla 20 unidades",
        "unidad": "NIU",
        "cantidad": 50,
        "mto_valor_unitario": 12.00,
        "tip_sis_isc": "01",
        "porcentaje_isc": 158,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "24021000"
      },
      {
        "codigo": "LIC001",
        "descripcion": "WHISKY JOHNNIE WALKER RED LABEL - Botella 750ml",
        "unidad": "NIU",
        "cantidad": 20,
        "mto_valor_unitario": 85.00,
        "tip_sis_isc": "01",
        "porcentaje_isc": 30,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "22083000"
      },
      {
        "codigo": "CERV001",
        "descripcion": "CERVEZA CRISTAL - Caja 24 botellas 630ml",
        "unidad": "NIU",
        "cantidad": 30,
        "mto_valor_unitario": 42.00,
        "tip_sis_isc": "01",
        "porcentaje_isc": 25,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "22030000"
      }
    ],
    "usuario_creacion": "comercial01"
  }
POST Factura con detracción | Código 001 - Azúcar (10%) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Detracción 001 - Azúcar",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "1001",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111111111",
      "razon_social": "INDUSTRIA ALIMENTARIA DULCE SAC",
      "direccion": "Av. La Dulzura 123, Lima"
    },
    "detalles": [
      {
        "codigo": "AZ001",
        "descripcion": "AZÚCAR RUBIA COMERCIAL - Saco 50kg",
        "unidad": "SA",
        "cantidad": 100,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "detraccion": {
      "codigo_bien_servicio": "001",
      "codigo_medio_pago": "001",
      "cuenta_banco": "00-12345-0111111111",
      "porcentaje": 10.0,
      "monto": 944.00
    }
  }
POST Factura con detracción | Código 003 - Alcohol Etílico (10%) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Detracción 003 - Alcohol Etílico",

    "branch_id": 2,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "1001",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20222222222",
      "razon_social": "DESTILERIA INDUSTRIAL PERU SAC",
      "direccion": "Av. Los Alcoholes 456, Callao"
    },
    "detalles": [
      {
        "codigo": "ALC001",
        "descripcion": "ALCOHOL ETÍLICO 96° - Tambor 200 litros",
        "unidad": "LTR",
        "cantidad": 1000,
        "mto_valor_unitario": 15.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "detraccion": {
      "codigo_bien_servicio": "003",
      "codigo_medio_pago": "002",
      "cuenta_banco": "00000-12345-0222222",
      "porcentaje": 10.0,
      "monto": 1770.00
    }
  }
POST Factura con contingencia (Falta de internet, .. otros) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura de Contingencia - Falta de Internet",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA COMERCIAL CONTINGENCIA SAC",
      "direccion": "Av. Emergencia 123, Lima",
      "telefono": "01-1234567",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "SERVICIO DE EMERGENCIA - Reparación urgente de equipos",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 2500.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "81112000"
      },
      {
        "codigo": "PROD002",
        "descripcion": "REPUESTOS DE EMERGENCIA - Kit de componentes críticos",
        "unidad": "NIU",
        "cantidad": 5,
        "mto_valor_unitario": 300.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "40141600"
      }
    ],
    "datos_adicionales": {
      "motivo_contingencia": "FALTA_DE_INTERNET",
      "observaciones": "Factura emitida por contingencia debido a falta de conectividad a internet desde las 08:00 hasta las 14:30 del día 04/09/2025. Se procederá con el envío a SUNAT una vez restablecida la conexión.",
      "fecha_inicio_contingencia": "2025-09-04 08:00:00",
      "fecha_fin_contingencia": "2025-09-04 14:30:00",
      "numero_contingencia": "CONT-2025-0001"
    },
    "usuario_creacion": "operador_contingencia"
  }



















POST Factura Inafecta - Venta de Inmuebles {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Inafecta - Venta de Inmuebles",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "fecha_vencimiento": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "INVERSIONES INMOBILIARIAS SAC",
      "direccion": "Av. Los Bienes Raíces 456, San Isidro",
      "telefono": "01-2345678",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "INM001",
        "descripcion": "VENTA DE TERRENO URBANO - Lote 15 Mz A, 200 m²",
        "unidad": "MTK",
        "cantidad": 200,
        "mto_valor_unitario": 2500.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "70111500"
      }
    ],
    "usuario_creacion": "inmobiliaria01"
  }
POST Factura Inafecta - Servicios Financieros {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Inafecta - Servicios Financieros",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20234567890",
      "razon_social": "CORPORACION EMPRESARIAL SAC",
      "direccion": "Av. Las Finanzas 789, Miraflores"
    },
    "detalles": [
      {
        "codigo": "FIN001",
        "descripcion": "INTERESES POR PRÉSTAMO COMERCIAL - Período Enero 2025",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 15000.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30"
      },
      {
        "codigo": "FIN002",
        "descripcion": "COMISIÓN POR MANTENIMIENTO DE CUENTA CORRIENTE",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 500.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30"
      }
    ]
  }
POST Factura Inafecta - Seguros {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Inafecta - Seguros",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20345678901",
      "razon_social": "TRANSPORTES SEGUROS SAC",
      "direccion": "Av. Los Transportistas 123, Villa El Salvador"
    },
    "detalles": [
      {
        "codigo": "SEG001",
        "descripcion": "SEGURO VEHICULAR TODO RIESGO - Póliza anual camión",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 8500.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "86121500"
      },
      {
        "codigo": "SEG002",
        "descripcion": "SEGURO DE CARGA - Cobertura mercancías en tránsito",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 3200.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "86121600"
      }
    ]
  }
POST Factura Inafecta - Oro y Metales Preciosos {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{
    "scenario": "Factura Inafecta - Oro y Metales Preciosos",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20456789012",
      "razon_social": "JOYERIA EXCLUSIVA SAC",
      "direccion": "Av. Los Orfebres 456, Lima Centro"
    },
    "detalles": [
      {
        "codigo": "ORO001",
        "descripcion": "ORO EN BRUTO 18K - Lingote certificado",
        "unidad": "GRM",
        "cantidad": 100,
        "mto_valor_unitario": 280.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "71081300"
      },
      {
        "codigo": "PLA001",
        "descripcion": "PLATA EN BRUTO 925 - Lingote certificado",
        "unidad": "GRM",
        "cantidad": 500,
        "mto_valor_unitario": 4.50,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "71069200"
      }
    ]
  }
POST Factura Inafecta - Servicios de Transporte Público {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {
    "scenario": "Factura Inafecta - Transporte Público",

    "branch_id": 1,
    "serie": "F001",
    "fecha_emision": "2025-09-04",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "6",
      "numero_documento": "20567890123",
      "razon_social": "PROTRANSPORTE - MUNICIPALIDAD DE LIMA",
      "direccion": "Av. Garcilaso de la Vega s/n, Lima"
    },
    "detalles": [
      {
        "codigo": "TRP001",
        "descripcion": "SERVICIO DE TRANSPORTE PÚBLICO METROPOLITANO - Buses",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 45000.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "78111800"
      }
    ]
  }
POST Factura con percepcion {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "client_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "167",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "observaciones": "Factura con sistema de percepciones - Régimen 51",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO CON PERCEPCIÓN",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "perception": {
      "cod_reg": "51",
      "porcentaje": 2.00,
      "mto_base": 200.00,
      "mto": 4.00,
      "mto_total": 204.00
    }
  }
POST Factura con percepcion al credito {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "169",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "COMERCIALIZADORA NORTE SAC",
      "direccion": "AV. INDUSTRIAL 789, TRUJILLO"
    },

    "detalles": [
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO COMERCIAL CON PERCEPCIÓN",
        "cantidad": 3,
        "mto_valor_unitario": 200.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 236.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 236.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-04-15",
        "monto": 236.00,
        "moneda": "PEN"
      }
    ],

    "perception": {
      "cod_reg": "51",
      "porcentaje": 2.00,
      "mto_base": 600.00,
      "mto": 12.00,
      "mto_total": 612.00
    }
  }
POST Factura con Retención (Cargo) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "168",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO CON RETENCIÓN",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "62",
        "monto_base": 236.00,
        "factor": 0.03,
        "monto": 7.08
      }
    ]
  }
POST Factura con Retención (Documento independiente) {{base_url}}/api/v1/retentions/{{retention_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "serie": "R001",
    "correlativo": "123",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "regimen": "01",
    "tasa": 3.0,
    "imp_retenido": 10.00,
    "imp_pagado": 200.00,
    "observacion": "Comprobante de retención por servicios profesionales",

    "proveedor": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "PROVEEDOR DE SERVICIOS SAC",
      "direccion": "AV. PROVEEDOR 456, LIMA"
    },

    "detalles": [
      {
        "tipo_doc": "01",
        "num_doc": "F001-001",
        "fecha_emision": "2025-01-10",
        "fecha_retencion": "2025-01-15",
        "moneda": "PEN",
        "imp_total": 210.00,
        "imp_pagar": 200.00,
        "imp_retenido": 10.00,
        "pagos": [
          {
            "moneda": "PEN",
            "fecha": "2025-01-15",
            "importe": 100.00
          }
        ],
        "tipo_cambio": {
          "fecha": "2025-01-15",
          "factor": 1.000,
          "moneda_obj": "PEN",
          "moneda_ref": "PEN"
        }
      }
    ]
  }
POST Factura con Exportación {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "126",
    "fecha_emision": "2025-01-15",
    "moneda": "USD",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "0",
      "numero_documento": "-",
      "razon_social": "IMPORTADORA INTERNACIONAL LTDA",
      "direccion": "AV. COMERCIO 456, BOGOTÁ, COLOMBIA"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 500.00,
        "moneda": "USD"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 500.00,
        "moneda": "USD"
      }
    ],

    "detalles": [
      {
        "codigo": "CAFE001",
        "codigo_producto_sunat": "09011190",
        "unidad": "KG",
        "descripcion": "CAFÉ TOSTADO EN GRANO PREMIUM",
        "cantidad": 500,
        "mto_valor_unitario": 1.50,
        "porcentaje_igv": 0,
        "tip_afe_igv": "40"
      },
      {
        "codigo": "CACAO001",
        "codigo_producto_sunat": "18030000",
        "unidad": "KG",
        "descripcion": "CACAO EN POLVO NATURAL",
        "cantidad": 200,
        "mto_valor_unitario": 1.25,
        "porcentaje_igv": 0,
        "tip_afe_igv": "40"
      }
    ],

    "tipo_operacion": "0200"
  }
POST Factura con anticipo {{base_url}}/api/v1/invoices/{{invoice_id}}/sent-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "143",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con anticipo aplicado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE CON ANTICIPO SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO CON ANTICIPO",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "04",
        "factor": 1.0,
        "monto": 100.00,
        "monto_base": 100.00
      }
    ],

    "anticipos": [
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "F001-111",
        "total": 100.00
      }
    ]
  }
POST Factura con múltiples anticipos {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "144",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "CONSTRUCTORA GRANDES PROYECTOS SAC",
      "direccion": "AV. CONSTRUCCIÓN 789, AREQUIPA"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 400.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 400.00,
        "moneda": "PEN"
      }
    ],

    "detalles": [
      {
        "codigo": "SERV001",
        "unidad": "ZZ",
        "descripcion": "SERVICIOS DE CONSTRUCCIÓN FASE 1",
        "cantidad": 1,
        "mto_valor_unitario": 5000.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "04",
        "factor": 1.0,
        "monto": 1500.00,
        "monto_base": 1500.00
      }
    ],

    "anticipos": [
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "A001-001",
        "total": 500.00
      },
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "A001-002",
        "total": 500.00
      },
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "A001-003",
        "total": 500.00
      }
    ]
  }
POST Factura ICBPER - Bolsas Vendidas {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 2,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "129",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con ICBPER - Bolsas vendidas",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "SUPERMERCADO CLIENTE SAC",
      "direccion": "AV. COMERCIAL 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO PRINCIPAL",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "P002",
        "unidad": "NIU",
        "descripcion": "BOLSA DE PLÁSTICO",
        "cantidad": 4,
        "mto_valor_unitario": 0.05,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "factor_icbper": 0.20,
        "icbper": 0.80
      }
    ],

    "redondeo": 0.04
  }
POST Factura ICBPER - Bolsas Gratuitas {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "130",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con ICBPER - Bolsas gratuitas",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "TIENDA RETAIL SAC",
      "direccion": "JR. COMERCIO 456, AREQUIPA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO PRINCIPAL",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "P002",
        "unidad": "NIU",
        "descripcion": "BOLSA DE PLÁSTICO GRATUITA",
        "cantidad": 2,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 0.05,
        "porcentaje_igv": 18,
        "tip_afe_igv": "13",
        "factor_icbper": 0.20,
        "icbper": 0.40
      }
    ]
  }
POST Factura ICBPER - Múltiples Tipos de Bolsas {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "131",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "CENTRO COMERCIAL PLAZA SAC",
      "direccion": "AV. PRINCIPAL 789, TRUJILLO"
    },

    "detalles": [
      {
        "codigo": "SERV001",
        "unidad": "ZZ",
        "descripcion": "SERVICIO DE VENTA",
        "cantidad": 1,
        "mto_valor_unitario": 500.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "BOLSA001",
        "unidad": "NIU",
        "descripcion": "BOLSA PEQUEÑA DE PLÁSTICO",
        "cantidad": 3,
        "mto_valor_unitario": 0.03,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "factor_icbper": 0.20,
        "icbper": 0.60
      },
      {
        "codigo": "BOLSA002",
        "unidad": "NIU",
        "descripcion": "BOLSA GRANDE DE PLÁSTICO",
        "cantidad": 2,
        "mto_valor_unitario": 0.08,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "factor_icbper": 0.20,
        "icbper": 0.40
      },
      {
        "codigo": "BOLSA003",
        "unidad": "NIU",
        "descripcion": "BOLSA BIODEGRADABLE GRATUITA",
        "cantidad": 1,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 0.10,
        "porcentaje_igv": 18,
        "tip_afe_igv": "13",
        "factor_icbper": 0.20,
        "icbper": 0.20
      }
    ]
  }
POST Factura con Referencia a Guía de Remisión {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "223",
    "fecha_emision": "2025-01-15",
    "fecha_vencimiento": "2025-02-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura relacionada con guía de remisión",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE CON GUÍA SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO CON GUÍA DE REMISIÓN",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "guias": [
      {
        "tipo_doc": "09",
        "nro_doc": "T001-2"
      }
    ]
  }
POST Factura con Múltiples Guías de Remisión {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "224",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "DISTRIBUIDORA COMERCIAL EIRL",
      "direccion": "JR. COMERCIO 456, AREQUIPA"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 826.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 826.00,
        "moneda": "PEN"
      }
    ],

    "detalles": [
      {
        "codigo": "PROD001",
        "unidad": "KG",
        "descripcion": "PRODUCTO LOTE A - REMESA 1",
        "cantidad": 100,
        "mto_valor_unitario": 5.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD002",
        "unidad": "KG",
        "descripcion": "PRODUCTO LOTE B - REMESA 2",
        "cantidad": 150,
        "mto_valor_unitario": 4.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD003",
        "unidad": "KG",
        "descripcion": "PRODUCTO LOTE C - REMESA 3",
        "cantidad": 80,
        "mto_valor_unitario": 3.75,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "guias": [
      {
        "tipo_doc": "09",
        "nro_doc": "T001-101"
      },
      {
        "tipo_doc": "09",
        "nro_doc": "T001-102"
      },
      {
        "tipo_doc": "09",
        "nro_doc": "T001-103"
      }
    ]
  }
POST Factura con Guía de Remisión del Transportista {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "225",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "ALMACENES GENERALES SAC",
      "direccion": "AV. INDUSTRIAL 789, CALLAO"
    },

    "detalles": [
      {
        "codigo": "MAT001",
        "unidad": "TNE",
        "descripcion": "MATERIA PRIMA INDUSTRIAL",
        "cantidad": 5,
        "mto_valor_unitario": 2000.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "guias": [
      {
        "tipo_doc": "31",
        "nro_doc": "GRT001-001"
      }
    ]
  }
POST Factura con Descuento por Línea (Afecta Base Imponible) {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 2,
    "tipo_doc": "01",
    "serie": "FE01",
    "correlativo": "1",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con descuento por línea que afecta base imponible",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE CON DESCUENTO SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "CUADERNOS CON DESCUENTO",
        "cantidad": 10,
        "mto_valor_unitario": 2.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "00",
            "monto_base": 20.00,
            "factor": 0.20,
            "monto": 4.00
          }
        ]
      },
      {
        "codigo": "P002",
        "unidad": "NIU",
        "descripcion": "RADIO SIN DESCUENTO",
        "cantidad": 1,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ]
  }
POST Factura con Descuento Lineal por Cantidad {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "125",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "MAYORISTA PRODUCTOS SAC",
      "direccion": "AV. MAYORISTA 456, AREQUIPA"
    },

    "detalles": [
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO AL POR MAYOR - DESCUENTO 15%",
        "cantidad": 50,
        "mto_valor_unitario": 10.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "00",
            "monto_base": 500.00,
            "factor": 0.15,
            "monto": 75.00
          }
        ]
      },
      {
        "codigo": "PROD002",
        "unidad": "NIU",
        "descripcion": "PRODUCTO PREMIUM - DESCUENTO 10%",
        "cantidad": 20,
        "mto_valor_unitario": 25.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "00",
            "monto_base": 500.00,
            "factor": 0.10,
            "monto": 50.00
          }
        ]
      }
    ]
  }
POST Factura con Descuento Promocional por Línea {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "fecha_emision": "2025-09-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "CLIENTE VIP CORPORATIVO SAC",
      "direccion": "AV. CORPORATIVA 789, TRUJILLO"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-09-20",
        "monto": 649.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-10-20",
        "monto": 649.00,
        "moneda": "PEN"
      }
    ],

    "detalles": [
      {
        "codigo": "SERV001",
        "unidad": "ZZ",
        "descripcion": "SERVICIO CONSULTORÍA - DESCUENTO CLIENTE VIP 25%",
        "cantidad": 1,
        "mto_valor_unitario": 1000.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "00",
            "monto_base": 1000.00,
            "factor": 0.25,
            "monto": 250.00
          }
        ]
      },
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO ADICIONAL SIN DESCUENTO",
        "cantidad": 2,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ]
  }
POST Factura con Descuento Global que Afecta Base Imponible {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "84",
    "fecha_emision": "2025-01-15",
    "fecha_vencimiento": "2025-02-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con descuento global que afecta base imponible",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE CON DESCUENTO GLOBAL SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P001",
        "unidad": "NIU",
        "descripcion": "CUADERNOS",
        "cantidad": 10,
        "mto_valor_unitario": 2.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "P002",
        "unidad": "NIU",
        "descripcion": "LAPICEROS",
        "cantidad": 25,
        "mto_valor_unitario": 2.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "02",
        "monto_base": 3.00,
        "factor": 1.0,
        "monto": 3.00
      }
    ]
  }
POST Factura con Descuento Global Porcentual {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "85",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "CLIENTE CORPORATIVO SAC",
      "direccion": "AV. CORPORATIVA 456, AREQUIPA"
    },

    "detalles": [
      {
        "codigo": "SERV001",
        "unidad": "ZZ",
        "descripcion": "SERVICIO DE CONSULTORÍA",
        "cantidad": 1,
        "mto_valor_unitario": 1000.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO COMPLEMENTARIO",
        "cantidad": 5,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "02",
        "monto_base": 1500.00,
        "factor": 0.10,
        "monto": 150.00
      }
    ]
  }
POST Factura con Descuento Global por Volumen {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "86",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "MAYORISTA PREMIUM SAC",
      "direccion": "AV. MAYORISTA 789, TRUJILLO"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 1032.50,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 1032.50,
        "moneda": "PEN"
      }
    ],

    "detalles": [
      {
        "codigo": "PROD001",
        "unidad": "KG",
        "descripcion": "MATERIA PRIMA A",
        "cantidad": 100,
        "mto_valor_unitario": 5.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD002",
        "unidad": "KG",
        "descripcion": "MATERIA PRIMA B",
        "cantidad": 200,
        "mto_valor_unitario": 4.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD003",
        "unidad": "KG",
        "descripcion": "MATERIA PRIMA C",
        "cantidad": 150,
        "mto_valor_unitario": 3.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "02",
        "monto_base": 1750.00,
        "factor": 0.05,
        "monto": 87.50
      }
    ]
  }
POST Factura con Descuentos Lineal y Global que NO Afectan Base Imponible {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "FD01",
    "correlativo": "1",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",
    "tipo_operacion": "0101",
    "observaciones": "Factura con descuentos que no afectan la base imponible",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20123456789",
      "razon_social": "EMPRESA CLIENTE CON DESCUENTOS SAC",
      "direccion": "AV. CLIENTE 123, LIMA"
    },

    "detalles": [
      {
        "codigo": "P004",
        "unidad": "NIU",
        "descripcion": "PRODUCTO CON DESCUENTO LINEAL NO BASE",
        "cantidad": 10,
        "mto_valor_unitario": 2.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "01",
            "monto_base": 20.00,
            "factor": 0.20,
            "monto": 4.00
          }
        ]
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "03",
        "monto_base": 3.00,
        "factor": 1.0,
        "monto": 3.00
      }
    ]
  }
POST Factura con Descuentos Promocionales que NO Afectan Base {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
 {

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "150",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Contado",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20987654321",
      "razon_social": "CLIENTE PROMOCIONAL SAC",
      "direccion": "AV. PROMOCIONES 456, AREQUIPA"
    },

    "detalles": [
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO PREMIUM - DESCUENTO FIDELIDAD",
        "cantidad": 5,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "01",
            "monto_base": 500.00,
            "factor": 0.15,
            "monto": 75.00
          }
        ]
      },
      {
        "codigo": "PROD002",
        "unidad": "NIU",
        "descripcion": "PRODUCTO ESTÁNDAR",
        "cantidad": 3,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "03",
        "monto_base": 740.00,
        "factor": 0.05,
        "monto": 37.00
      }
    ]
  }
POST Factura con Múltiples Descuentos que NO Afectan Base {{base_url}}/api/v1/invoices/{{invoice_id}}/send-sunat
Body JSON
{

    "branch_id": 1,
    "tipo_doc": "01",
    "serie": "F001",
    "correlativo": "151",
    "fecha_emision": "2025-01-15",
    "moneda": "PEN",
    "forma_pago_tipo": "Credito",

    "client": {
      "tipo_documento": "6",
      "numero_documento": "20111222333",
      "razon_social": "CLIENTE CORPORATIVO VIP SAC",
      "direccion": "AV. CORPORATIVA 789, TRUJILLO"
    },

    "forma_pago_cuotas": [
      {
        "fecha_pago": "2025-02-15",
        "monto": 826.00,
        "moneda": "PEN"
      },
      {
        "fecha_pago": "2025-03-15",
        "monto": 826.00,
        "moneda": "PEN"
      }
    ],

    "detalles": [
      {
        "codigo": "SERV001",
        "unidad": "ZZ",
        "descripcion": "SERVICIO CONSULTORÍA - DESCUENTO LEALTAD",
        "cantidad": 1,
        "mto_valor_unitario": 800.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "01",
            "monto_base": 800.00,
            "factor": 0.10,
            "monto": 80.00
          }
        ]
      },
      {
        "codigo": "PROD001",
        "unidad": "NIU",
        "descripcion": "PRODUCTO COMPLEMENTARIO - DESCUENTO VOLUMEN",
        "cantidad": 4,
        "mto_valor_unitario": 150.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "01",
            "monto_base": 600.00,
            "factor": 0.08,
            "monto": 48.00
          }
        ]
      }
    ],

    "descuentos": [
      {
        "cod_tipo": "03",
        "monto_base": 1400.00,
        "factor": 0.03,
        "monto": 42.00
      }
    ]
  }
Boletas - casos completos 27 ejemplos
POST Boleta gravada y exonerada {{base_url}}/api/v1/boletas
Body JSON
{
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-06-09",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "12345678",
      "razon_social": "María Elena García Sánchez",
      "nombre_comercial": "María García",
      "direccion": "Av. Los Negocios 456, San Isidro",
      "ubigeo": "150130",
      "distrito": "San Isidro",
      "provincia": "Lima",
      "departamento": "Lima",
      "telefono": "01-9876543",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "LAPTOP001",
        "descripcion": "Laptop HP Pavilion 15.6\" Intel Core i5 8GB RAM",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 2542.37,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43211507"
      },
      {
        "codigo": "LIBRO001",
        "descripcion": "Libro de matemáticas educativo nivel secundaria",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55101500"
      },
      {
        "codigo": "MED001",
        "descripcion": "Medicamento genérico - Paracetamol 500mg",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 12.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      },
      {
        "codigo": "SERV001",
        "descripcion": "Servicio de instalación y configuración",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 169.49,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "81112200"
      }
    ],
    "usuario_creacion": "vendedor01"
  }
POST Boleta Exonerada - Material Educativo {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Exonerada - Material Educativo",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "individual",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "87654321",
      "razon_social": "Carlos Alberto Mendoza Torres",
      "direccion": "Jr. Educación 789, Pueblo Libre",
      "telefono": "01-7654321",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "LIB001",
        "descripcion": "LIBRO DE TEXTO - Matemáticas Avanzadas para Secundaria",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 85.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55101500"
      },
      {
        "codigo": "REV001",
        "descripcion": "REVISTA CIENTÍFICA - Investigación en Ciencias Vol. 2025",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 45.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55102000"
      },
      {
        "codigo": "CUA001",
        "descripcion": "CUADERNOS UNIVERSITARIOS A4 x 100 hojas (Pack x5)",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 25.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "55121500"
      }
    ],
    "usuario_creacion": "educacion01"
  }
POST Boleta Exonerada - Medicamentos {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Exonerada - Medicamentos",
    "branch_id": 2,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "11223344",
      "razon_social": "Ana Sofía Vásquez Ramírez",
      "direccion": "Av. Salud 456, La Victoria",
      "telefono": "01-5551234",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "MED001",
        "descripcion": "PARACETAMOL 500mg - Caja x 100 tabletas",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 15.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      },
      {
        "codigo": "MED002",
        "descripcion": "IBUPROFENO 400mg - Caja x 50 cápsulas",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 25.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      },
      {
        "codigo": "MED003",
        "descripcion": "JARABE PARA LA TOS - Frasco 120ml",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 18.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "51161500"
      }
    ],
    "usuario_creacion": "farmacia01"
  }
POST Boleta Exonerada - Alimentos de Primera Necesidad {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Exonerada - Alimentos de Primera Necesidad",
    "branch_id": 2,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "99887766",
      "razon_social": "Roberto Carlos Chávez Gonzáles",
      "direccion": "Jr. Mercado 123, Cercado de Lima",
      "telefono": "01-9988776",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "ALM001",
        "descripcion": "ARROZ SUPERIOR - Saco 50kg",
        "unidad": "KGM",
        "cantidad": 1,
        "mto_valor_unitario": 95.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "10061700"
      },
      {
        "codigo": "ALM002",
        "descripcion": "FREJOL CANARIO - Saco 25kg",
        "unidad": "KGM",
        "cantidad": 1,
        "mto_valor_unitario": 85.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "10051500"
      },
      {
        "codigo": "ALM003",
        "descripcion": "AZÚCAR RUBIA - Bolsa 5kg",
        "unidad": "KGM",
        "cantidad": 2,
        "mto_valor_unitario": 18.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20",
        "codigo_producto_sunat": "50401500"
      }
    ],
    "usuario_creacion": "abarrotes01"
  }
POST Boleta Gravada - Productos Tecnológicos {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Gravada - Productos Tecnológicos",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "55443322",
      "razon_social": "Diego Fernando López Castro",
      "direccion": "Av. Tecnología 789, San Borja",
      "telefono": "01-5544332",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PHONE001",
        "descripcion": "SMARTPHONE Samsung Galaxy A54 128GB",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 1271.19,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43191501"
      },
      {
        "codigo": "CASE001",
        "descripcion": "FUNDA Protectora Transparente + Vidrio Templado",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 42.37,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43191508"
      },
      {
        "codigo": "CHAR001",
        "descripcion": "CARGADOR Rápido USB-C 25W Original",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 84.75,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "43222608"
      }
    ],
    "usuario_creacion": "tecnologia01"
  }
POST Boleta Gratuita - Promocional {{base_url}}/api/v1/boletas
Body JSON
 {
      "branch_id": 1,
      "serie": "B001",
      "fecha_emision": "2025-01-06",
      "moneda": "PEN",
      "tipo_operacion": "0101",
      "metodo_envio": "individual",
      "client": {
          "tipo_documento": "1",
          "numero_documento": "12345678",
          "razon_social": "PATRICIA ELENA MORALES DÍAZ"
      },
      "detalles": [
          {
              "codigo": "P001",
              "descripcion": "Muestra gratuita - Shampoo anticaspa 50ml",
              "unidad": "NIU",
              "cantidad": 1,
              "mto_valor_unitario": 0.00,
              "mto_valor_gratuito": 50.00,
              "porcentaje_igv": 18,
              "tip_afe_igv": "11"
          }
      ]
  }
POST Boleta con IVAP - Arroz Pilado {{base_url}}/api/v1/boletas
Body JSON
 {
      "branch_id": 1,
      "serie": "B001",
      "fecha_emision": "2025-01-06",
      "moneda": "PEN",
      "tipo_operacion": "0101",
      "metodo_envio": "resumen_diario",
      "forma_pago_tipo": "Contado",
      "client": {
          "tipo_documento": "1",
          "numero_documento": "33445566",
          "razon_social": "Luis Alberto Paredes Ruiz",
          "direccion": "Av. Amazonas 321, Iquitos",
          "telefono": "01-3344556",
          "email": "[email protected]"
      },
      "detalles": [
          {
              "codigo": "ARROZ001",
              "descripcion": "ARROZ PILADO Premium - Saco 50kg",
              "unidad": "KGM",
              "cantidad": 2,
              "mto_valor_unitario": 120.00,
              "porcentaje_igv": 4,
              "tip_afe_igv": "17"
          }
      ]
  }
POST Boleta con ISC - Bebidas Alcohólicas {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con ISC - Bebidas Alcohólicas",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "66778899",
      "razon_social": "Fernando José Quispe Mamani",
      "direccion": "Av. Licores 147, Barranco",
      "telefono": "01-6677889",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PISCO001",
        "descripcion": "PISCO Acholado 750ml - Botella",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 84.75,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "isc": 30.51,
        "tipo_sistema_isc": "03",
        "codigo_producto_sunat": "50201700"
      },
      {
        "codigo": "CERVEZA001",
        "descripcion": "CERVEZA Premium 650ml - Pack x6",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 42.37,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "isc": 15.25,
        "tipo_sistema_isc": "03",
        "codigo_producto_sunat": "50202100"
      }
    ],
    "usuario_creacion": "licoreria01"
  }
POST Boleta ICBPER - Bolsas Plásticas {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta ICBPER - Bolsas Plásticas",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "44556677",
      "razon_social": "Carmen Rosa Huamán Salazar",
      "direccion": "Jr. Comercio 963, La Victoria",
      "telefono": "01-4455667",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto Alimenticio Varios",
        "unidad": "NIU",
        "cantidad": 5,
        "mto_valor_unitario": 15.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "codigo_producto_sunat": "50000000"
      },
      {
        "codigo": "BOLSA001",
        "descripcion": "BOLSA PLÁSTICA Grande (Gravada ICBPER)",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 0.50,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "icbper": 0.50,
        "factor_icbper": 1,
        "codigo_producto_sunat": "25181500"
      }
    ],
    "usuario_creacion": "supermarket01"
  }
POST Boleta Inafecta - Servicios Financieros {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Inafecta - Servicios Financieros",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "22334455",
      "razon_social": "Miguel Ángel Torres Fernández",
      "direccion": "Av. Financiera 852, San Isidro",
      "telefono": "01-2233445",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "FIN001",
        "descripcion": "COMISIÓN POR TRANSFERENCIA BANCARIA",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 25.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "80141600"
      },
      {
        "codigo": "FIN002",
        "descripcion": "COMISIÓN POR MANTENIMIENTO DE CUENTA",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 15.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30",
        "codigo_producto_sunat": "80141600"
      }
    ],
    "usuario_creacion": "finanzas01"
  }
POST Boleta con Descuento por Línea {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Descuento por Línea",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "12345678",
      "razon_social": "Juan Pérez López",
      "direccion": "Av. Comercio 123, Lima",
      "telefono": "01-1234567",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto con Descuento 20%",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10",
        "descuentos": [
          {
            "cod_tipo": "00",
            "monto_base": 200.00,
            "factor": 0.20,
            "monto": 40.00
          }
        ]
      },
      {
        "codigo": "PROD002",
        "descripcion": "Producto sin Descuento",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "usuario_creacion": "vendedor01"
  }
POST Boleta con Descuento Global {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Descuento Global",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "87654321",
      "razon_social": "María Rodríguez García",
      "direccion": "Jr. Descuentos 456, Miraflores",
      "telefono": "01-7654321",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto 1",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD002",
        "descripcion": "Producto 2",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 60.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "descuentos": [
      {
        "cod_tipo": "02",
        "monto_base": 360.00,
        "factor": 0.10,
        "monto": 36.00
      }
    ],
    "usuario_creacion": "vendedor02"
  }
POST Boleta con Anticipo {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Anticipo",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "11223344",
      "razon_social": "Carlos Mendoza Torres",
      "direccion": "Av. Anticipos 789, San Isidro",
      "telefono": "01-1122334",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto Principal",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 500.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "anticipos": [
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "BA001-001",
        "total": 100.00
      }
    ],
    "usuario_creacion": "vendedor03"
  }
POST Boleta con Múltiples Anticipos {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Múltiples Anticipos",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "55667788",
      "razon_social": "Ana López Sánchez",
      "direccion": "Jr. Pagos 321, Surco",
      "telefono": "01-5566778",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "SERV001",
        "descripcion": "Servicio Premium",
        "unidad": "ZZ",
        "cantidad": 1,
        "mto_valor_unitario": 1000.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "anticipos": [
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "BA001-002",
        "total": 300.00
      },
      {
        "tipo_doc_rel": "02",
        "nro_doc_rel": "BA001-003",
        "total": 200.00
      }
    ],
    "usuario_creacion": "vendedor04"
  }
POST Boleta con Percepción {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Percepción",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "99887766",
      "razon_social": "Roberto Chávez Gonzáles",
      "direccion": "Av. Percepciones 654, La Molina",
      "telefono": "01-9988776",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto con Percepción",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "perception": {
      "cod_reg": "51",
      "porcentaje": 2.00,
      "mto_base": 200.00,
      "mto": 4.00,
      "mto_total": 204.00
    },
    "usuario_creacion": "vendedor05"
  }
POST Boleta con Retención {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Retención",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "44556677",
      "razon_social": "Laura Martínez Ruiz",
      "direccion": "Av. Retenciones 987, San Borja",
      "telefono": "01-4455667",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto con Retención",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "descuentos": [
      {
        "cod_tipo": "62",
        "monto_base": 283.20,
        "factor": 0.03,
        "monto": 8.50
      }
    ],
    "usuario_creacion": "vendedor06"
  }
POST Boleta con Guía de Remisión {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Guía de Remisión",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "33445566",
      "razon_social": "Pedro Gómez Flores",
      "direccion": "Av. Guías 555, Jesús María",
      "telefono": "01-3344556",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto con Guía",
        "unidad": "NIU",
        "cantidad": 5,
        "mto_valor_unitario": 40.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "guias": [
      {
        "tipo_doc": "09",
        "nro_doc": "T001-1"
      }
    ],
    "usuario_creacion": "vendedor07"
  }
POST Boleta con Múltiples Guías de Remisión {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta con Múltiples Guías de Remisión",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "77889900",
      "razon_social": "Sofía Castro Díaz",
      "direccion": "Jr. Múltiples 222, Lince",
      "telefono": "01-7788990",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "PROD001",
        "descripcion": "Producto Lote A",
        "unidad": "KG",
        "cantidad": 10,
        "mto_valor_unitario": 20.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "PROD002",
        "descripcion": "Producto Lote B",
        "unidad": "KG",
        "cantidad": 15,
        "mto_valor_unitario": 15.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      }
    ],
    "guias": [
      {
        "tipo_doc": "09",
        "nro_doc": "T001-101"
      },
      {
        "tipo_doc": "09",
        "nro_doc": "T001-102"
      }
    ],
    "usuario_creacion": "vendedor08"
  }
POST Boleta Mixta Completa {{base_url}}/api/v1/boletas
Body JSON
{
    "scenario": "Boleta Mixta Completa",
    "branch_id": 1,
    "serie": "B001",
    "fecha_emision": "2025-01-06",
    "moneda": "PEN",
    "tipo_operacion": "0101",
    "metodo_envio": "resumen_diario",
    "forma_pago_tipo": "Contado",
    "client": {
      "tipo_documento": "1",
      "numero_documento": "66778899",
      "razon_social": "Empresa Mixta SAC",
      "direccion": "Av. Completa 777, San Miguel",
      "telefono": "01-6677889",
      "email": "[email protected]"
    },
    "detalles": [
      {
        "codigo": "GRAV001",
        "descripcion": "Producto Gravado",
        "unidad": "NIU",
        "cantidad": 2,
        "mto_valor_unitario": 100.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "10"
      },
      {
        "codigo": "EXON001",
        "descripcion": "Producto Exonerado",
        "unidad": "NIU",
        "cantidad": 3,
        "mto_valor_unitario": 50.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "20"
      },
      {
        "codigo": "INAF001",
        "descripcion": "Producto Inafecto",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 80.00,
        "porcentaje_igv": 0,
        "tip_afe_igv": "30"
      },
      {
        "codigo": "GRAT001",
        "descripcion": "Producto Gratuito",
        "unidad": "NIU",
        "cantidad": 1,
        "mto_valor_unitario": 0.00,
        "mto_valor_gratuito": 25.00,
        "porcentaje_igv": 18,
        "tip_afe_igv": "11"
      }
    ],
    "usuario_creacion": "vendedor09"
  }
POST Generar PDF A4 {{base_url}}/api/v1/invoices/{{\1_id}}/generate-pdf
Body JSON
{
  "format": "A4"
}
POST Generar PDF Ticket 80mm {{base_url}}/api/v1/boletas/{{\1_id}}/generate-pdf
Body JSON
{
  "format": "80mm"
}
GET Descargar PDF {{base_url}}/api/v1/invoices/{{\1_id}}/download-pdf?format=A4
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST Crear Resumen Diario {{base_url}}/api/v1/boletas/create-daily-summary
Body JSON
 {
    "branch_id": 1,
    "fecha_resumen": "2025-06-09"
  }
POST Enviar Resumen a SUNAT {{base_url}}/api/v1/daily-summaries/{{summary_id}}/send-sunat
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST Verificar Estado Resumen {{base_url}}/api/v1/daily-summaries/{{summary_id}}/check-status
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET Listar Boletas {{base_url}}/api/v1/boletas?branch_id=1&per_page=20
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET Ver Formatos PDF Disponibles {{base_url}}/api/v1/pdf/formats
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
Notas de crédito - casos completos 35 ejemplos
GET 1. Catálogos y Referencias / Obtener Motivos de Nota de Crédito {{base_url}}/api/v1/credit-notes/catalogs/motivos
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 2. Ejemplos básicos / NC-GREENTER-001 - Nota Básica (nota-credito.php) {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-15",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-111",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION POR ITEM",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC",
    "direccion": "AV. EJEMPLO 123",
    "ubigeo": "150101",
    "distrito": "LIMA",
    "provincia": "LIMA",
    "departamento": "LIMA"
  },
  "guias": [
    {
      "tipo_doc": "09",
      "nro_doc": "0001-213"
    }
  ],
  "detalles": [
    {
      "codigo": "C023",
      "descripcion": "PROD 1",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "C02",
      "descripcion": "PROD 2",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ],
  "leyendas": [
    {
      "code": "1000",
      "value": "SON DOSCIENTOS TREINTA Y SEIS CON 00/100 SOLES"
    }
  ]
}
POST 2. Ejemplos básicos / NC-GREENTER-002 - Nota para Boleta (nota-credito-boleta.php) {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "BB01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "03",
  "num_doc_afectado": "B001-12",
  "cod_motivo": "01",
  "des_motivo": "ANULACION DE LA OPERACION",
  "client": {
    "tipo_documento": "1",
    "numero_documento": "12345678",
    "razon_social": "CLIENTE NATURAL"
  },
  "detalles": [
    {
      "codigo": "C023",
      "descripcion": "PROD 1",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "C02",
      "descripcion": "PROD 2",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 2. Ejemplos básicos / NC-GREENTER-003 - Forma de Pago Crédito (nota-credito-forma-pago.php) {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "forma_pago_tipo": "Credito",
  "forma_pago_cuotas": [
    {
      "monto": 236.00,
      "fecha_pago": "2025-09-11"
    }
  ],
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-111",
  "cod_motivo": "13",
  "des_motivo": "AJUSTES - MONTOS Y/O FECHAS DE PAGO",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "guias": [
    {
      "tipo_doc": "09",
      "nro_doc": "0001-213"
    }
  ],
  "detalles": [
    {
      "codigo": "C023",
      "descripcion": "PROD 1",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "C02",
      "descripcion": "PROD 2",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-01 - Anulación de Operación {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000001",
  "cod_motivo": "01",
  "des_motivo": "ANULACION DE LA OPERACION",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "ANULADO",
      "descripcion": "OPERACION ANULADA COMPLETAMENTE",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 100.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-02 - Error en RUC {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000002",
  "cod_motivo": "02",
  "des_motivo": "ANULACION POR ERROR EN EL RUC",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "CORR-RUC",
      "descripcion": "CORRECCION POR RUC INCORRECTO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 100.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-03 - Error en Descripción {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000003",
  "cod_motivo": "03",
  "des_motivo": "CORRECCION POR ERROR EN LA DESCRIPCION",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "PROD001",
      "descripcion": "DESCRIPCION CORREGIDA DEL PRODUCTO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-04 - Descuento Global {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000004",
  "cod_motivo": "04",
  "des_motivo": "DESCUENTO GLOBAL",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "DESC-GLOBAL",
      "descripcion": "DESCUENTO APLICADO GLOBALMENTE",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 20.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-05 - Descuento por Ítem {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000005",
  "cod_motivo": "05",
  "des_motivo": "DESCUENTO POR ITEM",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "PROD001",
      "descripcion": "DESCUENTO EN PRODUCTO ESPECIFICO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 15.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-06 - Devolución Total {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000006",
  "cod_motivo": "06",
  "des_motivo": "DEVOLUCION TOTAL",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "guias": [
    {
      "tipo_doc": "09",
      "nro_doc": "G001-001"
    },
    {
      "tipo_doc": "09",
      "nro_doc": "G001-002"
    }
  ],
  "detalles": [
    {
      "codigo": "DEVUELTO",
      "descripcion": "PRODUCTO DEVUELTO COMPLETAMENTE",
      "unidad": "NIU",
      "cantidad": 3,
      "mto_valor_unitario": 33.33,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-07 - Devolución por Ítem {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000007",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION POR ITEM",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "guias": [
    {
      "tipo_doc": "09",
      "nro_doc": "0001-213"
    }
  ],
  "detalles": [
    {
      "codigo": "C023",
      "descripcion": "PROD 1 DEVUELTO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-08 - Bonificación {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000008",
  "cod_motivo": "08",
  "des_motivo": "BONIFICACION",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "BONUS",
      "descripcion": "BONIFICACION AL CLIENTE",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 25.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-09 - Disminución en el Valor {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000009",
  "cod_motivo": "09",
  "des_motivo": "DISMINUCION EN EL VALOR",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "ADJUST",
      "descripcion": "AJUSTE DE VALOR POR CALIDAD",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 10.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-10 - Otros Conceptos {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000010",
  "cod_motivo": "10",
  "des_motivo": "OTROS CONCEPTOS",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "OTHER",
      "descripcion": "CONCEPTO ESPECIAL DE AJUSTE",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 30.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-11 - Ajustes Exportación {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "USD",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000011",
  "cod_motivo": "11",
  "des_motivo": "AJUSTES DE OPERACIONES DE EXPORTACION",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC",
    "pais": "US"
  },
  "detalles": [
    {
      "codigo": "EXP001",
      "descripcion": "PRODUCTO DE EXPORTACION AJUSTADO",
      "unidad": "NIU",
      "cantidad": 10,
      "mto_valor_unitario": 15.00,
      "porcentaje_igv": 0.00,
      "tip_afe_igv": "40"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-12 - Ajustes IVAP {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000012",
  "cod_motivo": "12",
  "des_motivo": "AJUSTES AFECTOS AL IVAP",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "IVAP001",
      "descripcion": "AJUSTE PARA OPERACION IVAP",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 100.00,
      "porcentaje_igv": 2.00,
      "tip_afe_igv": "17"
    }
  ]
}
POST 3. Todos los Motivos (01-13) / NC-MOTIVO-13 - Ajustes Fechas de Pago {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "forma_pago_tipo": "Credito",
  "forma_pago_cuotas": [
    {
      "monto": 59.00,
      "fecha_pago": "2025-10-06"
    },
    {
      "monto": 59.00,
      "fecha_pago": "2025-11-06"
    }
  ],
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-000013",
  "cod_motivo": "13",
  "des_motivo": "AJUSTES - MONTOS Y/O FECHAS DE PAGO",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "AJUSTE-PAGO",
      "descripcion": "AJUSTE EN FECHAS Y MONTOS DE PAGO",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 25.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 4. Casos Especiales y Avanzados / NC-ESP-001 - Operaciones Exoneradas {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-EXO001",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION POR ITEM - OPERACION EXONERADA",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "EXON001",
      "descripcion": "PRODUCTO EXONERADO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 5,
      "mto_valor_unitario": 20.00,
      "porcentaje_igv": 0.00,
      "tip_afe_igv": "20"
    }
  ]
}
POST 4. Casos Especiales y Avanzados / NC-ESP-002 - Operaciones Inafectas {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-INA001",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION POR ITEM - OPERACION INAFECTA",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "INAF001",
      "descripcion": "PRODUCTO INAFECTO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 3,
      "mto_valor_unitario": 25.00,
      "porcentaje_igv": 0.00,
      "tip_afe_igv": "30"
    }
  ]
}
POST 4. Casos Especiales y Avanzados / NC-ESP-003 - Con ISC e ICBPER {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-ISC001",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION DE PRODUCTOS CON ISC E ICBPER",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "CIGA001",
      "descripcion": "CIGARRILLOS DEVUELTOS",
      "unidad": "PAQ",
      "cantidad": 2,
      "mto_valor_unitario": 10.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10",
      "isc": 3.00,
      "tip_sis_isc": "01",
      "mto_base_isc": 10.00
    },
    {
      "codigo": "BOLS001",
      "descripcion": "BOLSAS PLASTICAS DEVUELTAS",
      "unidad": "NIU",
      "cantidad": 100,
      "mto_valor_unitario": 0.10,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10",
      "icbper": 10.00,
      "factor_icbper": 100
    }
  ]
}
POST 4. Casos Especiales y Avanzados / NC-ESP-004 - Múltiples Guías y Documentos {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-MG001",
  "cod_motivo": "06",
  "des_motivo": "DEVOLUCION TOTAL CON MULTIPLES GUIAS",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "guias": [
    {
      "tipo_doc": "09",
      "nro_doc": "T001-000001"
    },
    {
      "tipo_doc": "09",
      "nro_doc": "T001-000002"
    },
    {
      "tipo_doc": "31",
      "nro_doc": "GRE-001"
    }
  ],
  "detalles": [
    {
      "codigo": "LOTE001",
      "descripcion": "LOTE COMPLETO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 50,
      "mto_valor_unitario": 5.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 4. Casos Especiales y Avanzados / NC-ESP-005 - Operaciones Mixtas {{base_url}}/api/v1/credit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FF01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-MIX001",
  "cod_motivo": "07",
  "des_motivo": "DEVOLUCION MIXTA - GRAVADO, EXONERADO E INAFECTO",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "GRAV001",
      "descripcion": "PRODUCTO GRAVADO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "EXON001",
      "descripcion": "PRODUCTO EXONERADO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 3,
      "mto_valor_unitario": 30.00,
      "porcentaje_igv": 0.00,
      "tip_afe_igv": "20"
    },
    {
      "codigo": "INAF001",
      "descripcion": "PRODUCTO INAFECTO DEVUELTO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 25.00,
      "porcentaje_igv": 0.00,
      "tip_afe_igv": "30"
    }
  ]
}
GET 5. Gestión y Consultas / Listar Notas de Crédito {{base_url}}/api/v1/credit-notes?per_page=15
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Gestión y Consultas / Obtener Nota por ID {{base_url}}/api/v1/credit-notes/{{credit_note_id}}
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Gestión y Consultas / Filtrar por Estado SUNAT {{base_url}}/api/v1/credit-notes?estado_sunat=PENDIENTE
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Gestión y Consultas / Filtrar por Tipo de Documento Afectado {{base_url}}/api/v1/credit-notes?tipo_doc_afectado=01
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Gestión y Consultas / Filtrar por Rango de Fechas {{base_url}}/api/v1/credit-notes?fecha_desde=2025-09-01&fecha_hasta=2025-09-30
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 6. Operaciones SUNAT / Enviar Nota de Crédito a SUNAT {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/send-sunat
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 7. Generación de Archivos / Generar PDF - Formato A4 {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/generate-pdf
Body JSON
{
  "formato": "a4",
  "generar_qr": true
}
POST 7. Generación de Archivos / Generar PDF - Formato A5 {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/generate-pdf
Body JSON
{
  "formato": "a5",
  "generar_qr": true
}
POST 7. Generación de Archivos / Generar PDF - Formato 80mm {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/generate-pdf
Body JSON
{
  "formato": "80mm",
  "generar_qr": false
}
POST 7. Generación de Archivos / Generar PDF - Formato 50mm {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/generate-pdf
Body JSON
{
  "formato": "50mm",
  "generar_qr": false
}
GET 7. Generación de Archivos / Descargar XML {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/download-xml
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 7. Generación de Archivos / Descargar CDR {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/download-cdr
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 7. Generación de Archivos / Descargar PDF {{base_url}}/api/v1/credit-notes/{{credit_note_id}}/download-pdf
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
Notas de débito - casos completos 12 ejemplos
POST 1. Crear Nota de Débito Básica {{base_url}}/api/v1/debit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FD01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-111",
  "cod_motivo": "02",
  "des_motivo": "AUMENTO EN EL VALOR",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC",
    "direccion": "AV. EJEMPLO 123",
    "ubigeo": "150101",
    "distrito": "LIMA",
    "provincia": "LIMA",
    "departamento": "LIMA"
  },
  "detalles": [
    {
      "codigo": "C023",
      "descripcion": "AUMENTO POR CONCEPTO ADICIONAL",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "C02",
      "descripcion": "AUMENTO POR RECARGO",
      "unidad": "NIU",
      "cantidad": 2,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ],
  "leyendas": [
    {
      "code": "1000",
      "value": "SON DOSCIENTOS TREINTA Y SEIS CON 00/100 SOLES"
    }
  ]
}
POST 2. Crear Nota de Débito - Intereses por Mora {{base_url}}/api/v1/debit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FD01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-222",
  "cod_motivo": "01",
  "des_motivo": "INTERESES POR MORA",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "razon_social": "EMPRESA DE PRUEBA SAC"
  },
  "detalles": [
    {
      "codigo": "INT001",
      "descripcion": "INTERESES POR PAGO TARDIO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 100.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 3. Crear Nota de Débito para Boleta {{base_url}}/api/v1/debit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "BD01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "03",
  "num_doc_afectado": "B001-333",
  "cod_motivo": "03",
  "des_motivo": "PENALIDADES/OTROS CONCEPTOS",
  "client": {
    "tipo_documento": "1",
    "numero_documento": "12345678",
    "razon_social": "CLIENTE NATURAL"
  },
  "detalles": [
    {
      "codigo": "PEN001",
      "descripcion": "PENALIDAD POR INCUMPLIMIENTO",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 50.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ]
}
POST 4. Crear Nota de Débito - Penalidades {{base_url}}/api/v1/debit-notes
Body JSON
{
  "branch_id": 1,
  "serie": "FD01",
  "fecha_emision": "2025-09-06",
  "moneda": "PEN",
  "tipo_doc_afectado": "01",
  "num_doc_afectado": "F001-444",
  "cod_motivo": "03",
  "des_motivo": "PENALIDADES/OTROS CONCEPTOS",
  "client": {
    "tipo_documento": "6",
    "numero_documento": "20987654321",
    "razon_social": "EMPRESA CONTRATISTA SAC",
    "direccion": "AV. CONTRATISTAS 456",
    "ubigeo": "150101",
    "distrito": "LIMA",
    "provincia": "LIMA",
    "departamento": "LIMA"
  },
  "detalles": [
    {
      "codigo": "MULT01",
      "descripcion": "MULTA POR RETRASO EN ENTREGA",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 500.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    },
    {
      "codigo": "MULT02",
      "descripcion": "PENALIDAD POR CALIDAD",
      "unidad": "NIU",
      "cantidad": 1,
      "mto_valor_unitario": 300.00,
      "porcentaje_igv": 18.00,
      "tip_afe_igv": "10"
    }
  ],
  "leyendas": [
    {
      "code": "1000",
      "value": "SON NOVECIENTOS CUARENTA Y CUATRO CON 00/100 SOLES"
    }
  ]
}
POST 5. Enviar Nota de Débito a SUNAT {{base_url}}/api/v1/debit-notes/{{debit_note_id}}/send-sunat
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 6. Obtener Nota de Débito {{base_url}}/api/v1/debit-notes/{{debit_note_id}}
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 7. Listar Notas de Débito {{base_url}}/api/v1/debit-notes?per_page=10
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 8. Catálogo de Motivos {{base_url}}/api/v1/debit-notes/catalogs/motivos
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 9. Descargar XML {{base_url}}/api/v1/debit-notes/{{debit_note_id}}/download-xml
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 10. Descargar CDR {{base_url}}/api/v1/debit-notes/{{debit_note_id}}/download-cdr
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 11. Generar PDF {{base_url}}/api/v1/debit-notes/{{debit_note_id}}/generate-pdf
Body JSON
{
    "format": "80mm"
}
GET 12. Descargar PDF {{base_url}}/api/v1/debit-notes/{{debit_note_id}}/download-pdf
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
Guías de remisión - casos completos 22 ejemplos
GET 1. Catálogos y Referencias / Obtener Motivos de Traslado {{base_url}}/api/v1/dispatch-guides/catalogs/transfer-reasons
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 1. Catálogos y Referencias / Obtener Modalidades de Transporte {{base_url}}/api/v1/dispatch-guides/catalogs/transport-modes
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 2. Crear Guías de Remisión / Crear Guía - Transporte Privado (Venta) {{base_url}}/api/v1/dispatch-guides
Body JSON

  {
      "branch_id": 1,
      "destinatario_id": 2,
      "serie": "T001",
      "fecha_emision": "2025-09-07",
      "fecha_traslado": "2025-09-08",

      "cod_traslado": "01",
      "des_traslado": "Venta",
      "mod_traslado": "02",
      "peso_total": 12.5,
      "und_peso_total": "KGM",
      "num_bultos": 1,

      "partida_ubigeo": "150203",
      "partida_direccion": "AV ITALIA",
      "llegada_ubigeo": "150101",
      "llegada_direccion": "AV LIMA",

      "vehiculo_placa": "ABC123",
      "vehiculo_placa_secundaria": "ABI456",

      "conductor_tipo": "Principal",
      "conductor_tipo_doc": "1",
      "conductor_num_doc": "44004400",
      "conductor_licencia": "0001122020",
      "conductor_nombres": "ROBERTO",
      "conductor_apellidos": "RODRIGUEZ VALENCIA",

      "detalles": [
          {
              "cantidad": 2,
              "unidad": "ZZ",
              "descripcion": "PROD 1",
              "codigo": "PROD1",
              "peso_total": 12.5
          }
      ],

      "usuario_creacion": "POSTMAN_TEST"
  }
POST 2. Crear Guías de Remisión / Crear Guía - Transporte Público (Compra) {{base_url}}/api/v1/dispatch-guides
Body JSON
 {
      "branch_id": 2,
      "destinatario_id": 1,
      "serie": "T001",
      "fecha_emision": "2025-09-07",
      "fecha_traslado": "2025-09-08",

      "cod_traslado": "01",
      "des_traslado": "Venta",
      "mod_traslado": "01",
      "peso_total": 12.5,
      "und_peso_total": "KGM",
      "num_bultos": 1,

      "partida_ubigeo": "150203",
      "partida_direccion": "AV ITALIA",
      "llegada_ubigeo": "150101",
      "llegada_direccion": "AV LIMA",

      "transportista_tipo_doc": "6",
      "transportista_num_doc": "20000000002",
      "transportista_razon_social": "TRANSPORTES S.A.C",
      "transportista_nro_mtc": "0001",

      "detalles": [
          {
              "cantidad": 2,
              "unidad": "ZZ",
              "descripcion": "PROD 1",
              "codigo": "PROD1",
              "peso_total": 12.5
          }
      ],

      "usuario_creacion": "POSTMAN_TEST"
  }
POST 2. Crear Guías de Remisión / Crear Guía - Traslado Entre Establecimientos {{base_url}}/api/v1/dispatch-guides
Body JSON
 {
    "branch_id": 2,
    "destinatario_id": 2,
    "serie": "T001",
    "fecha_emision": "2025-09-08",
    "fecha_traslado": "2025-09-09",
    "version": "2022",
    "cod_traslado": "04",
    "des_traslado": "Traslado entre establecimientos de la misma empresa",
    "mod_traslado": "02",
    "peso_total": 12.5,
    "und_peso_total": "KGM",
    "num_bultos": 1,
    "partida": {
      "ubigeo": "150203",
      "direccion": "AV ITALIA",
      "ruc": "20161515648",
      "cod_local": "00001"
    },
    "llegada": {
      "ubigeo": "150101",
      "direccion": "AV LIMA",
      "ruc": "20161515648",
      "cod_local": "00002"
    },
    "indicadores": ["SUNAT_Envio_IndicadorTrasladoVehiculoM1L"],
    "detalles": [{
      "codigo": "PROD1",
      "unidad": "ZZ",
      "cantidad": 2,
      "peso_total": 12.5,
      "descripcion": "PROD 1"
    }],
    "usuario_creacion": "API_FINAL_TEST"
  }
POST 2. Crear Guías de Remisión / Crear Guía - Traslado TRANSPORTE PRIVADO M1L (VEHÍCULOS MENORES) {{base_url}}/api/v1/dispatch-guides
Body JSON
 {
      "branch_id": 2,
      "destinatario_id": 1,
      "serie": "T001",
      "fecha_emision": "2025-09-07",
      "fecha_traslado": "2025-09-08",

      "cod_traslado": "01",
      "des_traslado": "Venta",
      "mod_traslado": "02",
      "peso_total": 12.5,
      "und_peso_total": "KGM",
      "num_bultos": 1,

      "indicadores": ["SUNAT_Envio_IndicadorTrasladoVehiculoM1L"],

      "partida_ubigeo": "150203",
      "partida_direccion": "AV ITALIA",
      "llegada_ubigeo": "150101",
      "llegada_direccion": "AV LIMA",

      "detalles": [
          {
              "cantidad": 0.5,
              "unidad": "KGM",
              "descripcion": "PROD 1",
              "codigo": "PROD1",
              "peso_total": 0.5
          }
      ],

      "usuario_creacion": "POSTMAN_TEST"
  }
POST 2. Crear Guías de Remisión / Crear Guía - Traslado CON DOCUMENTOS Y ATRIBUTOS ADICIONALES {{base_url}}/api/v1/dispatch-guides
Body JSON
 {
      "branch_id": 2,
      "destinatario_id": 1,
      "serie": "T001",
      "fecha_emision": "2025-09-07",
      "fecha_traslado": "2025-09-08",

      "cod_traslado": "01",
      "des_traslado": "Venta",
      "mod_traslado": "01",
      "peso_total": 12.5,
      "und_peso_total": "KGM",
      "num_bultos": 1,

      "partida_ubigeo": "150203",
      "partida_direccion": "AV ITALIA",
      "llegada_ubigeo": "150101",
      "llegada_direccion": "AV LIMA",

      "transportista_tipo_doc": "6",
      "transportista_num_doc": "20000000002",
      "transportista_razon_social": "TRANSPORTES S.A.C",
      "transportista_nro_mtc": "0001",

      "documentos_relacionados": [
          {
              "tipo": "49",
              "tipo_desc": "Constancia de Depósito - IVAP (Ley 28211)",
              "numero": "00000001"
          }
      ],

      "detalles": [
          {
              "cantidad": 2,
              "unidad": "ZZ",
              "descripcion": "PROD 1",
              "codigo": "PROD1",
              "peso_total": 12.5,
              "cod_prod_sunat": "50161509",
              "atributos": [
                  {
                      "code": "7020",
                      "name": "Partida arancelaria",
                      "value": "1701130000"
                  },
                  {
                      "code": "7022",
                      "name": "Indicador de bien normalizado",
                      "value": "1"
                  }
              ]
          }
      ],

      "observaciones": "Guía con documentos adicionales y atributos de productos",
      "usuario_creacion": "POSTMAN_TEST"
  }
POST 2. Crear Guías de Remisión / Crear Guía - Con Vehículos Secundarios {{base_url}}/api/v1/dispatch-guides
Body JSON
 {
    "branch_id": 2,
    "destinatario_id": 3,  // ← Cambio: client_id → destinatario_id
    "serie": "T001",
    "fecha_emision": "2025-09-07",
    "fecha_traslado": "2025-09-08",

    "cod_traslado": "01",
    "des_traslado": "Venta",
    "mod_traslado": "02",
    "peso_total": 250.500,
    "und_peso_total": "KGM",
    "num_bultos": 20,

    // ← Cambio: campos planos en lugar de objetos anidados
    "partida_ubigeo": "150101",
    "partida_direccion": "PLANTA DE PRODUCCIÓN",
    "llegada_ubigeo": "150203",
    "llegada_direccion": "CENTRO DE DISTRIBUCIÓN",

    // ← Cambio: campos directos del conductor
    "conductor_tipo": "Principal",
    "conductor_tipo_doc": "1",
    "conductor_num_doc": "44004400",  // ← Usar DNI válido de test
    "conductor_licencia": "0001122020",  // ← Usar licencia de test
    "conductor_nombres": "ROBERTO",
    "conductor_apellidos": "RODRIGUEZ VALENCIA",

    // ← Cambio: vehículo principal y secundarios como arrays
    "vehiculo_placa": "VEH001",
    "vehiculos_secundarios": [
      {"placa": "VEH002"},
      {"placa": "VEH003"}
    ],

    "detalles": [
      {
        "cantidad": 200,
        "unidad": "NIU",
        "descripcion": "CARGA INDUSTRIAL PESADA",
        "codigo": "HEAVY001",
        "peso_total": 250.500
      }
    ],

    "usuario_creacion": "POSTMAN_TEST"
  }
GET 3. Consultar Guías de Remisión / Listar Todas las Guías {{base_url}}/api/v1/dispatch-guides
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 3. Consultar Guías de Remisión / Filtrar por Estado SUNAT {{base_url}}/api/v1/dispatch-guides?estado_sunat=PENDIENTE
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 3. Consultar Guías de Remisión / Filtrar por Modalidad de Transporte {{base_url}}/api/v1/dispatch-guides?mod_traslado=02
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 3. Consultar Guías de Remisión / Obtener Guía Específica {{base_url}}/api/v1/dispatch-guides/{{guide_id}}
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 4. Procesamiento SUNAT / Enviar a SUNAT - Transporte Privado {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/send-sunat
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 4. Procesamiento SUNAT / Consultar Estado SUNAT {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/check-status
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 5. Generar y Descargar Archivos / Generar PDF {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/generate-pdf
Body JSON
{
    "format": "A5"
}
GET 5. Generar y Descargar Archivos / Descargar XML {{base_url}}/api/v1/dispatch-guides/{{dispatch_guide_private_id}}/download-xml
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Generar y Descargar Archivos / Descargar CDR {{base_url}}/api/v1/dispatch-guides/{{dispatch_guide_private_id}}/download-cdr
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
GET 5. Generar y Descargar Archivos / Descargar PDF {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/download-pdf
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 5. Generar y Descargar Archivos / {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/generate-pdf {{base_url}}/api/v1/dispatch-guides/{{guide_id}}/generate-pdf
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.
POST 6. Casos de Error y Validación / Error - Transporte Privado Sin Conductor {{base_url}}/api/v1/dispatch-guides
Body JSON
{
  "branch_id": 1,
  "client_id": 1,
  "serie": "T001",
  "fecha_emision": "2025-09-06",
  "fecha_traslado": "2025-09-07",
  
  "cod_traslado": "01",
  "des_traslado": "Venta",
  "mod_traslado": "02",
  "peso_total": 30.0,
  "und_peso_total": "KGM",
  "num_bultos": 2,
  
  "partida": {
    "ubigeo": "150101",
    "direccion": "ORIGEN"
  },
  "llegada": {
    "ubigeo": "150203",
    "direccion": "DESTINO"
  },
  
  "vehiculo": {
    "placa_principal": "ABC123"
  },
  
  "detalles": [
    {
      "cantidad": 1,
      "unidad": "NIU",
      "descripcion": "PRODUCTO",
      "codigo": "PROD001",
      "peso_total": 30.0
    }
  ]
}
POST 6. Casos de Error y Validación / Error - Transporte Público Sin Transportista {{base_url}}/api/v1/dispatch-guides
Body JSON
{
  "branch_id": 1,
  "client_id": 1,
  "serie": "T001",
  "fecha_emision": "2025-09-06",
  "fecha_traslado": "2025-09-07",
  
  "cod_traslado": "01",
  "des_traslado": "Venta",
  "mod_traslado": "01",
  "peso_total": 30.0,
  "und_peso_total": "KGM",
  "num_bultos": 2,
  
  "partida": {
    "ubigeo": "150101",
    "direccion": "ORIGEN"
  },
  "llegada": {
    "ubigeo": "150203",
    "direccion": "DESTINO"
  },
  
  "vehiculo": {
    "placa_principal": "ABC123"
  },
  
  "detalles": [
    {
      "cantidad": 1,
      "unidad": "NIU",
      "descripcion": "PRODUCTO",
      "codigo": "PROD001",
      "peso_total": 30.0
    }
  ]
}
GET 6. Casos de Error y Validación / Error - Guía No Encontrada {{base_url}}/api/v1/dispatch-guides/{{guide_id}}
Body JSON
Este endpoint no utiliza body JSON. Usa Params si la URL contiene filtros.

Inventario listo para facturar con códigos SUNAT.

1. Catálogo UNSPSC

Todo producto o servicio facturable debe enviar sunat_product_code con 8 dígitos. El sistema lo valida contra unspsc_catalogo y lo usa como codigo_producto_sunat en facturas, boletas y notas.

Página oficial SUNAT · Descargar CCNU_MOD_2.xlsm

2. Datos maestros

Crea primero categorías, subcategorías y marcas cuando quieras ordenar el inventario. Estos campos son opcionales para facturar, pero ayudan a filtrar y mantener productos.

  • product_category_idCategoría principal.
  • product_subcategory_idSubcategoría vinculada.
  • brand_idMarca comercial.

3. Producto facturable

El alta de producto combina datos comerciales, SUNAT, precios, impuestos e inventario. Para servicios usa "type": "service" y normalmente "track_stock": false.

  • unit_codeUnidad SUNAT, por ejemplo NIU.
  • tax_affectation10 gravado, 20 exonerado, 30 inafecto, 40 exportación.
  • spot_codigoSolo cuando sujeto_detraccion sea true.

Endpoints de inventario

Estos endpoints trabajan sobre el inventario propio de la empresa autenticada. No modifican catálogos oficiales SUNAT.

GET/api/v1/inventory/categories
Listar categorías. Filtros: search, active, per_page.
POST/api/v1/inventory/categories
Crear categoría.
PUT/api/v1/inventory/categories/{id}
Actualizar categoría.
DELETE/api/v1/inventory/categories/{id}
Desactivar categoría. Para eliminación permanente existe /force-delete.
GET/api/v1/inventory/subcategories
Listar subcategorías. Filtros: search, product_category_id, per_page.
POST/api/v1/inventory/subcategories
Crear subcategoría vinculada a una categoría.
PUT/api/v1/inventory/subcategories/{id}
Actualizar subcategoría.
DELETE/api/v1/inventory/subcategories/{id}
Desactivar subcategoría. Para eliminación permanente existe /force-delete.
GET/api/v1/inventory/brands
Listar marcas. Filtros: search, active, per_page.
POST/api/v1/inventory/brands
Crear marca.
PUT/api/v1/inventory/brands/{id}
Actualizar marca.
DELETE/api/v1/inventory/brands/{id}
Desactivar marca.
GET/api/v1/inventory/products
Listar productos y servicios. Filtros: search, branch_id, type, product_category_id, per_page.
GET/api/v1/inventory/products/next-sku
Obtener SKU numérico disponible.
POST/api/v1/inventory/products
Crear producto o servicio. Incluye sunat_product_code de 8 dígitos para que pueda facturarse.
PUT/api/v1/inventory/products/{id}
Actualizar producto o servicio.
DELETE/api/v1/inventory/products/{id}
Desactivar producto o servicio. Para eliminación permanente existe /force-delete.
POST/api/v1/inventory/products/import
Importar inventario desde CSV/TXT/XLSX.

Ejemplos previos: ordenar inventario

curl --location 'https://facturacion.watsontic.com/api/v1/inventory/categories' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer TU_API_KEY' \
  --data '{
    "name": "Abarrotes",
    "description": "Productos de consumo masivo",
    "active": true
  }'
{
  "success": true,
  "message": "Categoría creada correctamente.",
  "data": {
    "id": 16,
    "
    "name": "Abarrotes",
    "slug": "abarrotes",
    "description": "Productos de consumo masivo",
    "active": true
  }
}
POST /api/v1/inventory/subcategories
{
  "product_category_id": 16,
  "name": "Aceites y conservas",
  "description": "Aceites, atún y conservas",
  "active": true
}

Respuesta:
{
  "success": true,
  "message": "Subcategoría creada correctamente.",
  "data": {
    "id": 40,
    "product_category_id": 16,
    "name": "Aceites y conservas",
    "category": { "id": 16, "name": "Abarrotes" }
  }
}

POST /api/v1/inventory/brands
{
  "name": "Primor",
  "description": "Marca comercial",
  "active": true
}

Respuesta:
{
  "success": true,
  "message": "Marca creada correctamente.",
  "data": {
    "id": 23,
    "name": "Primor",
    "slug": "primor",
    "logo_url": null,
    "active": true
  }
}

Actualizar y desactivar maestros

PUT /api/v1/inventory/subcategories/40
{
  "product_category_id": 16,
  "name": "Aceites y conservas",
  "description": "Subcategoría actualizada",
  "active": true
}

Respuesta:
{
  "success": true,
  "message": "Subcategoría actualizada correctamente.",
  "data": {
    "id": 40,
    "product_category_id": 16,
    "name": "Aceites y conservas"
  }
}

DELETE /api/v1/inventory/subcategories/40

Respuesta:
{
  "success": true,
  "message": "Subcategoría desactivada correctamente."
}

Ejemplo completo: crear producto

Usa este formato cuando el producto ya tiene sucursal, categoría, subcategoría, marca y código UNSPSC importado en el catálogo local. sku y barcode deben ser únicos dentro de la empresa.

curl --location 'https://facturacion.watsontic.com/api/v1/inventory/products' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer TU_API_KEY' \
  --data '{
    "branch_id": 1,
    "type": "product",
    "sku": "ACEI-PRIMOR-900",
    "barcode": "7750243090100",
    "barcode_type": "EAN13",
    "sunat_product_code": "50151513",
    "gs1_code": "7750243090100",
    "product_category_id": 16,
    "product_subcategory_id": 40,
    "brand_id": 23,
    "name": "Aceite vegetal Primor 900 ML",
    "description": "Aceite vegetal comestible en botella de 900 ml.",
    "unit_code": "NIU",
    "price_mode": "final",
    "purchase_price": 8.20,
    "sale_price": 11.50,
    "currency": "PEN",
    "tax_affectation": "10",
    "igv_rate": 18,
    "has_discount": true,
    "discount_percent": 5,
    "has_icbper": false,
    "sujeto_detraccion": false,
    "track_stock": true,
    "stock": 280,
    "minimum_stock": 20,
    "image_url": "https://cdn.tu-dominio.com/productos/aceite-primor-900ml.webp",
    "active": true
  }'
{
  "success": true,
  "message": "Producto o servicio creado correctamente.",
  "data": {
    "id": 81,
    "branch_id": 1,
    "product_category_id": 16,
    "product_subcategory_id": 40,
    "brand_id": 23,
    "type": "product",
    "sku": "ACEI-PRIMOR-900",
    "barcode": "7750243090100",
    "sunat_product_code": "50151513",
    "name": "Aceite vegetal Primor 900 ML",
    "unit_code": "NIU",
    "unit_price": "10.26",
    "purchase_price": "8.20",
    "profit_amount": "2.06",
    "sale_price": "11.50",
    "currency": "PEN",
    "tax_affectation": "10",
    "igv_rate": "18.00",
    "discount_amount": "0.51",
    "has_discount": true,
    "discount_percent": "5.00",
    "track_stock": true,
    "stock": "280.00",
    "minimum_stock": "20.00",
    "active": true,
    "sunat_catalog": {
      "id_producto": "50151513",
      "producto": "Aceites vegetales o  de planta comestibles",
      "clase": "Grasas y aceites vegetales comestibles"
    }
  }
}

Actualizar y desactivar producto

PUT /api/v1/inventory/products/81
{
  "branch_id": 1,
  "type": "product",
  "sku": "ACEI-PRIMOR-900",
  "barcode": "7750243090100",
  "barcode_type": "EAN13",
  "sunat_product_code": "50151513",
  "gs1_code": "7750243090100",
  "product_category_id": 16,
  "product_subcategory_id": 40,
  "brand_id": 23,
  "name": "Aceite vegetal Primor 900 ML actualizado",
  "description": "Producto actualizado desde API.",
  "unit_code": "NIU",
  "price_mode": "final",
  "purchase_price": 8.20,
  "sale_price": 12.00,
  "currency": "PEN",
  "tax_affectation": "10",
  "igv_rate": 18,
  "has_discount": true,
  "discount_percent": 5,
  "discount_amount": 0.58,
  "has_icbper": false,
  "icbper_factor": 0,
  "sujeto_detraccion": false,
  "spot_codigo": null,
  "track_stock": true,
  "stock": 300,
  "minimum_stock": 25,
  "active": true
}

Respuesta:
{
  "success": true,
  "message": "Producto o servicio actualizado correctamente.",
  "data": {
    "id": 81,
    "name": "Aceite vegetal Primor 900 ML actualizado",
    "unit_price": "10.70",
    "profit_amount": "2.50",
    "sale_price": "12.00",
    "stock": "300.00",
    "minimum_stock": "25.00",
    "sunat_catalog": {
      "id_producto": "50151513",
      "producto": "Aceites vegetales o  de planta comestibles"
    }
  }
}

DELETE /api/v1/inventory/products/81

Respuesta:
{
  "success": true,
  "message": "Producto o servicio desactivado correctamente."
}

Importación masiva

El importador acepta CSV/TXT/XLSX. Para el código SUNAT puedes usar una de estas columnas: unspsc, sunat_product_code, codigo_sunat o codigo_unspsc.

POST /api/v1/inventory/products/import
Content-Type: multipart/form-data

file: inventario.xlsx

Endpoints necesarios para armar el documento antes de emitir.

Clientes y códigos oficiales

GET/api/v1/clients?search=cliente&page=1
Clientes registrados. Query params: search busca por razón social, nombre comercial o número de documento; page cambia la página.
POST/api/v1/clients/search-by-document
Buscar cliente por DNI/RUC dentro de tu base. Body: document_type usa 6 para RUC o 1 para DNI; document_number es el número a buscar.
GET/api/v1/unspsc-catalog?search=aceite&type=product
Catálogo UNSPSC/SUNAT. Query params: search texto o código; type puede ser product o service para mejorar el orden de resultados.

Sucursales y series

GET/api/v1/branches
Sucursales de la empresa autenticada. De aquí sale el branch_id y las series disponibles por tipo de documento.
GET/api/v1/branches/{branch_id}/correlatives
Series y correlativos por sucursal. {branch_id} es el ID de /branches; la respuesta muestra serie, tipo_documento y proximo_numero.
GET/api/v1/ubigeos/search?q=lima
Buscar ubigeo para direcciones y guías. Query obligatorio: q con distrito, provincia, departamento o código.
GET/api/v1/pdf/formats
Formatos PDF disponibles. Usa el código del formato en download-pdf?format=a4 cuando descargues el documento.

PDF, XML y CDR usan el mismo patrón por tipo de documento.

Cambia {resource} por invoices, boletas, credit-notes, debit-notes, dispatch-guides, daily-summaries, voided-documents, retentions o perceptions según corresponda. {id} es el ID del documento creado o listado.

POST/api/v1/{resource}/{id}/generate-pdf
Generar PDF si todavía no existe. No usa body; solo requiere Bearer token y el {id} del documento.
GET/api/v1/{resource}/{id}/download-pdf?format=a4
Descargar PDF. Query opcional: format, por ejemplo a4, a5, 80mm, 50mm o ticket.
GET/api/v1/{resource}/{id}/download-xml
Descargar XML generado. Disponible cuando el documento ya tiene XML.
GET/api/v1/{resource}/{id}/download-cdr
Descargar CDR. Disponible cuando SUNAT ya respondió y generó el archivo CDR.

Consultas útiles para integraciones.

Ventas y estado

GET/api/v1/sales?per_page=20&page=1
Listado unificado de facturas, boletas, notas de crédito y notas de débito. Query params: page, per_page, branch_id, estado_sunat y search.
curl --location 'https://facturacion.watsontic.com/api/v1/sales?per_page=20&page=1' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TU_API_KEY'
{
  "success": true,
  "data": {
    "current_page": 1,
    "data": [{
      "id": 22,
      "tipo_documento": "01",
      "serie": "F001",
      "correlativo": "000020",
      "numero_completo": "F001-000020",
      "fecha_emision": "2026-08-09",
      "mto_imp_venta": "15.79",
      "moneda": "PEN",
      "estado_sunat": "PENDIENTE",
      "tipo_modelo": "invoice",
      "client": {
        "razon_social": "CLIENTE DEMO SAC",
        "numero_documento": "20111111111"
      }
    }],
    "per_page": 20,
    "total": 37
  }
}
POST/api/v1/consulta-cpe/por-datos
Consultar CPE por datos del comprobante. Body: ruc emisor, document_type, series, number y total.
POST/api/v1/consulta-cpe/masivo
Consulta masiva de comprobantes. Body: arreglo documents con los mismos datos de cada comprobante.

DNI/RUC

GET/api/v1/lookups/ruc/{ruc}
Consulta RUC si el plan/cuota lo permite. {ruc} debe tener 11 dígitos.
GET/api/v1/lookups/dni/{dni}
Consulta DNI si está contratado. {dni} debe tener 8 dígitos. No es parte libre del plan base.

Configuración desde panel con entrega real y reintentos automáticos.

Business puede configurar 1 URL webhook y Enterprise hasta 3. La URL, eventos, firma y autenticación del receptor se guardan desde el dashboard. Cada entrega queda registrada y se reintenta automáticamente cuando el receptor falla.

{
  "event": "document.accepted",
  "test": false,
  "sent_at": "2026-08-04T10:30:00-05:00",
  "company": {
    "uuid": "uuid-de-tu-empresa",
    "ruc": "20123456789",
    "razon_social": "EMPRESA DEMO SAC"
  },
  "document": {
    "id": 123,
    "type": "01",
    "document_type": "invoice",
    "numero_completo": "F001-000123",
    "estado_sunat": "ACEPTADO",
    "total": "118.00",
    "moneda": "PEN"
  }
}

Cuando la firma está activa, cada evento incluye X-WatsonTic-Signature calculado con HMAC SHA-256 usando el token configurado.

Respuestas estándar.

401

No autenticado o token inválido.

403

El usuario no tiene permiso o intenta operar otra empresa.

422

Validación fallida. Revisa el objeto errors.

404

Documento o recurso no encontrado.

409

Conflicto de estado, correlativo o documento ya enviado.

500/502

Error interno o proveedor externo no disponible.

Formato común

{
  "success": false,
  "message": "Error de validación",
  "errors": {
    "client.numero_documento": ["El RUC es requerido."]
  }
}