Emite facturas, boletas, notas de crédito y débito, y retenciones desde tu propio sistema, y consulta su estado ante la SUNAT. Tú envías los datos; Flashfact firma el comprobante con el certificado de tu empresa y lo envía.
URL basehttps://api.flashfact.pe
API Key y firma HMAC · JSON · v1
Sin conectar
Introducción
Con el plan API no operas desde el panel: emites y consultas comprobantes llamando a esta API. Cada empresa (RUC) tiene su propio par de claves y su propio certificado digital. Qué comprobantes incluye tu plan está en Plan, límites y términos.
La API tiene dos direcciones. api.flashfact.pe emite y consulta comprobantes y va firmada con tu Access Key y tu Secret. app-api.flashfact.pe sirve para dar de alta empresas y subir su certificado, y usa la sesión del panel.
Formato de las respuestas
JSON con codificación UTF-8. Un recurso viene en { "data": … }; un listado añade "meta": { total, page, perPage }.
Los comprobantes usan nombres en camelCase y en español (numDocumentoAdquirente). Clientes, sucursales y la parte de cuenta usan snake_case (id_type).
Los id son números enteros. Fechas en YYYY-MM-DD; marcas de tiempo en ISO 8601 UTC.
Los listados aceptan page y perPage; si no los envías, 1 y 20.
Primeros pasos
De cero a tu primer comprobante aceptado por SUNAT, en cuatro pasos.
Agrega tu empresa y guarda las credenciales
Desde el panel con el botón Agregar empresa, o con POST /v1/settings/companies. Recibes el Access Key ID y el Secret, que se muestra una sola vez. Cada RUC tiene su propio par.
Sube el certificado digital y el usuario SOL
Para emitir en producción necesitas el certificado .pfx o .p12 de la empresa y un usuario SOL secundario. Súbelos desde el panel o con POST /v1/settings/companies/{external_id}/certificate. Sin ellos el envío a SUNAT falla.
Firma y emite una boleta
Elige serie y correlativo: la API no los asigna, y tú llevas la numeración. Este ejemplo emite la boleta B001-00000123.
bash
API_KEY_ID="WISNA_..."API_SECRET="..."REQ_PATH="/v1/invoices"# solo la ruta: sin dominio ni query stringTIMESTAMP=$(date +%s)BODY='{"tipoDocumento":"03","tipoOperacion":"0101","serie":"B001","correlativo":"00000123","fechaEmision":"2026-10-11","moneda":"PEN","tipoDocumentoAdquirente":"1","numDocumentoAdquirente":"12345678","razonSocialAdquirente":"JUAN PEREZ","totalImpuestos":18.00,"totalValorVenta":100.00,"totalPrecioVenta":118.00,"importeTotal":118.00,"baseImponibleIGV":100.00,"totalIGV":18.00,"items":[{"numeroItem":1,"unidadMedida":"NIU","cantidad":2,"descripcion":"Polo de algodón","valorUnitario":50.00,"precioUnitario":59.00,"valorVenta":100.00,"afectacionIGV":"10","igv":18.00,"totalImpuestosItem":18.00}]}'BODY_HASH=$(printf'%s'"$BODY"| openssl dgst -sha256|awk'{print $NF}')SIGNATURE=$(printf'%s\n%s\n%s\n%s'"$TIMESTAMP""POST""$REQ_PATH""$BODY_HASH"\| openssl dgst -sha256-hmac"$API_SECRET"|awk'{print $NF}')curl-X POST "https://api.flashfact.pe$REQ_PATH"\-H"X-Api-Key: $API_KEY_ID"\-H"X-Timestamp: $TIMESTAMP"\-H"X-Signature: $SIGNATURE"\-H"Content-Type: application/json"\-d"$BODY"
Consulta el resultado
La respuesta del paso anterior trae estado: "DRAFT": el comprobante quedó en cola. Pide GET /v1/invoices/{id} hasta que pase a ACCEPTED o REJECTED.
json
{"data":{"id":1042,"serie":"B001","correlativo":"00000123","estado":"ACCEPTED","codigoRespuesta":"0","descripcionRespuesta":"La Boleta de Venta numero B001-00000123, ha sido aceptada","pdfUrl":"https://…"}}
Autenticación
Cada request a api.flashfact.pe va firmado con el Access Key ID y el Secret de la empresa. No hay tokens que renovar: la firma se calcula en cada llamada.
Header
Valor
X-Api-Key
Tu Access Key ID, con formato WISNA_<hex>.
X-Timestamp
Hora actual en segundos Unix. Se acepta hasta 5 minutos de diferencia.
X-Signature
HMAC-SHA256 en hexadecimal del mensaje descrito abajo.
Cómo firmar
Arma este mensaje, con saltos de línea (\n) entre sus cuatro partes y sin salto al final, y fírmalo con tu Secret:
La ruta es solo el path (/v1/invoices/1042): sin dominio y sin query string.
El hash es el SHA-256 en hexadecimal de los bytes exactos del body. Sin body (un GET), usa el hash de la cadena vacía: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.
El resultado es el HMAC-SHA256 de ese mensaje con tu Secret como clave, en hexadecimal.
Qué cubre la firma
La firma protege el método, la ruta y el body. Los parámetros de query (los filtros de un listado) no entran en ella, así que no los uses para nada sensible.
Rechazos de autenticación
401 UNAUTHORIZED: faltan headers, el timestamp está fuera de la ventana, la key no existe o la firma no coincide.
403 FORBIDDEN: la key tiene una lista de IPs permitidas y el request viene de otra. Pídela a soporte si la necesitas.
Conceptos clave
La emisión es asíncrona: estados
Crear un comprobante responde de inmediato con estado: "DRAFT". El envío a SUNAT ocurre después y el resultado se lee con un GET. Estos son los estados:
Estado
Significado
DRAFT
Creado y en cola. Todavía no se envía a SUNAT.
SENDING
En proceso de envío.
SENT
Enviado; SUNAT aún no entrega el resultado (resúmenes y guías, que usan ticket).
ACCEPTED
Aceptado por SUNAT. Ya tiene CDR y PDF.
REJECTED
Rechazado por SUNAT. Revisa codigoRespuesta y descripcionRespuesta.
FAILED
Se agotaron los reintentos de envío por una falla técnica. No es un rechazo de SUNAT.
VOID_PENDING
Baja solicitada, en proceso.
VOIDED
Baja confirmada por SUNAT.
Series y correlativos
Los eliges tú en cada emisión. La serie debe estar habilitada en SUNAT para tu empresa y el correlativo debe ser único dentro de ella. Facturas y boletas se numeran por serie (F001, B001); notas, retenciones, percepciones y guías tienen su propio prefijo.
Reintentos seguros
No existe un header de idempotencia: la clave es la serie y el correlativo. Si reenvías una factura, boleta o nota que ya existe, la API devuelve el documento original con 200 en lugar de duplicarlo. Retenciones, percepciones y guías no tienen esa protección.
Moneda extranjera y tipo de cambio
Si la moneda no es PEN puedes enviar tipoCambio. Si no lo envías, usamos el tipo de cambio SBS que corresponde por norma y lo guardamos con el comprobante. Un valor distinto al SBS se acepta y queda registrado como manual; si se aparta más de 10 %, debes confirmarlo con confirmarTipoCambio: true. La respuesta de creación trae tiposCambio con el valor usado.
Archivos del comprobante
El XML, el CDR y el PDF no tienen endpoint propio: llegan como enlaces firmados en xmlUrl, cdrUrl y pdfUrl, válidos por 15 minutos. Para un enlace más largo usa GET /v1/invoices/{id}/pdf-link (7 días).
El plan API no incluye el panel web. Una misma cuenta puede manejar varias empresas (RUC) y todas comparten el mismo límite mensual. Términos, sección 3.
Tu límite mensual
Solo se descuentan las facturas, boletas y notas de crédito y débito que la SUNAT acepte. No se descuentan los rechazados, las guías, las retenciones ni las percepciones.
Anular un comprobante no devuelve el uso de tu límite del mes.
Al pasarte puedes seguir emitiendo hasta un 50 % más; esos comprobantes extra se cobran aparte, después de que termina el mes. Al llegar a ese tope no podrás emitir más hasta el mes siguiente o hasta cambiar de plan. Puedes desactivar el extra desde la configuración de tu plan: entonces el bloqueo es en tu límite exacto. Sección 7.
Lo que pones de tu parte
Un certificado digital vigente, emitido a nombre de tu empresa (.pfx o .p12). Si vence no podrás emitir hasta subir uno nuevo.
Un usuario SOL secundario. Nunca nos des tu clave SOL principal: no te la pediremos.
La exactitud de los datos, precios e impuestos de cada comprobante. Nosotros enviamos lo que tú envías. Sección 4.
Descargar y conservar tus comprobantes: la obligación de guardarlos por el plazo legal es tuya. Sección 12.
Tus claves de conexión
Son personales: todo lo que se haga con ellas se considera hecho por ti. Se muestran una sola vez; si las pierdes tendrás que crear unas nuevas. Si crees que alguien accedió sin permiso, revócalas de inmediato y avísanos. Sección 5.
Uso correcto del servicio
No está permitido emitir comprobantes falsos o de operaciones que no existieron, intentar entrar a cuentas ajenas, copiar, revender o ceder el acceso, ni sobrecargar el sistema con envíos masivos que afecten a otros clientes. Si se incumple, podemos limitar, pausar o cerrar la cuenta. Sección 14.
Pagos pendientes, cancelación y disponibilidad
Si un pago queda pendiente más de 7 días, la cuenta se pausa hasta que lo pagues. No se borran tus datos. Sección 10.
Tras cancelar conservamos tus datos 30 días; pasado ese plazo eliminamos tu certificado, tus credenciales SOL y tus llaves de acceso. Descarga tus comprobantes antes. Sección 11.
Trabajamos para que el servicio esté siempre disponible, pero no podemos garantizar que funcione sin interrupciones: pueden ocurrir mantenimientos o fallas de la SUNAT y de terceros. Sección 15.
Buenas prácticas
Límites técnicos
El body de un request puede pesar hasta 4 MB.
Los enlaces xmlUrl, cdrUrl y pdfUrl caducan a los 15 minutos; el de pdf-link, a los 7 días.
Una factura o boleta solo se puede anular dentro de los 7 días posteriores a su emisión.
El certificado digital que subes puede pesar hasta 512 KB y debe ser .pfx o .p12.
No hay webhooks: consulta el estado
La API no te avisa cuando SUNAT responde. Después de crear un documento consúltalo con un GET y espacia las consultas de forma creciente (por ejemplo 2, 4 y 8 segundos) en vez de repetirlas sin pausa. Deja de consultar cuando el estado sea ACCEPTED, REJECTED o FAILED.
Reintentos
Si un POST se corta sin respuesta, reenvíalo con la misma serie y correlativo: en facturas, boletas y notas recibirás el documento original en lugar de un duplicado.
Ante un 503 con Retry-After, espera ese tiempo antes de reintentar.
Un 422 no se arregla reintentando: corrige los campos que indica details.
Si el documento quedó en FAILED, no reenvíes uno nuevo con otro correlativo: contacta a soporte con el id.
Guarda lo que necesitas
Conserva el id, la serie y el correlativo de cada documento. Descarga el XML, el CDR y el PDF cuando el estado sea ACCEPTED y guárdalos en tu sistema; no guardes los enlaces firmados, porque caducan.
Errores
Todos los errores de la API siguen el mismo formato:
json
{"error":{"code":"VALIDATION_ERROR","message":"se encontraron errores de validación","details":[{"field":"serie","code":"1001","message":"la serie es obligatoria"}]}}
details solo aparece en errores de validación.
Código
HTTP
Significado
VALIDATION_ERROR
422
Datos inválidos. details trae un elemento por campo; code es el código de error de SUNAT.
BAD_REQUEST
400 / 409
Request mal formado, id inválido o acción no permitida en el estado actual (409).
UNAUTHORIZED
401
Headers de firma faltantes, firma inválida, key desconocida o timestamp fuera de ventana.
FORBIDDEN
403
IP no permitida para la key, o cuenta sin permiso para la acción.
NOT_FOUND
404
El recurso no existe o no pertenece a tu empresa.
CONFLICT
409
El recurso ya existe (por ejemplo un cliente repetido).
RATE_SERVICE_UNAVAILABLE / RATE_DATA_PENDING
503
No hay tipo de cambio disponible. Reintenta tras Retry-After o envía tu tipoCambio.
INTERNAL_ERROR
500 / 503
Falla de nuestro lado. Un 503 al crear un comprobante significa que quedó guardado pero sin encolar.
Un 409 con BAD_REQUEST también aparece al reenviar un comprobante que no está en DRAFT o cuando una serie y correlativo ya existen y no se puede devolver el original.
Modelos de respuesta
Los ejemplos de cada endpoint muestran solo algunos campos. Aquí está la estructura completa. Tu cliente debe ignorar los campos que no conozca: podemos añadir campos nuevos dentro de v1 sin avisar.
Comprobante (factura o boleta)
Lo devuelven POST /v1/invoices, GET /v1/invoices y GET /v1/invoices/{id}. Los campos opcionales sin valor se omiten de la respuesta; no vienen como null.
Identificación
9 campos
Campo
Tipo
Descripción
id
number
Identificador numérico. Úsalo en las rutas /{id}.
serie
string
Serie del comprobante.
correlativo
string
Correlativo como texto, con los ceros a la izquierda que enviaste.
Nombre de la API key que emitió (el RUC de la empresa).
Nota de crédito o débito
Lo devuelven POST /v1/notes, GET /v1/notes y GET /v1/notes/{id}. Comparte la estructura del comprobante (receptor, totales, items[], cuotas[], resultado de SUNAT, archivos y atribución) y añade estos campos.
Campos
11 campos
Campo
Tipo
Descripción
id
number
Identificador numérico. Úsalo en las rutas /{id}.
serie
string
Serie del comprobante.
correlativo
string
Correlativo como texto, con los ceros a la izquierda que enviaste.
Elemento de tiposCambio[] al crear un documento en moneda extranjera. En facturas, boletas y notas la posición 0 es la conversión para IGV, PLE y reportes, y la 1 es la de la detracción. En retenciones y percepciones hay uno por documento relacionado (campo item).
Campos
10 campos
Campo
Tipo
Descripción
item
number
Posición del documento relacionado (retenciones y percepciones).
moneda
string
Moneda convertida a PEN.
valor
string | null
Tipo de cambio aplicado. null si aún no se pudo resolver.
origen
string
sbs si coincide con el SBS aplicable; manual si lo enviaste distinto.
tasaSbs
string
Tipo de cambio SBS aplicable, para comparar.
desviacionPct
number
Desviación porcentual de tu valor frente al SBS.
fechaHecho / fechaCotizacion
string
Fecha del hecho generador y fecha de la cotización usada.
regla / reglaVersion / confianza
string / number
Regla normativa aplicada y su versión.
verificacion
string
ok, pendiente o no_disponible.
motivo / advertencias[]
string / arreglo
Tu motivo y avisos, por ejemplo un valor que se aparta del SBS.
Catálogos
Varios campos reciben códigos de los catálogos oficiales de la SUNAT (Anexo 8 de las reglas de validación, actualizadas al 24/04/2026). Cuando la API acepta solo una parte de un catálogo, la tabla lo indica en una columna aparte.
22 catálogos, 454 códigos
Cat. 1Tipo de comprobante41 códigos
Se usa en tipoDocumento, tipoDocModificado y los tipos de documentos relacionados
Código
Descripción
La API lo emite
01
Factura
Sí
03
Boleta de venta
Sí
04
Liquidación de compra
No
05
Boletos de Transporte Aéreo que emiten las Compañías de Aviación Comercial por el servicio de transporte aéreo regular de pasajeros, emitido de manera manual, mecanizada o por medios electrónicos (BME)
No
06
Carta de porte aéreo
No
07
Nota de crédito
Sí
08
Nota de débito
Sí
09
Guía de remisión remitente
Sí
11
Póliza emitida por las Bolsas de Valores
No
12
Ticket de máquina registradora
No
13
Documento emitido por bancos, instituciones financieras, crediticias y de seguros que se encuentren bajo el control de la Superintendencia de Banca y Seguros
No
14
Recibo servicios públicos
No
15
Boletos emitidos por el servicio de transporte terrestre regular urbano de pasajeros y el ferroviario público de pasajeros prestado en vía férrea local
No
16
Boleto de viaje emitido por las empresas de transporte público interprovincial de pasajeros
No
18
Documentos emitidos por las AFP
No
19
Boleto por atracciones y espectáculos públicos
No
20
Comprobante de retención
Sí
21
Conocimiento de embarque por el servicio de transporte de carga marítima
No
23
Pólizas de Adjudicación por remate o adjudicación de bienes
No
24
Certificado de pago de regalías emitidas por PERUPETRO S.A.
No
25
Documento de atribución
No
28
Etiquetas por el pago de la Tarifa Unificada de Uso de Aeropuerto – TUUA
No
29
Documentos emitidos por la COFOPRI
No
30
Documentos emitidos por las empresas que desempeñan el rol adquirente en los sistemas de pago mediante tarjetas de crédito y débito, emitidas por bancos e instituciones financieras o crediticias, domiciliados o no en el país.
No
31
Guía de remisión transportista
Sí
32
Documentos emitidos por recaudadoras de la Garantía de Red Principal
No
34
Documento del Operador
No
35
Documento del Partícipe
No
36
Recibo de Distribución de Gas Natural
No
37
Documentos que emitan los concesionarios del servicio de revisiones técnicas
Documentos emitidos por los adq. en los sistemas de pago por tarj. de crédito emitidas por ellas mismas
No
43
Boleto de compañías de aviación transporte aéreo no regular
No
45
Documentos emitidos por centros educativos y culturales, universidades, asociaciones y fundaciones
No
55
BVME para transporte ferroviario de pasajeros
No
56
Comprobante de pago SEAE / DAE-SEAE
No
71
Guía de remisión remitente complementaria
No
72
Guía de remisión transportista complementaria
No
87
Nota de crédito especial
No
88
Nota de débito especial
No
La API emite facturas, boletas, notas, guías, retenciones y percepciones. Los demás tipos solo aparecen como documento relacionado en algunos campos.
Cat. 2Monedas30 códigos
Se usa en moneda
Código
Descripción
PEN
Sol peruano
USD
Dólar estadounidense
EUR
Euro
GBP
Libra esterlina
JPY
Yen japonés
CHF
Franco suizo
CAD
Dólar canadiense
AUD
Dólar australiano
NZD
Dólar neozelandés
HKD
Dólar de Hong Kong
SGD
Dólar de Singapur
CNY
Yuan renminbi chino
KRW
Won surcoreano
INR
Rupia india
THB
Baht tailandés
MYR
Ringgit malayo
PHP
Peso filipino
BRL
Real brasileño
MXN
Peso mexicano
CLP
Peso chileno
COP
Peso colombiano
ARS
Peso argentino
BOB
Boliviano
PYG
Guaraní paraguayo
UYU
Peso uruguayo
VES
Bolívar venezolano
SEK
Corona sueca
NOK
Corona noruega
DKK
Corona danesa
ZAR
Rand sudafricano
El catálogo de SUNAT remite a la norma ISO 4217, que tiene más monedas. Estas 30 son las que la API acepta hoy; cualquier otra responde 422 con el código 3088.
Son las más habituales. El catálogo de SUNAT usa la Recomendación 20 de UN/ECE, con cientos de unidades; la API solo exige que el código no esté vacío y la SUNAT valida el resto.
Se usa en tipoDocumentoAdquirente, id_type, tipoDocDestinatario, tipoDocRemitente y similares
Código
Descripción
-
Sin documento (consumidor final en boleta). Es un valor de la API; no figura en el catálogo oficial.
0
Documento tributario no domiciliado sin RUC
1
Documento Nacional de Identidad
4
Carnet de extranjería
6
Registro Único de Contribuyentes
7
Pasaporte
A
Cédula Diplomática de identidad
B
Documento de identidad del país de residencia (no domiciliado)
C
Tax Identification Number - TIN – Doc Trib PP.NN
D
Identification Number - IN – Doc Trib PP. JJ
E
TAM- Tarjeta Andina de Migración
F
Permiso Temporal de Permanencia - PTP
G
Salvoconducto
H
Carné Permiso Temp.Perman. - CPP
Una factura de venta interna exige RUC. RUC y DNI se validan por formato (11 y 8 dígitos); los demás tipos aceptan hasta 15 caracteres sin espacios.
Cat. 7Afectación del IGV19 códigos
Se usa en items[].afectacionIGV
Código
Descripción
Código de tributo
10
Gravado - Operación Onerosa
1000
11
Gravado – Retiro por premio
9996
12
Gravado – Retiro por donación
9996
13
Gravado – Retiro
9996
14
Gravado – Retiro por publicidad
9996
15
Gravado – Bonificaciones
9996
16
Gravado – Retiro por entrega a trabajadores
9996
17
Gravado - IVAP
1016 o 9996
20
Exonerado - Operación Onerosa
9997
21
Exonerado - Transferencia gratuita
9996
30
Inafecto - Operación Onerosa
9998
31
Inafecto – Retiro por Bonificación
9996
32
Inafecto – Retiro
9996
33
Inafecto – Retiro por Muestras Médicas
9996
34
Inafecto - Retiro por Convenio Colectivo
9996
35
Inafecto – Retiro por premio
9996
36
Inafecto - Retiro por publicidad
9996
37
Inafecto - Transferencia gratuita
9996
40
Exportación de Bienes o Servicios
9995 o 9996
En operaciones gratuitas, valorVenta es un valor referencial y no suma a totalValorVenta ni a totalImpuestos.
Cat. 8Sistema de cálculo del ISC3 códigos
Se usa en items[].sistemaISC
Código
Descripción
01
Sistema al valor (Apéndice IV, lit. A – T.U.O IGV e ISC)
02
Aplicación del Monto Fijo ( Sistema específico, bienes en el apéndice III, Apéndice IV, lit. B – T.U.O IGV e ISC)
03
Sistema de Precios de Venta al Público (Apéndice IV, lit. C – T.U.O IGV e ISC)
Cat. 9Tipo de nota de crédito13 códigos
Se usa en tipoNota con tipoDocumento 07
Código
Descripción
01
Anulación de la operación
02
Anulación por error en el RUC
03
Corrección por error en la descripción o atención de reclamo respecto de bienes adquiridos o servicios prestados Corrección por error en la descripción y/o código de producto SUNAT
04
Descuento global
05
Descuento por ítem
06
Devolución total
07
Devolución por ítem
08
Bonificación
09
Disminución en el valor
10
Otros Conceptos
11
Ajustes de operaciones de exportación
12
Ajustes afectos al IVAP
13
Corrección o modificación del monto neto pendiente de pago y/o la(s) fechas(s) de vencimiento del pago único o de las cuotas y/o los montos correspondientes a cada cuota, de ser el caso
Una nota con ítems de afectación 17 debe ser de tipo 12.
Cat. 10Tipo de nota de débito6 códigos
Se usa en tipoNota con tipoDocumento 08
Código
Descripción
01
Intereses por mora
02
Aumento en el valor
03
Penalidades/ otros conceptos
11
Ajustes de operaciones de exportación
12
Ajustes afectos al IVAP
13
Penalidades
Una nota con ítems de afectación 17 debe ser de tipo 12.
Traslado entre establecimientos de la misma empresa
05
Consignación
06
Devolución
07
Recojo de bienes transformados
08
Importación
09
Exportación
13
Otros
14
Venta sujeta a confirmación del comprador
17
Traslado de bienes para transformación
18
Traslado emisor itinerante CP
Proveedor: solo motivos 02, 07 y 13. Comprador: solo motivos 03 y 13.
Cat. 22Régimen de percepción3 códigos
Se usa en codigoRegimen en percepciones
Código
Descripción
Tasa %
01
Percepción Venta Interna
2
02
Percepción a la adquisición de combustible
1
03
Percepción realizada al agente de percepción con tasa especial
0,5
tasaPercepcion debe coincidir con la tasa del régimen.
Cat. 23Régimen de retención2 códigos
Se usa en codigoRegimen en retenciones
Código
Descripción
01
Tasa 3%
02
Tasa 6%
tasaRetencion debe coincidir con la tasa del régimen. El régimen 02 solo rige hasta el 28/02/2014.
Cat. 51Tipo de operación31 códigos
Se usa en tipoOperacion
Código
Descripción
Comprobante
0101
Venta interna no sujeta a Detracción, Retención o Percepción
Factura, Boletas
0112
Venta Interna - Sustenta Gastos Deducibles Persona Natural
Factura
0113
Venta Interna-NRUS
Boleta
0200
Exportación de Bienes
Factura, Boletas
0201
Exportación de Servicios – Prestación servicios realizados íntegramente en el país
Factura, Boletas
0202
Exportación de Servicios – Prestación de servicios de hospedaje No Domiciliado
Factura
0203
Exportación de Servicios – Transporte de navieras
Factura, Boletas
0204
Exportación de Servicios – Servicios a naves y aeronaves de bandera extranjera
Factura, Boletas
0205
Exportación de Servicios - Servicios que conformen un Paquete Turístico
Factura
0206
Exportación de Servicios – Servicios complementarios al transporte de carga
Factura, Boletas
0207
Exportación de Servicios – Suministro de energía eléctrica a favor de sujetos domiciliados en ZED
Factura, Boletas
0208
Exportación de Servicios – Prestación servicios realizados parcialmente en el extranjero
Factura, Boletas
0301
Operaciones con Carta de porte aéreo (emitidas en el ámbito nacional)
Factura, Boletas
0302
Operaciones de Transporte ferroviario de pasajeros
Factura, Boletas
0401
Ventas no domiciliados que no califican como exportación
Factura, Boletas
0501
Compra interna
Liquidación de compra
0502
Anticipos
Liquidación de compra
0503
Compra de oro
Liquidación de compra
1001
Operación Sujeta a Detracción
Factura, Boletas
1002
Operación Sujeta a Detracción- Recursos Hidrobiológicos
Factura, Boletas
1003
Operación Sujeta a Detracción- Servicios de Transporte Pasajeros
Factura, Boletas
1004
Operación Sujeta a Detracción- Servicios de Transporte Carga
Factura, Boletas
2001
Operación Sujeta a Percepción
Factura, Boletas
2002
Operación sujeta a Retención de Renta de segunda categoría
Factura
2100
Créditos a empresas
Factura, Boletas
2101
Créditos de consumo revolvente
Factura, Boletas
2102
Créditos de consumo no revolvente
Factura, Boletas
2103
Otras operaciones no gravadas - Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público
Factura, Boletas
2104
Otras operaciones no gravadas - Empresas del sistema de seguros
Factura, Boletas
2105
Comprobante emitido por AFP
Boleta
2106
Venta Nacional a Turistas - Tax Free
Factura
Las operaciones 1001 a 1004 agregan automáticamente la leyenda 2006. Los códigos 05xx son de liquidación de compra, que esta API no emite.
Cat. 52Leyendas15 códigos
Se usa en leyendas[]
Código
Descripción
1000
Monto en Letras
1002
Leyenda "TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE"
2000
Leyenda “COMPROBANTE DE PERCEPCIÓN”
2001
Leyenda “BIENES TRANSFERIDOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA"
2002
Leyenda “SERVICIOS PRESTADOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA”
2003
Leyenda “CONTRATOS DE CONSTRUCCIÓN EJECUTADOS EN LA AMAZONÍA REGIÓN SELVA”
2004
Leyenda “Agencia de Viaje - Paquete turístico”
2005
Leyenda “Venta realizada por emisor itinerante”
2006
Leyenda "Operación sujeta a detracción"
2007
Leyenda "Operación sujeta al IVAP"
2008
Leyenda: “VENTA EXONERADA DEL IGV-ISC-IPM. PROHIBIDA LA VENTA FUERA DE LA ZONA COMERCIAL DE TACNA”
2009
Leyenda: “PRIMERA VENTA DE MERCANCÍA IDENTIFICABLE ENTRE USUARIOS DE LA ZONA COMERCIAL”
2010
Restitucion Simplificado de Derechos Arancelarios
2011
Leyenda “EXPORTACION DE SERVICIOS - DECRETO LEGISLATIVO Nº 919”
2012
Observaciones relacionadas con el traslado de mercaderías
No repitas un código en el mismo comprobante.
Cat. 53Cargos, descuentos y deducciones22 códigos
Se usa en items[].descuentoTipo, items[].cargoTipo
Código
Descripción
Nivel
Se acepta en un ítem
00
Descuentos que afectan la base imponible del IGV/IVAP
Item
Sí
01
Descuentos que no afectan la base imponible del IGV/IVAP
Item
Sí
02
Descuentos globales que afectan la base imponible del IGV/IVAP
Global
No
03
Descuentos globales que no afectan la base imponible del IGV/IVAP
Global
No
04
Descuentos globales por anticipos gravados que afectan la base imponible del IGV/IVAP
Global
No
05
Descuentos globales por anticipos exonerados
Global
No
06
Descuentos globales por anticipos inafectos
Global
No
07
Factor de compensación - Decreto de urgencia N. 010-2004
Item
Sí
20
Anticipo de ISC
Global
No
45
FISE
Global
No
46
Recargo al consumo y/o propinas
Global
No
47
Cargos que afectan la base imponible del IGV/IVAP
Item
Sí
48
Cargos que no afectan la base imponible del IGV/IVAP
Item
Sí
49
Cargos globales que afectan la base imponible del IGV/IVAP
Global
No
50
Cargos globales que no afectan la base imponible del IGV/IVAP
Global
No
51
Percepción venta interna
Global
No
52
Percepción a la adquisición de combustible
Global
No
53
Percepción realizada al agente de percepción con tasa especial
Global
No
54
Factor de aportación - Decreto de urgencia N. 010-2004
Item
Sí
61
Retención de renta por anticipos
Global
No
62
Retención del IGV
Global
No
63
Retención de renta de segunda categoría
Global
No
Los de nivel global se envían con los totales (totalDescuentos, totalCargos, recargoConsumo), no por ítem. Un ítem no puede tener descuento y cargo a la vez; el cargo solo admite 47 o 48.
Cat. 54Bienes y servicios sujetos a detracción39 códigos
Se usa en adicional.detraccion.codigoSujeto
Código
Descripción
001
Azúcar y melaza de caña
002
Arroz
003
Alcohol etílico
004
Recursos hidrobiológicos
005
Maíz amarillo duro
007
Caña de azúcar
008
Madera
009
Arena y piedra.
010
Residuos, subproductos, desechos, recortes y desperdicios
011
Bienes gravados con el IGV, o renuncia a la exoneración
012
Intermediación laboral y tercerización
013
Animales vivos
014
Carnes y despojos comestibles
015
Abonos, cueros y pieles de origen animal
016
Aceite de pescado
017
Harina, polvo y “pellets” de pescado, crustáceos, moluscos y demás invertebrados acuáticos
019
Arrendamiento de bienes muebles
020
Mantenimiento y reparación de bienes muebles
021
Movimiento de carga
022
Otros servicios empresariales
023
Leche
024
Comisión mercantil
025
Fabricación de bienes por encargo
026
Servicio de transporte de personas
027
Servicio de transporte de carga
028
Transporte de pasajeros
030
Contratos de construcción
031
Oro gravado con el IGV
032
Paprika y otros frutos de los generos capsicum o pimienta
034
Minerales metálicos no auríferos
035
Bienes exonerados del IGV
036
Oro y demás minerales metálicos exonerados del IGV
037
Demás servicios gravados con el IGV
039
Minerales no metálicos
040
Bien inmueble gravado con IGV
041
Plomo
044
Servicio de beneficio de minerales metálicos gravado con el IGV
045
Minerales de oro y sus concentrados gravados con el IGV
099
Ley 30737
Cat. 55Concepto tributario o propiedad del ítem115 códigos
Se usa en items[].adicional
Código
Descripción
La API lo envía
3001
Detracciones: Recursos Hidrobiológicos-Matrícula de la embarcación
No
3002
Detracciones: Recursos Hidrobiológicos-Nombre de la embarcación
No
3003
Detracciones: Recursos Hidrobiológicos-Tipo de especie vendida
No
3004
Detracciones: Recursos Hidrobiológicos-Lugar de descarga
No
3005
Detracciones: Recursos Hidrobiológicos-Fecha de descarga
No
3006
Detracciones: Recursos Hidrobiológicos-Cantidad de especie vendida
No
3050
Transportre Terreste - Número de asiento
Sí
3051
Transporte Terrestre - Información de manifiesto de pasajeros
Sí
3052
Transporte Terrestre - Número de documento de identidad del pasajero
Sí
3053
Transporte Terrestre - Tipo de documento de identidad del pasajero
Sí
3054
Transporte Terrestre - Nombres y apellidos del pasajero
Sí
3055
Transporte Terrestre - Ciudad o lugar de destino - Ubigeo
Sí
3056
Transporte Terrestre - Ciudad o lugar de destino - Dirección detallada
No
3057
Transporte Terrestre - Ciudad o lugar de origen - Ubigeo
Sí
3058
Transporte Terrestre - Ciudad o lugar de origen - Dirección detallada
No
3059
Transporte Terrestre - Fecha de inicio programado
Sí
3060
Transporte Terrestre - Hora de inicio programado
Sí
4000
Beneficio Hospedajes-Paquete turístico: Código de país de emisión del pasaporte
Sí
4001
Beneficio Hospedajes: Código de país de residencia del sujeto no domiciliado
Sí
4002
Beneficio Hospedajes: Fecha de ingreso al país
Sí
4003
Beneficio Hospedajes: Fecha de Ingreso al Establecimiento
Sí
4004
Beneficio Hospedajes: Fecha de Salida del Establecimiento
Sí
4005
Beneficio Hospedajes: Número de Días de Permanencia
Sí
4006
Beneficio Hospedajes: Fecha de Consumo
Sí
4007
Beneficio Hospedajes-Paquete turístico: Nombres y apellidos del huesped
Sí
4008
Beneficio Hospedajes-Paquete turístico: Tipo de documento de identidad del huesped
Sí
4009
Beneficio Hospedajes-Paquete turístico: Número de documento de identidad del huesped
Sí
4030
Carta Porte Aéreo: Lugar de origen - Código de ubigeo
No
4031
Carta Porte Aéreo: Lugar de origen - Dirección detallada
No
4032
Carta Porte Aéreo: Lugar de destino - Código de ubigeo
No
4033
Carta Porte Aéreo: Lugar de destino - Dirección detallada
No
4040
BVME transporte ferroviario: Pasajero - Apellidos y Nombres
No
4041
BVME transporte ferroviario: Pasajero - Tipo de documento de identidad
No
4042
BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de origen - Código de ubigeo
No
4043
BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de origen - Dirección detallada
No
4044
BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de destino - Código de ubigeo
No
4045
BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de destino - Dirección detallada
No
4046
BVME transporte ferroviario: Servicio transporte:Número de asiento
No
4047
BVME transporte ferroviario: Servicio transporte: Hora programada de inicio de viaje
No
4048
BVME transporte ferroviario: Servicio transporte: Fecha programada de inicio de viaje
No
4049
BVME transporte ferroviario: Pasajero - Número de documento de identidad
No
4060
Regalía Petrolera: Decreto Supremo de aprobación del contrato
No
4061
Regalía Petrolera: Area de contrato (Lote)
No
4062
Regalía Petrolera: Periodo de pago - Fecha de inicio
No
4063
Regalía Petrolera: Periodo de pago - Fecha de fin
No
4064
Regalía Petrolera: Fecha de Pago
No
5000
Proveedores Estado: Número de Expediente
No
5001
Proveedores Estado: Código de Unidad Ejecutora
No
5002
Proveedores Estado: N° de Proceso de Selección
No
5003
Proveedores Estado: N° de Contrato
No
5010
Numero de Placa
Sí
5011
Categoria
No
5012
Marca
No
5013
Modelo
No
5014
Color
No
5015
Motor
No
5016
Combustible
No
5017
Form. Rodante
No
5018
VIN
No
5019
Serie/Chasis
No
5020
Año fabricacion
No
5021
Año modelo
No
5022
Version
No
5023
Ejes
No
5024
Asientos
No
5025
Pasajeros
No
5026
Ruedas
No
5027
Carroceria
No
5028
Potencia
No
5029
Cilindros
No
5030
Ciliindrada
No
5031
Peso Bruto
No
5032
Peso Neto
No
5033
Carga Util
No
5034
Longitud
No
5035
Altura
No
5036
Ancho
No
5060
Gas Natural - Lectura Anterior
No
5061
Gas Natural - Lectura Actual
No
5062
Gas Natural - Volumen consumido a Condiciones de lectura
No
5063
Gas Natural - Factor de correccion del volumen
No
5064
Gas Natural - Volumen a condiciones Estandares
No
5065
Gas Natural - Volumen facturado
No
5066
Gas Natural - Poder Calorifico Superior Promedio del Gas
No
6000
Comercialización de Oro: Código Unico Concesión Minera
No
6001
Comercialización de Oro: N° declaración compromiso
No
6002
Comercialización de Oro: N° Reg. Especial .Comerci. Oro
No
6003
Comercialización de Oro: N° Resolución que autoriza Planta de Beneficio
No
6004
Comercialización de Oro: Ley Mineral (% concent. oro)
No
6005
Comercialización de Oro : Naturaleza del mineral
No
6006
Comercialización de Oro : Nombre del derecho minero
No
7000
Gastos Art. 37 Renta: Número de Placa
Sí
7001
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Tipo de préstamo
No
7002
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Indicador de Primera Vivienda
No
7003
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Partida Registral
No
7004
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Número de contrato
No
7005
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Fecha de otorgamiento del crédito
No
7006
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Código de ubigeo
No
7007
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Dirección completa
No
7008
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Urbanización
No
7009
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Provincia
No
7010
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Distrito
No
7011
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Departamento
No
7012
Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Monto del crédito otorgado (capital)
No
7013
Empresas del sistema de seguro: Número de póliza
No
7014
Empresas del sistema de seguro: Fecha de inicio/término de vigencia de cobertura
No
7015
Empresas del sistema de seguro: Tipo de seguro
No
7016
Empresas del sistema de seguro: Suma asegurada / alcance de cobertura o monto
No
7017
AFP: CUSPP
No
7018
AFP: Periodo
No
7019
AFP: Monto del interes moratorio
No
7020
Partida arancelaria
No
7021
Numero de declaracion aduanera (DAM)
No
7022
Indicador de bien normalizado
No
7023
Numero de serie en la DAM o DS
No
Son los datos adicionales de un ítem: transporte terrestre de pasajeros (3050 a 3060), hospedaje y paquete turístico (4000 a 4009), placas (5010 y 7000). El transporte de carga se envía por el bloque servicioTransporteCarga.
Cat. 59Medios de pago22 códigos
Se usa en adicional.detraccion.medioPago
Código
Descripción
Se acepta en detracción
001
Depósito en cuenta
Sí
002
Giro
Sí
003
Transferencia de fondos
Sí
004
Orden de pago
Sí
005
Tarjeta de débito
Sí
006
Tarjeta de crédito emitida en el país por una empresa del sistema financiero
Sí
007
Cheques con la cláusula de "NO NEGOCIABLE", "INTRANSFERIBLES", "NO A LA ORDEN" u otra equivalente, a que se refiere el inciso g) del artículo 5° de la ley
Sí
008
Efectivo, por operaciones en las que no existe obligación de utilizar medio de pago
Sí
009
Efectivo, en los demás casos
Sí
010
Medios de pago usados en comercio exterior
Sí
011
Documentos emitidos por las EDPYMES y las cooperativas de ahorro y crédito no autorizadas a captar depósitos del público
Sí
012
Tarjeta de crédito emitida en el país o en el exterior por una empresa no perteneciente al sistema financiero, cuyo objeto principal sea la emisión y administración de tarjetas de crédito
Sí
013
Tarjetas de crédito emitidas en el exterior por empresas bancarias o financieras no domiciliadas
No
101
Transferencias – Comercio exterior
No
102
Cheques bancarios - Comercio exterior
No
103
Orden de pago simple - Comercio exterior
No
104
Orden de pago documentario - Comercio exterior
No
105
Remesa simple - Comercio exterior
No
106
Remesa documentaria - Comercio exterior
No
107
Carta de crédito simple - Comercio exterior
No
108
Carta de crédito documentario - Comercio exterior
No
999
Otros medios de pago
No
Cat. 61Documentos relacionados al transporte26 códigos
Se usa en documentosRelacionados[].tipoDoc en guías
Código
Descripción
Guía aplicable
01
Factura
remitente, transportista
03
Boleta de Venta
remitente, transportista
04
Liquidación de Compra
remitente, transportista
09
Guía de Remisión Remitente
remitente, transportista
12
Ticket o cinta emitido por máquina registradora
remitente, transportista
31
Guía de Remisión Transportista
solo transportista
48
Comprobante de Operaciones – Ley N° 29972
remitente, transportista
49
Constancia de Depósito - IVAP (Ley 28211)
solo remitente
50
Declaración Aduanera de Mercancías
remitente, transportista
52
Declaración Simplificada (DS)
remitente, transportista
65
Autorización de Circulación para transportar MATPEL – Callao
solo transportista
66
Autorización de Circulación para transporte de carga y mercancías en Lima Metropolitana
solo transportista
67
Permiso de Operación Especial para el servicio de transporte de MATPEL - MTC
solo transportista
68
Habilitación Sanitaria de Transporte Terrestre de Productos Pesqueros y Acuícolas
solo transportista
69
Permiso / Autorización de operación de transporte de mercancías
solo transportista
71
Resolución de Adjudicación de bienes – SUNAT
solo remitente
72
Resolución de Comiso de bienes – SUNAT
solo remitente
73
Guía de Transporte Forestal o de Fauna - SERFOR
solo remitente
74
Guía de Tránsito – SUCAMEC
solo remitente
75
Autorización para operar como empresa de Saneamiento Ambiental – MINSA -
solo remitente
76
Autorización para manejo y recojo de residuos sólidos peligrosos y no peligrosos
solo remitente
77
Certificado fitosanitario la movilización de plantas, productos vegetales, y otros artículos reglamentados
solo remitente
78
Registro Único de Usuarios y Transportistas de Alcohol Etílico
solo remitente
80
Constancia de Depósito – Detracción
remitente, transportista
81
Código de autorización emitida por el SCOP
solo remitente
82
Declaración jurada de mudanza
solo transportista
La guía transportista debe incluir al menos una guía remitente (09) o transportista (31).
Referencia de endpoints
Cada endpoint indica sus campos, un ejemplo de request y todas las respuestas posibles. Todos se pueden probar en Demo.
Facturas y boletas
api.flashfact.pe · API Key + firma HMAC
Una factura (01) o boleta (03) se crea en estado DRAFT y se envía a SUNAT en segundo plano. Consulta el detalle hasta ver ACCEPTED o REJECTED.
Emitir una factura o boleta
POST/v1/invoices
Valida el comprobante con las reglas de SUNAT, lo guarda y lo encola. La respuesta solo confirma que quedó en cola: el resultado de SUNAT llega después. Es idempotente por serie y correlativo.
{"tipoDocumento":"03","tipoOperacion":"0101","serie":"B001","correlativo":"00000123","fechaEmision":"2026-10-11","moneda":"PEN","tipoDocumentoAdquirente":"1","numDocumentoAdquirente":"12345678","razonSocialAdquirente":"JUAN PEREZ","totalImpuestos":18.00,"totalValorVenta":100.00,"totalPrecioVenta":118.00,"importeTotal":118.00,"baseImponibleIGV":100.00,"totalIGV":18.00,"formaPago":{"tipo":"Contado"},"correosNotificacion":["juan@correo.com"],"items":[{"numeroItem":1,"unidadMedida":"NIU","cantidad":2,"descripcion":"Polo de algodón","valorUnitario":50.00,"precioUnitario":59.00,"valorVenta":100.00,"afectacionIGV":"10","igv":18.00,"totalImpuestosItem":18.00}]}
{"data":{"id":1042,"tipoDocumento":"03","tipoOperacion":"0101","serie":"B001","correlativo":"00000123","fechaEmision":"2026-10-11","moneda":"PEN","tipoDocumentoAdquirente":"1","numDocumentoAdquirente":"12345678","razonSocialAdquirente":"JUAN PEREZ","totalImpuestos":18,"totalValorVenta":100,"totalPrecioVenta":118,"importeTotal":118,"baseImponibleIGV":100,"totalIGV":18,"formaPago":"Contado","estado":"DRAFT","items":[{"numeroItem":1,"descripcion":"Polo de algodón","cantidad":2,"valorVenta":100,"afectacionIGV":"10"}],"fechaCreacion":"2026-10-11T15:04:05Z"}}
Notas
Los totales se validan contra los ítems con tolerancia de ±1 sol. Un descuento o cargo global se prorratea entre las bases por tipo de afectación.
En producción la empresa necesita certificado digital y usuario SOL secundario configurados; sin ellos el envío falla.
Listar comprobantes
GET/v1/invoices
Parámetros de query
11 campos
Campo
Tipo
Descripción
tipoDocumento
string
01 o 03.
estado
string
Uno o varios separados por coma (REJECTED,FAILED): DRAFT, SENDING, SENT, ACCEPTED, REJECTED, FAILED, VOID_PENDING o VOIDED.
fechaDesde / fechaHasta
string
YYYY-MM-DD, ambos inclusive.
serie
string
Una o varias series separadas por coma: F001,B001.
{"data":{"id":1042,"tipoDocumento":"03","serie":"B001","correlativo":"00000123","importeTotal":118,"estado":"ACCEPTED","codigoRespuesta":"0","descripcionRespuesta":"La Boleta de Venta numero B001-00000123, ha sido aceptada","xmlUrl":"https://…/B001-00000123.xml?X-Amz-Expires=900…","cdrUrl":"https://…/R-B001-00000123.xml?…","pdfUrl":"https://…/B001-00000123.pdf?…","emailLogs":[{"toEmail":"juan@correo.com","status":"DELIVERED","sentAt":"2026-10-11T15:04:20Z"}],"fechaCreacion":"2026-10-11T15:04:05Z"}}
Notas
xmlUrl, cdrUrl y pdfUrl son enlaces firmados que duran 15 minutos y solo aparecen cuando el archivo ya existe. Pide el detalle otra vez para renovarlos.
Si el comprobante fue dado de baja verás motivoBaja, ticketBaja, estadoBaja (PENDING, SENDING, SENT, COMPLETED, ERROR, FAILED), fechaEnvioBaja y fechaResolucion.
Totales de un filtro
GET/v1/invoices/summary
Acepta los mismos filtros que el listado (sin paginación) y devuelve cantidades y montos vigentes.
Parámetros de query
9 campos
Campo
Tipo
Descripción
tipoDocumento
string
01 o 03.
estado
string
Uno o varios separados por coma (REJECTED,FAILED): DRAFT, SENDING, SENT, ACCEPTED, REJECTED, FAILED, VOID_PENDING o VOIDED.
fechaDesde / fechaHasta
string
YYYY-MM-DD, ambos inclusive.
serie
string
Una o varias series separadas por coma: F001,B001.
Vuelve a encolar un comprobante que quedó en DRAFT (por ejemplo, si falló la cola al crearlo) o reenvía uno en FAILED, con el mismo número, después de corregir la causa del error (certificado, credenciales SOL…). El motivo del último intento fallido viene en descripcionRespuesta.
Parámetros de ruta
1 campo · 1 obligatorio
Campo
Tipo
Descripción
idobligatorio
number
ID numérico del documento (campo id de la respuesta).
Respuestas
json
{"data":{"id":1042,"estado":"DRAFT","mensaje":"comprobante enviado a la cola de emisión"}}
Anular un comprobante
POST/v1/invoices/{id}/void
Factura: comunicación de baja. Boleta: se incluye en el resumen diario. Solo si está ACCEPTED y dentro de 7 días desde la emisión.
Parámetros de ruta
1 campo · 1 obligatorio
Campo
Tipo
Descripción
idobligatorio
number
ID numérico del documento (campo id de la respuesta).
Cuerpo (JSON)
1 campo · 1 obligatorio
Campo
Tipo
Descripción
motivoobligatorio
string
Mínimo 3 caracteres. Obligatorio para facturas; las boletas no lo usan.
Ejemplo de request
json
{"motivo":"Error en el importe"}
Respuestas
json
{"data":{"estado":"VOID_PENDING"}}
Notas
El avance se consulta en el detalle (estado y estadoBaja) o en GET /v1/invoices/bajas.
Listar comunicaciones de baja
GET/v1/invoices/bajas
Parámetros de query
3 campos
Campo
Tipo
Descripción
invoiceId
number
Solo las bajas que incluyen ese comprobante.
page
number
Página, desde 1. Por defecto 1.
perPage
number
Resultados por página. Por defecto 20.
Respuestas
json
{"data":[{"id":7,"fechaReferencia":"2026-10-11","ticket":"202610110001","estado":"COMPLETED","cdrUrl":"https://…","documentos":[{"invoiceId":1042,"serie":"F001","correlativo":"00000010","motivoBaja":"Error en el importe"}]}],"meta":{"total":1,"page":1,"perPage":20}}
Enviar el comprobante por correo
POST/v1/invoices/{id}/send-email
Envía el PDF, XML y CDR de un comprobante ya emitido a las direcciones indicadas.
Parámetros de ruta
1 campo · 1 obligatorio
Campo
Tipo
Descripción
idobligatorio
number
ID numérico del documento (campo id de la respuesta).
Cuerpo (JSON)
1 campo · 1 obligatorio
Campo
Tipo
Descripción
emails[]obligatorio
arreglo
Al menos un correo.
Ejemplo de request
json
{"emails":["contabilidad@cliente.com"]}
Respuestas
json
{"data":{"status":"sent"}}
Enlace del PDF para compartir
GET/v1/invoices/{id}/pdf-link
Enlace de larga duración (7 días) al PDF, pensado para enviarlo por chat o WhatsApp.
Parámetros de ruta
1 campo · 1 obligatorio
Campo
Tipo
Descripción
idobligatorio
number
ID numérico del documento (campo id de la respuesta).
Vuelve a generar el PDF con la plantilla vigente de la empresa. El XML y el CDR no se tocan. Aplica igual a /v1/notes, /v1/retenciones, /v1/percepciones y /v1/guias/*.
Parámetros de ruta
1 campo · 1 obligatorio
Campo
Tipo
Descripción
idobligatorio
number
ID numérico del documento (campo id de la respuesta).
Respuestas
json
{"data":{"status":"queued"}}
Notas de crédito y débito
api.flashfact.pe · API Key + firma HMAC
Corrigen o ajustan una factura o boleta ya emitida. Se envían a SUNAT igual que un comprobante: nacen en DRAFT y se resuelven en segundo plano.
Emitir una nota de crédito o débito
POST/v1/notes
Si la moneda no es PEN y no envías tipoCambio, se hereda el del comprobante afectado cuando existe. Es idempotente por serie y correlativo.
Nota
14 campos · 13 obligatorios
Campo
Tipo
Descripción
tipoDocumentoobligatorio
string
07 nota de crédito u 08 nota de débito.
serieobligatorio
string
F + 3 alfanuméricos si modifica una factura (FC01); B + 3 si modifica una boleta (BC01).
Valor referencial unitario, para operaciones gratuitas.
adicional
objeto
Datos de catálogo 55 (transporte de carga, pasajeros, hospedaje, paquete turístico).
Forma de pago (opcional)
3 campos
Campo
Tipo
Descripción
formaPago.tipo
string
Contado o Credito.
formaPago.monto
number
Monto pendiente de pago (crédito).
formaPago.cuotas[]
arreglo
Solo crédito. Cada cuota: numero, monto, fechaVence (YYYY-MM-DD).
Tipo de cambio
5 campos
Campo
Tipo
Descripción
tipoCambio
number | string
Tipo de cambio a PEN si la moneda no es PEN (hasta 4 enteros y 6 decimales). Si lo omites se usa el SBS aplicable.
fechaCambio
string
YYYY-MM-DD. Fecha a la que corresponde el tipo de cambio enviado (informativa).
motivoTipoCambio
string
Por qué difiere del SBS (TC pactado, banco, contrato).
confirmarTipoCambio
boolean
Obligatorio en true si tu valor se aparta más de 10 % del SBS.
fechaHechoGenerador
string
YYYY-MM-DD. Fecha que fija el tipo de cambio del IGV. Por defecto, fechaEmision.
Ejemplo de request
json
{"tipoDocumento":"07","serie":"FC01","correlativo":"00000001","fechaEmision":"2026-10-11","moneda":"PEN","tipoNota":"01","motivoNota":"Anulación de la operación","docModificado":"F001-00000010","tipoDocModificado":"01","tipoDocumentoAdquirente":"6","numDocumentoAdquirente":"20123456789","razonSocialAdquirente":"EMPRESA SAC","totalImpuestos":18.00,"totalValorVenta":100.00,"totalPrecioVenta":118.00,"importeTotal":118.00,"baseImponibleIGV":100.00,"totalIGV":18.00,"items":[{"numeroItem":1,"unidadMedida":"NIU","cantidad":2,"descripcion":"Polo de algodón","valorUnitario":50.00,"precioUnitario":59.00,"valorVenta":100.00,"afectacionIGV":"10","igv":18.00,"totalImpuestosItem":18.00}]}
{"data":{"id":310,"tipoDocumento":"07","serie":"FC01","correlativo":"00000001","fechaEmision":"2026-10-11","moneda":"PEN","tipoNota":"01","motivoNota":"Anulación de la operación","docModificado":"F001-00000010","tipoDocModificado":"01","importeTotal":118,"estado":"DRAFT","fechaCreacion":"2026-10-11T15:10:00Z"}}
Listar notas
GET/v1/notes
Parámetros de query
5 campos
Campo
Tipo
Descripción
tipoDocumento
string
07 u 08.
estado
string
DRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
docModificado
string
Solo las notas que afectan a ese comprobante, por ejemplo F001-00000010.
{"data":{"id":310,"tipoDocumento":"07","serie":"FC01","correlativo":"00000001","fechaEmision":"2026-10-11","moneda":"PEN","tipoNota":"01","motivoNota":"Anulación de la operación","docModificado":"F001-00000010","tipoDocModificado":"01","importeTotal":118,"estado":"DRAFT","fechaCreacion":"2026-10-11T15:10:00Z"}}
Retenciones y percepciones
api.flashfact.pe · API Key + firma HMAC
Comprobantes de retención (20) y percepción (40). Cada uno referencia documentos relacionados y, si están en moneda extranjera, un tipo de cambio por documento.
Emitir un comprobante de retención
POST/v1/retenciones
Comprobante
9 campos · 8 obligatorios
Campo
Tipo
Descripción
serieobligatorio
string
R + 3 alfanuméricos (R001).
correlativoobligatorio
string
Numérico, de 1 a 8 dígitos.
fechaEmisionobligatorio
string
YYYY-MM-DD.
codigoRegimenobligatorio
string
Catálogo 23: 01 régimen general (3 %), 02 régimen especial (6 %, solo hasta 28/02/2014).
tasaRetencionobligatorio
number
Debe coincidir con la tasa del régimen.
tipoDocumentoProveedorobligatorio
string
Siempre 6 (RUC).
rucProveedorobligatorio
string
11 dígitos.
razonSocialProveedorobligatorio
string
Razón social.
direccionProveedor / observaciones / redondeo
varios
Opcionales.
Documentos relacionados (documentos[])
10 campos · 6 obligatorios
Campo
Tipo
Descripción
tipoDocumentoobligatorio
string
01, 12, 07, 08 o 20.
numeroDocumentoobligatorio
string
serie-correlativo del documento relacionado.
fechaEmision / importeTotal / monedaobligatorio
varios
Datos del documento.
numeroPago / fechaPago / importePago / monedaPago
varios
Datos del pago. El par documento más numeroPago no puede repetirse.
importeRetenidoobligatorio
number
Mayor que 0.
fechaRetencionobligatorio
string
YYYY-MM-DD.
importeNetoPagadoobligatorio
number
Mayor que 0.
monedaOrigen
string
Si la envías debe coincidir con la moneda del documento.
tipoCambio
number | string
Obligatorio para SUNAT si el documento no está en PEN (salvo nota de crédito). Si falta se usa el SBS de la fecha de pago o cobro.
Guía de remisión remitente (09) y transportista (31). SUNAT las procesa con un ticket asíncrono, así que pueden tardar en pasar de SENT a ACCEPTED.
Emitir una guía de remisión remitente
POST/v1/guias/remitente
Guía
20 campos · 12 obligatorios
Campo
Tipo
Descripción
serieobligatorio
string
T + 3 alfanuméricos en la guía remitente (T001); V + 3 en la transportista (V001).
correlativoobligatorio
string
Numérico, de 1 a 8 dígitos.
fechaEmisionobligatorio
string
YYYY-MM-DD.
horaEmisionobligatorio
string
HH:MM:SS. A diferencia de las facturas, es obligatoria.
motivoTrasladoobligatorio
string
Catálogo 20: 01 venta, 02 compra, 04 traslado entre establecimientos...
fechaInicioTrasladoobligatorio
string
YYYY-MM-DD.
pesoBrutoobligatorio
number
Mayor que 0.
unidadPesoobligatorio
string
KGM o TNE.
observaciones
string
Texto libre.
indicadores[]
arreglo
Textos que activan reglas: SUNAT_Envio_IndicadorTrasladoVehiculoM1L (traslado en vehículo M1 o L, sin transportista) y SUNAT_Envio_IndicadorVehiculoConductoresTransp (vehículo y conductores en transporte público).
Conductor principal. Mismas condiciones que la placa.
Líneas (lineas[])
4 campos · 3 obligatorios
Campo
Tipo
Descripción
cantidadobligatorio
number
Mayor que 0.
unidadobligatorio
string
Código de unidad UN/ECE.
descripcionobligatorio
string
Descripción de la mercancía.
codProducto / codSUNAT / partida
string
Código interno, código SUNAT de producto y partida arancelaria.
Ejemplo de request
json
{"serie":"T001","correlativo":"00000001","fechaEmision":"2026-10-11","horaEmision":"10:30:00","tipoDocDestinatario":"6","numDocDestinatario":"20123456789","nombreDestinatario":"CLIENTE SAC","motivoTraslado":"01","modalidadTransporte":"02","fechaInicioTraslado":"2026-10-12","pesoBruto":120.5,"unidadPeso":"KGM","placa":"ABC123","tipoDocConductor":"1","numDocConductor":"12345678","nombresConductor":"PEDRO","apellidosConductor":"RAMOS","ubigeoOrigen":"150101","direccionOrigen":"Av. Lima 123","ubigeoDestino":"040101","direccionDestino":"Calle Mercado 456","lineas":[{"cantidad":10,"unidad":"NIU","descripcion":"Caja de polos"}]}
T + 3 alfanuméricos en la guía remitente (T001); V + 3 en la transportista (V001).
correlativoobligatorio
string
Numérico, de 1 a 8 dígitos.
fechaEmisionobligatorio
string
YYYY-MM-DD.
horaEmisionobligatorio
string
HH:MM:SS. A diferencia de las facturas, es obligatoria.
motivoTrasladoobligatorio
string
Catálogo 20: 01 venta, 02 compra, 04 traslado entre establecimientos...
fechaInicioTrasladoobligatorio
string
YYYY-MM-DD.
pesoBrutoobligatorio
number
Mayor que 0.
unidadPesoobligatorio
string
KGM o TNE.
observaciones
string
Texto libre.
indicadores[]
arreglo
Textos que activan reglas: SUNAT_Envio_IndicadorTrasladoVehiculoM1L (traslado en vehículo M1 o L, sin transportista) y SUNAT_Envio_IndicadorVehiculoConductoresTransp (vehículo y conductores en transporte público).
Consulta de DNI y RUC, registro de clientes y locales anexos. Estos recursos usan nombres de campo en snake_case, a diferencia de los comprobantes.
Consultar un DNI o RUC
GET/v1/customers/lookup
Consulta RENIEC o SUNAT y guarda el cliente en tu empresa en segundo plano. Para un RUC devuelve también el estado y la condición de domicilio.
Parámetros de query
2 campos · 2 obligatorios
Campo
Tipo
Descripción
tipoobligatorio
string
Catálogo 6: 1 para DNI, 6 para RUC. Otros valores, incluido DNI o RUC en texto, responden 404.
numeroobligatorio
string
Número de documento.
Respuestas
json
{"data":{"id_type":"6","id_number":"20123456789","name":"EMPRESA SAC","address":"AV. LIMA 123 - LIMA","estado":"ACTIVO","condicion":"HABIDO"}}
Notas
Los datos vienen de registros públicos y fuentes externas: pueden estar incompletos, desactualizados o no estar disponibles. Revísalos antes de emitir (Términos de uso, sección 4).
Registrar un cliente
POST/v1/customers
Crea un cliente. Si ya existe uno con ese tipo y número de documento responde 409; no actualiza el existente.
En comprobantes en moneda extranjera, tipoCambio, tipoCambioOrigen y tipoCambioVerificacion indican el valor usado y su origen.
Cuenta y empresas
app-api.flashfact.pe · Bearer JWT de tu sesión
Estos endpoints los usa el panel con tu sesión (Bearer JWT, rol propietario o administrador). Te sirven para dar de alta empresas y subir su certificado sin salir de tu sistema. Los errores aquí usan los códigos INVALID_REQUEST, CONFLICT y FORBIDDEN en lugar de BAD_REQUEST.
Agregar una empresa
POST/v1/settings/companies
Registra un RUC y genera su par Access Key ID y Secret. El Secret se devuelve una sola vez en esta respuesta: guárdalo.
Cuerpo (JSON)
4 campos · 2 obligatorios
Campo
Tipo
Descripción
rucobligatorio
string
RUC de 11 dígitos. No puedes registrar el mismo RUC dos veces.
business_nameobligatorio
string
Razón social.
sol_username
string
Usuario SOL secundario, hasta 8 letras o números. Sin el RUC: lo anteponemos nosotros.
sol_password
string
Clave SOL, hasta 64 caracteres. Va junto con sol_username.
{"data":{"external_id":"b6f1c0de-5c1e-4c58-9a57-5b8f1d2a9e11","access_key_id":"WISNA_9f2c4a7e1b3d5c6a8e0f1a2b3c4d5e6f","secret":"…se muestra una sola vez…","ruc":"20123456789","business_name":"EMPRESA SAC"}}