Flashfact Conecta

Conecta tu tienda online o tu ERP a tu cuenta de Flashfact sin dejar de usar el panel. Emites, anulas y consultas comprobantes con una key; la numeración es la misma de tu panel, así que nunca se duplica.

URL basehttps://app-api.flashfact.pe

Key y token Bearer · JSON · v1

Sin conectar

Introducción

Flashfact Conecta es para cuentas que ya usan el panel de Flashfact y quieren conectar su tienda online, su ERP o cualquier otro sistema, sin dejar de usar el panel. Creas una key en Configuración → Conecta, la cambias por un token y emites, anulas y consultas comprobantes por app-api.flashfact.pe.

Lo que emites con tu key y lo que emites en el panel comparten serie, correlativo, límite mensual y certificado: es la misma cuenta. Por eso nunca se duplica un número, aunque emitas desde los dos lados a la vez.

Cómo funciona

  1. Creas una key en el panel (un Access Key ID y un Secret). Tu plan define cuántas puedes tener.
  2. Tu sistema cambia la key por un token de 15 minutos y lo envía en cada petición.
  3. Con el token emites, anulas y consultas. Lo que no sea eso —series, sucursales, tu cuenta— se sigue administrando desde el panel.

Formato de las respuestas

  • JSON en UTF-8. Un recurso viene en { "data": … }; un listado añade "meta": { total, page, perPage }.
  • Los comprobantes usan camelCase en español (numDocumentoAdquirente). Las series y las keys usan snake_case (next_correlativo).
  • Las fechas van en YYYY-MM-DD; las marcas de tiempo, en ISO 8601 UTC.

Primeros pasos

De tu key a tu primer comprobante aceptado por SUNAT, en cuatro pasos.

  1. Deja lista tu cuenta en el panel

    La key emite con lo que ya tienes configurado: tu certificado digital y tu usuario SOL secundario (Configuración → Credenciales SUNAT) y las series que vas a usar (Configuración → Sucursales y cajas). Las series se crean solo en el panel.

  2. Crea tu key y guarda el Secret

    En Configuración → Conecta pulsa Nueva key. Recibes el Access Key ID y el Secret; el Secret se muestra una sola vez. Si quieres, limita la key a las IPs de tu servidor. Esta pestaña solo aparece si tu plan incluye Flashfact Conecta.

  3. Canjea la key por un token y emite una boleta

    El token dura 15 minutos. Envías la serie y Flashfact asigna el correlativo: no lo mandes, se ignora.

    bash
    BASE="https://app-api.flashfact.pe"
    
    # 1. Canjea tu key por un token de 15 minutos
    TOKEN=$(curl -s -X POST "$BASE/v1/auth/api-key" \
      -H "Content-Type: application/json" \
      -d '{"access_key_id":"WISNA_...","secret":"..."}' \
      | sed -n 's/.*"access_token":"\([^"]*\)".*/\1/p')
    
    # 2. Emite la boleta: envías la serie, Flashfact pone el correlativo
    curl -X POST "$BASE/v1/emission/invoices" \
      -H "Authorization: Bearer $TOKEN" \
      -H "Idempotency-Key: pedido-48213" \
      -H "Content-Type: application/json" \
      -d '{"tipoDocumento":"03","tipoOperacion":"0101","serie":"B001","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}]}'
  4. Consulta el resultado

    La respuesta trae estado: "DRAFT": el comprobante quedó en cola. Pide GET /v1/emission/invoices/{id} hasta que pase a ACCEPTED o REJECTED. Tu panel lo muestra en cuanto se emite.

Autenticación

Aquí no se firma cada request. Cambias tu Access Key ID y tu Secret por un token una vez, y con el token haces todas las llamadas durante 15 minutos.

bash
POST https://app-api.flashfact.pe/v1/auth/api-key
Content-Type: application/json

{ "access_key_id": "WISNA_9f2c4a7e1b3d5c6a8e0f1a2b3c4d5e6f", "secret": "…" }

→ 200  { "data": { "access_token": "eyJhbGciOi…", "expires_in": 900 } }
HeaderValor
AuthorizationBearer <access_token>, en cada petición menos en el canje.
Idempotency-KeyOpcional al emitir. Cualquier texto único por comprobante: con la misma clave y el mismo cuerpo recibes la respuesta original en vez de emitir otra vez.

Cómo se comporta el token

  • Dura 15 minutos (expires_in: 900). Renuévalo un poco antes de que venza; si recibes un 401, pide uno nuevo una vez y reintenta.
  • Solo sirve para esta API de comprobantes. No abre el panel ni la configuración de tu cuenta.
  • Revocar la key corta el acceso en la siguiente petición, aunque el token aún no haya vencido. Lo mismo si tu plan deja de incluir Flashfact Conecta.
  • Si la key tiene una lista de IPs, el canje solo funciona desde ellas. Tras 5 secretos incorrectos seguidos, la key se bloquea unos minutos.
  • Al rotar el Secret desde el panel, el anterior sigue valiendo 24 horas (para que actualices tu sistema sin cortar el servicio), o se invalida al instante si lo eliges.

Qué puedes y qué no

Una key de integración está pensada para que tu sistema venda y consulte, no para administrar tu cuenta. Si la usas en una ruta fuera de este alcance, la respuesta es 403 FORBIDDEN.

Lo que sí puede hacer

AcciónDetalle
EmitirFacturas, boletas y notas de crédito y débito (todas por POST /v1/emission/invoices, según tipoDocumento); retenciones, percepciones y guías de remisión, si tu plan las incluye.
AnularDar de baja un comprobante emitido (POST …/void).
Reintentar y reenviarReintentar el envío a SUNAT, reenviar el comprobante por correo y regenerar su PDF.
ConsultarComprobantes, notas, retenciones, percepciones, guías, bajas, tus series, tus sucursales, clientes por DNI o RUC y el registro de ventas. Todo de solo lectura.

Lo que no puede hacer

RestricciónDetalle
Series y correlativosCrear, deshabilitar o editar series, ni cambiar el siguiente correlativo. Eso es del panel.
Sucursales y clientesCrear o borrar sucursales, ni crear clientes: solo consultarlos.
Tu cuentaVer o cambiar la configuración, las credenciales SUNAT, el certificado, el plan o los usuarios.
Otras keysCrear, rotar o revocar keys de integración. Solo el propietario o un administrador, desde el panel.
NumerarElegir el correlativo: lo asigna Flashfact para que coincida siempre con tu panel.

Plan y límites

Flashfact Conecta lo habilita tu plan. Lo que vale es el texto completo de los Términos de uso; este es el resumen para quien integra.

Keys

  • Tu plan define cuántas keys puedes tener activas a la vez. Lo ves en Configuración → Conecta; si esa pestaña no aparece, tu plan no incluye Flashfact Conecta.
  • Si tu plan baja y tienes más keys que las permitidas, siguen funcionando las más antiguas y las demás quedan suspendidas, no borradas: vuelven a valer si mejoras el plan o revocas otra.
  • El canje de token admite hasta 20 intentos por minuto desde una misma IP.

Comprobantes

  • Lo que emites con tu key cuenta en el mismo límite mensual que lo que emites en el panel. Al llegar al límite la respuesta es 402 QUOTA_EXCEEDED.
  • Los tipos de comprobante que puedes emitir los define tu plan. Si pides uno que no incluye, responde 403 FORBIDDEN.
  • Con la suscripción suspendida o cancelada no se puede emitir: 402 SUBSCRIPTION_SUSPENDED.
  • Anular un comprobante no devuelve el uso de tu límite del mes.

Lo que pones de tu parte

  • Un certificado digital vigente y un usuario SOL secundario, configurados en el panel. Nunca nos des tu clave SOL principal.
  • La exactitud de los datos, precios e impuestos de cada comprobante: nosotros enviamos lo que tú envías.
  • Guardar tus comprobantes por el plazo legal.

Buenas prácticas

  • Una key por sistema. Tu tienda y tu ERP con keys distintas: si una se compromete, la revocas sin cortar la otra. Ponles un nombre que las distinga.
  • Limita por IP cuando tu servidor tenga IP fija. Es la defensa más simple contra una key filtrada.
  • Reutiliza el token. Pide uno nuevo solo cuando falte poco para que venza, no en cada petición: el canje tiene un límite por minuto.
  • Usa siempre Idempotency-Key al emitir. Un reintento tras un corte de red no duplica el comprobante ni consume otro correlativo.
  • Elige las series con GET /v1/emission/series en vez de escribirlas a mano, y revisa que estén habilitadas.
  • Rota el Secret si alguien que lo conocía deja el equipo. Con «invalidar ahora» el anterior deja de valer al instante.
  • Guarda el Secret fuera del código, en variables de entorno o en un gestor de secretos.

Errores

Los errores de acceso, plan y numeración los responde Flashfact con este formato. Los de validación del comprobante conservan el formato de SUNAT, con un elemento por campo.

json
{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "serie 'F999' no encontrada o deshabilitada para este tenant"
  }
}
CódigoHTTPCuándo
INVALID_REQUEST400 / 422Falta tipoDocumento o serie, el cuerpo no es JSON, la serie no existe o está deshabilitada, o reutilizaste una Idempotency-Key con un cuerpo distinto (422).
INVALID_CREDENTIALS401En el canje: la key no existe, está revocada o vencida, el Secret es incorrecto, la IP no está permitida o tu plan ya no incluye Flashfact Conecta. Es siempre la misma respuesta.
UNAUTHORIZED401El token venció, es inválido, o su key se revocó o quedó suspendida por tu plan. Pide un token nuevo; si sigue igual, revisa la key en el panel.
FORBIDDEN403Esa ruta no está permitida para una key de integración, o tu plan no incluye ese tipo de comprobante.
NOT_FOUND404El comprobante no existe o no es de tu empresa.
CONFLICT409Ya hay una emisión en curso con esa Idempotency-Key; reintenta en unos segundos.
QUOTA_EXCEEDED402Llegaste al límite mensual de comprobantes de tu plan.
SUBSCRIPTION_SUSPENDED402Tu suscripción está suspendida o cancelada: regulariza el pago desde el panel.
ACCOUNT_LOCKED429La key se bloqueó unos minutos por demasiados secretos incorrectos seguidos.
RATE_LIMITED429Demasiados canjes de token desde tu IP. Espera lo que indica Retry-After.
VALIDATION_ERROR422El comprobante no pasó las reglas de SUNAT. details trae un elemento por campo. Los códigos son los de SUNAT.

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
CampoTipoDescripción
idnumberIdentificador numérico. Úsalo en las rutas /{id}.
seriestringSerie del comprobante.
correlativostringCorrelativo como texto, con los ceros a la izquierda que enviaste.
fechaEmisionstringYYYY-MM-DD.
fechaCreacionstringMarca de tiempo ISO 8601 UTC de cuando se guardó.
tipoDocumentostring01 factura o 03 boleta.
tipoOperacionstringCatálogo 51.
monedastringISO 4217.
formaPagostringContado o Credito.

Receptor

4 campos
CampoTipoDescripción
tipoDocumentoAdquirentestringCatálogo 6.
numDocumentoAdquirentestringDocumento del receptor.
razonSocialAdquirentestringNombre o razón social.
direccionAdquirentestringOpcional.

Totales

5 campos
CampoTipoDescripción
totalImpuestosnumberTotal de impuestos.
totalValorVentanumberValor de venta sin IGV.
totalPrecioVentanumberValor de venta con impuestos.
importeTotalnumberImporte a pagar.
baseImponibleIGV / totalIGV / recargoConsumonumberSolo si son distintos de cero.

Resultado de SUNAT

3 campos
CampoTipoDescripción
estadostringEstado actual. Ver la tabla de estados en Conceptos clave.
codigoRespuestastringCódigo de SUNAT. Solo aparece cuando SUNAT ya respondió.
descripcionRespuestastringMensaje de SUNAT. Solo aparece cuando SUNAT ya respondió.

Archivos

3 campos
CampoTipoDescripción
xmlUrlstringXML firmado. Enlace de 15 minutos; solo aparece cuando el archivo existe.
cdrUrlstringConstancia de recepción de SUNAT. Enlace de 15 minutos. En las guías es un .zip.
pdfUrlstringRepresentación impresa. Enlace de 15 minutos.

Detalle (items[] y cuotas[])

2 campos
CampoTipoDescripción
items[]arreglonumeroItem, descripcion, codigoProducto, unidadMedida, cantidad, valorUnitario, precioUnitario, valorVenta, totalImpuestosItem, igv, afectacionIGV.
cuotas[]arregloSolo en crédito: numero, monto, fechaVence.

Correos (solo en el detalle)

1 campo
CampoTipoDescripción
emailLogs[]arregloPor destinatario: toEmail, status (SENT, DELIVERED, BOUNCED, FAILED o COMPLAINED), error, sentAt, deliveredAt.

Baja (solo si se anuló)

4 campos
CampoTipoDescripción
motivoBajastringMotivo enviado a SUNAT.
ticketBajastringTicket de la comunicación de baja.
estadoBajastringPENDING, SENDING, SENT, COMPLETED, ERROR o FAILED.
fechaEnvioBaja / fechaResolucionstringCuándo se envió la baja y cuándo SUNAT la confirmó.

Otros

3 campos
CampoTipoDescripción
tiposCambio[]arregloSolo al crear, en moneda extranjera. Ver el modelo Tipo de cambio usado.
emittedByEmailstringUsuario que emitió, si se emitió desde el panel.
emittedByApiClientNamestringNombre 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
CampoTipoDescripción
idnumberIdentificador numérico. Úsalo en las rutas /{id}.
seriestringSerie del comprobante.
correlativostringCorrelativo como texto, con los ceros a la izquierda que enviaste.
fechaEmisionstringYYYY-MM-DD.
fechaCreacionstringMarca de tiempo ISO 8601 UTC de cuando se guardó.
tipoDocumentostring07 o 08.
tipoNotastringCatálogo 9 o 10.
motivoNotastringDescripción del motivo.
docModificadostringComprobante afectado, serie-correlativo.
tipoDocModificadostring01 o 03.
estadostringEstado actual.

Retención y percepción

Lo devuelven /v1/retenciones y /v1/percepciones. Incluyen estado, archivos y atribución como el comprobante.

Retención

9 campos
CampoTipoDescripción
idnumberIdentificador numérico. Úsalo en las rutas /{id}.
seriestringSerie del comprobante.
correlativostringCorrelativo como texto, con los ceros a la izquierda que enviaste.
fechaEmisionstringYYYY-MM-DD.
fechaCreacionstringMarca de tiempo ISO 8601 UTC de cuando se guardó.
codigoRegimen / tasaRetencionstring / numberRégimen del catálogo 23 y su tasa.
tipoDocumentoProveedor / rucProveedor / razonSocialProveedorstringProveedor.
totalRetenidonumberSuma de importes retenidos.
totalPagadonumberSuma de importes netos pagados, en soles.

Percepción

4 campos
CampoTipoDescripción
codigoRegimen / tasaPercepcionstring / numberRégimen del catálogo 22 y su tasa.
tipoDocumentoCliente / rucCliente / razonSocialClientestringCliente.
totalPercibidonumberSuma de importes percibidos.
totalCobradonumberSuma de importes netos cobrados, en soles.

Guía de remisión

Lo devuelven /v1/guias/remitente y /v1/guias/transportista. Incluyen estado, archivos y atribución.

Campos

10 campos
CampoTipoDescripción
idnumberIdentificador numérico. Úsalo en las rutas /{id}.
seriestringSerie del comprobante.
correlativostringCorrelativo como texto, con los ceros a la izquierda que enviaste.
fechaEmisionstringYYYY-MM-DD.
fechaCreacionstringMarca de tiempo ISO 8601 UTC de cuando se guardó.
tipoDocDestinatario / numDocDestinatario / nombreDestinatariostringDestinatario.
motivoTrasladostringCatálogo 20.
modalidadTransportestringCatálogo 18.
fechaInicioTrasladostringYYYY-MM-DD.
pesoBruto / unidadPesonumber / stringPeso y su unidad (KGM o TNE).

Tipo de cambio usado

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
CampoTipoDescripción
itemnumberPosición del documento relacionado (retenciones y percepciones).
monedastringMoneda convertida a PEN.
valorstring | nullTipo de cambio aplicado. null si aún no se pudo resolver.
origenstringsbs si coincide con el SBS aplicable; manual si lo enviaste distinto.
tasaSbsstringTipo de cambio SBS aplicable, para comparar.
desviacionPctnumberDesviación porcentual de tu valor frente al SBS.
fechaHecho / fechaCotizacionstringFecha del hecho generador y fecha de la cotización usada.
regla / reglaVersion / confianzastring / numberRegla normativa aplicada y su versión.
verificacionstringok, pendiente o no_disponible.
motivo / advertencias[]string / arregloTu 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ódigoDescripciónLa API lo emite
01Factura Sí
03Boleta de venta Sí
04Liquidación de compra No
05Boletos 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
06Carta de porte aéreo No
07Nota de crédito Sí
08Nota de débito Sí
09Guía de remisión remitente Sí
11Póliza emitida por las Bolsas de Valores No
12Ticket de máquina registradora No
13Documento emitido por bancos, instituciones financieras, crediticias y de seguros que se encuentren bajo el control de la Superintendencia de Banca y Seguros No
14Recibo servicios públicos No
15Boletos 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
16Boleto de viaje emitido por las empresas de transporte público interprovincial de pasajeros No
18Documentos emitidos por las AFP No
19Boleto por atracciones y espectáculos públicos No
20Comprobante de retención Sí
21Conocimiento de embarque por el servicio de transporte de carga marítima No
23Pólizas de Adjudicación por remate o adjudicación de bienes No
24Certificado de pago de regalías emitidas por PERUPETRO S.A. No
25Documento de atribución No
28Etiquetas por el pago de la Tarifa Unificada de Uso de Aeropuerto – TUUA No
29Documentos emitidos por la COFOPRI No
30Documentos 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
31Guía de remisión transportista Sí
32Documentos emitidos por recaudadoras de la Garantía de Red Principal No
34Documento del Operador No
35Documento del Partícipe No
36Recibo de Distribución de Gas Natural No
37Documentos que emitan los concesionarios del servicio de revisiones técnicas No
40Comprobante de Percepción Sí
41Comprobante de Percepción – Venta interna ( físico - formato impreso) No
42Documentos emitidos por los adq. en los sistemas de pago por tarj. de crédito emitidas por ellas mismas No
43Boleto de compañías de aviación transporte aéreo no regular No
45Documentos emitidos por centros educativos y culturales, universidades, asociaciones y fundaciones No
55BVME para transporte ferroviario de pasajeros No
56Comprobante de pago SEAE / DAE-SEAE No
71Guía de remisión remitente complementaria No
72Guía de remisión transportista complementaria No
87Nota de crédito especial No
88Nota 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ódigoDescripción
PENSol peruano
USDDólar estadounidense
EUREuro
GBPLibra esterlina
JPYYen japonés
CHFFranco suizo
CADDólar canadiense
AUDDólar australiano
NZDDólar neozelandés
HKDDólar de Hong Kong
SGDDólar de Singapur
CNYYuan renminbi chino
KRWWon surcoreano
INRRupia india
THBBaht tailandés
MYRRinggit malayo
PHPPeso filipino
BRLReal brasileño
MXNPeso mexicano
CLPPeso chileno
COPPeso colombiano
ARSPeso argentino
BOBBoliviano
PYGGuaraní paraguayo
UYUPeso uruguayo
VESBolívar venezolano
SEKCorona sueca
NOKCorona noruega
DKKCorona danesa
ZARRand 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.

ISO 4217
Cat. 3Unidades de medida27 códigos

Se usa en items[].unidadMedida

CódigoDescripción
NIUUnidad (bienes)
ZZUnidad (servicios)
KGMKilogramo
GRMGramo
TNETonelada métrica
LBRLibra
LTRLitro
MLTMililitro
GLLGalón (US)
MTRMetro
CMTCentímetro
MMTMilímetro
MTKMetro cuadrado
MTQMetro cúbico
BXCaja
DZNDocena
PKPaquete
BGBolsa
BOBotella
SETJuego
PRPar
ROLRollo
HURHora
DAYDía
MONMes
ANNAño
KWHKilovatio hora

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.

UN/ECE Recomendación 20
Cat. 4País

Se usa en codigoPaisEmisionPasaporte, codigoPaisResidenciaHuesped (hospedaje)

Código de país de 2 letras, por ejemplo PE, US o CL.

ISO 3166-1
Cat. 6Documento de identidad14 códigos

Se usa en tipoDocumentoAdquirente, id_type, tipoDocDestinatario, tipoDocRemitente y similares

CódigoDescripción
-Sin documento (consumidor final en boleta). Es un valor de la API; no figura en el catálogo oficial.
0Documento tributario no domiciliado sin RUC
1Documento Nacional de Identidad
4Carnet de extranjería
6Registro Único de Contribuyentes
7Pasaporte
ACédula Diplomática de identidad
BDocumento de identidad del país de residencia (no domiciliado)
CTax Identification Number - TIN – Doc Trib PP.NN
DIdentification Number - IN – Doc Trib PP. JJ
ETAM- Tarjeta Andina de Migración
FPermiso Temporal de Permanencia - PTP
GSalvoconducto
HCarné 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ódigoDescripciónCódigo de tributo
10Gravado - Operación Onerosa1000
11Gravado – Retiro por premio9996
12Gravado – Retiro por donación9996
13Gravado – Retiro9996
14Gravado – Retiro por publicidad9996
15Gravado – Bonificaciones9996
16Gravado – Retiro por entrega a trabajadores9996
17Gravado - IVAP1016 o 9996
20Exonerado - Operación Onerosa9997
21Exonerado - Transferencia gratuita9996
30Inafecto - Operación Onerosa9998
31Inafecto – Retiro por Bonificación9996
32Inafecto – Retiro9996
33Inafecto – Retiro por Muestras Médicas9996
34Inafecto - Retiro por Convenio Colectivo9996
35Inafecto – Retiro por premio9996
36Inafecto - Retiro por publicidad9996
37Inafecto - Transferencia gratuita9996
40Exportación de Bienes o Servicios9995 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ódigoDescripción
01Sistema al valor (Apéndice IV, lit. A – T.U.O IGV e ISC)
02Aplicación del Monto Fijo ( Sistema específico, bienes en el apéndice III, Apéndice IV, lit. B – T.U.O IGV e ISC)
03Sistema 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ódigoDescripción
01Anulación de la operación
02Anulación por error en el RUC
03Correcció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
04Descuento global
05Descuento por ítem
06Devolución total
07Devolución por ítem
08Bonificación
09Disminución en el valor
10Otros Conceptos
11Ajustes de operaciones de exportación
12Ajustes afectos al IVAP
13Correcció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ódigoDescripción
01Intereses por mora
02Aumento en el valor
03Penalidades/ otros conceptos
11Ajustes de operaciones de exportación
12Ajustes afectos al IVAP
13Penalidades

Una nota con ítems de afectación 17 debe ser de tipo 12.

Cat. 12Documentos relacionados tributarios11 códigos

Se usa en documentosRelacionados[].tipoDocumento

CódigoDescripciónSe acepta en facturas
01Factura – emitida para corregir error en el RUC No
02Factura – emitida por anticipos Sí
03Boleta de Venta – emitida por anticipos Sí
04Ticket de Salida - ENAPU Sí
05Código SCOP Sí
06Factura electrónica remitente Sí
07Guia de remisión remitente Sí
08Declaración de salida del depósito franco Sí
09Declaración simplificada de importación Sí
10Liquidación de compra - emitida por anticipos No
99Otros Sí

En boletas se aceptan 02, 03, 04, 05, 08, 09 y 99. Los tipos 02 y 03 son comprobantes de anticipo.

Cat. 13Ubigeo

Se usa en ubigeoOrigen, ubigeoDestino, ubigeoLugarOrigen y ubigeoLugarDestino

Código de 6 dígitos: 2 de departamento, 2 de provincia y 2 de distrito. Por ejemplo, 150101 es Lima, Lima, Lima.

Catálogo de ubigeos del INEI
Cat. 18Modalidad de transporte2 códigos

Se usa en modalidadTransporte

CódigoDescripción
01Transporte público
02Transporte privado
Cat. 20Motivo de traslado13 códigos

Se usa en motivoTraslado

CódigoDescripción
01Venta
02Compra
03Venta con entrega a terceros
04Traslado entre establecimientos de la misma empresa
05Consignación
06Devolución
07Recojo de bienes transformados
08Importación
09Exportación
13Otros
14Venta sujeta a confirmación del comprador
17Traslado de bienes para transformación
18Traslado 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ódigoDescripciónTasa %
01Percepción Venta Interna2
02Percepción a la adquisición de combustible1
03Percepción realizada al agente de percepción con tasa especial0,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ódigoDescripción
01Tasa 3%
02Tasa 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ódigoDescripciónComprobante
0101Venta interna no sujeta a Detracción, Retención o PercepciónFactura, Boletas
0112Venta Interna - Sustenta Gastos Deducibles Persona NaturalFactura
0113Venta Interna-NRUSBoleta
0200Exportación de BienesFactura, Boletas
0201Exportación de Servicios – Prestación servicios realizados íntegramente en el paísFactura, Boletas
0202Exportación de Servicios – Prestación de servicios de hospedaje No DomiciliadoFactura
0203Exportación de Servicios – Transporte de navierasFactura, Boletas
0204Exportación de Servicios – Servicios a naves y aeronaves de bandera extranjeraFactura, Boletas
0205Exportación de Servicios - Servicios que conformen un Paquete TurísticoFactura
0206Exportación de Servicios – Servicios complementarios al transporte de cargaFactura, Boletas
0207Exportación de Servicios – Suministro de energía eléctrica a favor de sujetos domiciliados en ZEDFactura, Boletas
0208Exportación de Servicios – Prestación servicios realizados parcialmente en el extranjeroFactura, Boletas
0301Operaciones con Carta de porte aéreo (emitidas en el ámbito nacional)Factura, Boletas
0302Operaciones de Transporte ferroviario de pasajerosFactura, Boletas
0401Ventas no domiciliados que no califican como exportaciónFactura, Boletas
0501Compra internaLiquidación de compra
0502AnticiposLiquidación de compra
0503Compra de oroLiquidación de compra
1001Operación Sujeta a DetracciónFactura, Boletas
1002Operación Sujeta a Detracción- Recursos HidrobiológicosFactura, Boletas
1003Operación Sujeta a Detracción- Servicios de Transporte PasajerosFactura, Boletas
1004Operación Sujeta a Detracción- Servicios de Transporte CargaFactura, Boletas
2001Operación Sujeta a PercepciónFactura, Boletas
2002Operación sujeta a Retención de Renta de segunda categoríaFactura
2100Créditos a empresasFactura, Boletas
2101Créditos de consumo revolventeFactura, Boletas
2102Créditos de consumo no revolventeFactura, Boletas
2103Otras operaciones no gravadas - Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del públicoFactura, Boletas
2104Otras operaciones no gravadas - Empresas del sistema de segurosFactura, Boletas
2105Comprobante emitido por AFPBoleta
2106Venta Nacional a Turistas - Tax FreeFactura

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ódigoDescripción
1000Monto en Letras
1002Leyenda "TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE"
2000Leyenda “COMPROBANTE DE PERCEPCIÓN”
2001Leyenda “BIENES TRANSFERIDOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA"
2002Leyenda “SERVICIOS PRESTADOS EN LA AMAZONÍA REGIÓN SELVA PARA SER CONSUMIDOS EN LA MISMA”
2003Leyenda “CONTRATOS DE CONSTRUCCIÓN EJECUTADOS EN LA AMAZONÍA REGIÓN SELVA”
2004Leyenda “Agencia de Viaje - Paquete turístico”
2005Leyenda “Venta realizada por emisor itinerante”
2006Leyenda "Operación sujeta a detracción"
2007Leyenda "Operación sujeta al IVAP"
2008Leyenda: “VENTA EXONERADA DEL IGV-ISC-IPM. PROHIBIDA LA VENTA FUERA DE LA ZONA COMERCIAL DE TACNA”
2009Leyenda: “PRIMERA VENTA DE MERCANCÍA IDENTIFICABLE ENTRE USUARIOS DE LA ZONA COMERCIAL”
2010Restitucion Simplificado de Derechos Arancelarios
2011Leyenda “EXPORTACION DE SERVICIOS - DECRETO LEGISLATIVO Nº 919”
2012Observaciones 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ódigoDescripciónNivelSe acepta en un ítem
00Descuentos que afectan la base imponible del IGV/IVAPItem Sí
01Descuentos que no afectan la base imponible del IGV/IVAPItem Sí
02Descuentos globales que afectan la base imponible del IGV/IVAPGlobal No
03Descuentos globales que no afectan la base imponible del IGV/IVAPGlobal No
04Descuentos globales por anticipos gravados que afectan la base imponible del IGV/IVAPGlobal No
05Descuentos globales por anticipos exoneradosGlobal No
06Descuentos globales por anticipos inafectosGlobal No
07Factor de compensación - Decreto de urgencia N. 010-2004Item Sí
20Anticipo de ISCGlobal No
45FISEGlobal No
46Recargo al consumo y/o propinasGlobal No
47Cargos que afectan la base imponible del IGV/IVAPItem Sí
48Cargos que no afectan la base imponible del IGV/IVAPItem Sí
49Cargos globales que afectan la base imponible del IGV/IVAPGlobal No
50Cargos globales que no afectan la base imponible del IGV/IVAPGlobal No
51Percepción venta internaGlobal No
52Percepción a la adquisición de combustibleGlobal No
53Percepción realizada al agente de percepción con tasa especialGlobal No
54Factor de aportación - Decreto de urgencia N. 010-2004Item Sí
61Retención de renta por anticiposGlobal No
62Retención del IGVGlobal No
63Retención de renta de segunda categoríaGlobal 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ódigoDescripción
001Azúcar y melaza de caña
002Arroz
003Alcohol etílico
004Recursos hidrobiológicos
005Maíz amarillo duro
007Caña de azúcar
008Madera
009Arena y piedra.
010Residuos, subproductos, desechos, recortes y desperdicios
011Bienes gravados con el IGV, o renuncia a la exoneración
012Intermediación laboral y tercerización
013Animales vivos
014Carnes y despojos comestibles
015Abonos, cueros y pieles de origen animal
016Aceite de pescado
017Harina, polvo y “pellets” de pescado, crustáceos, moluscos y demás invertebrados acuáticos
019Arrendamiento de bienes muebles
020Mantenimiento y reparación de bienes muebles
021Movimiento de carga
022Otros servicios empresariales
023Leche
024Comisión mercantil
025Fabricación de bienes por encargo
026Servicio de transporte de personas
027Servicio de transporte de carga
028Transporte de pasajeros
030Contratos de construcción
031Oro gravado con el IGV
032Paprika y otros frutos de los generos capsicum o pimienta
034Minerales metálicos no auríferos
035Bienes exonerados del IGV
036Oro y demás minerales metálicos exonerados del IGV
037Demás servicios gravados con el IGV
039Minerales no metálicos
040Bien inmueble gravado con IGV
041Plomo
044Servicio de beneficio de minerales metálicos gravado con el IGV
045Minerales de oro y sus concentrados gravados con el IGV
099Ley 30737
Cat. 55Concepto tributario o propiedad del ítem115 códigos

Se usa en items[].adicional

CódigoDescripciónLa API lo envía
3001Detracciones: Recursos Hidrobiológicos-Matrícula de la embarcación No
3002Detracciones: Recursos Hidrobiológicos-Nombre de la embarcación No
3003Detracciones: Recursos Hidrobiológicos-Tipo de especie vendida No
3004Detracciones: Recursos Hidrobiológicos-Lugar de descarga No
3005Detracciones: Recursos Hidrobiológicos-Fecha de descarga No
3006Detracciones: Recursos Hidrobiológicos-Cantidad de especie vendida No
3050Transportre Terreste - Número de asiento Sí
3051Transporte Terrestre - Información de manifiesto de pasajeros Sí
3052Transporte Terrestre - Número de documento de identidad del pasajero Sí
3053Transporte Terrestre - Tipo de documento de identidad del pasajero Sí
3054Transporte Terrestre - Nombres y apellidos del pasajero Sí
3055Transporte Terrestre - Ciudad o lugar de destino - Ubigeo Sí
3056Transporte Terrestre - Ciudad o lugar de destino - Dirección detallada No
3057Transporte Terrestre - Ciudad o lugar de origen - Ubigeo Sí
3058Transporte Terrestre - Ciudad o lugar de origen - Dirección detallada No
3059Transporte Terrestre - Fecha de inicio programado Sí
3060Transporte Terrestre - Hora de inicio programado Sí
4000Beneficio Hospedajes-Paquete turístico: Código de país de emisión del pasaporte Sí
4001Beneficio Hospedajes: Código de país de residencia del sujeto no domiciliado Sí
4002Beneficio Hospedajes: Fecha de ingreso al país Sí
4003Beneficio Hospedajes: Fecha de Ingreso al Establecimiento Sí
4004Beneficio Hospedajes: Fecha de Salida del Establecimiento Sí
4005Beneficio Hospedajes: Número de Días de Permanencia Sí
4006Beneficio Hospedajes: Fecha de Consumo Sí
4007Beneficio Hospedajes-Paquete turístico: Nombres y apellidos del huesped Sí
4008Beneficio Hospedajes-Paquete turístico: Tipo de documento de identidad del huesped Sí
4009Beneficio Hospedajes-Paquete turístico: Número de documento de identidad del huesped Sí
4030Carta Porte Aéreo: Lugar de origen - Código de ubigeo No
4031Carta Porte Aéreo: Lugar de origen - Dirección detallada No
4032Carta Porte Aéreo: Lugar de destino - Código de ubigeo No
4033Carta Porte Aéreo: Lugar de destino - Dirección detallada No
4040BVME transporte ferroviario: Pasajero - Apellidos y Nombres No
4041BVME transporte ferroviario: Pasajero - Tipo de documento de identidad No
4042BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de origen - Código de ubigeo No
4043BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de origen - Dirección detallada No
4044BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de destino - Código de ubigeo No
4045BVME transporte ferroviario: Servicio transporte: Ciudad o lugar de destino - Dirección detallada No
4046BVME transporte ferroviario: Servicio transporte:Número de asiento No
4047BVME transporte ferroviario: Servicio transporte: Hora programada de inicio de viaje No
4048BVME transporte ferroviario: Servicio transporte: Fecha programada de inicio de viaje No
4049BVME transporte ferroviario: Pasajero - Número de documento de identidad No
4060Regalía Petrolera: Decreto Supremo de aprobación del contrato No
4061Regalía Petrolera: Area de contrato (Lote) No
4062Regalía Petrolera: Periodo de pago - Fecha de inicio No
4063Regalía Petrolera: Periodo de pago - Fecha de fin No
4064Regalía Petrolera: Fecha de Pago No
5000Proveedores Estado: Número de Expediente No
5001Proveedores Estado: Código de Unidad Ejecutora No
5002Proveedores Estado: N° de Proceso de Selección No
5003Proveedores Estado: N° de Contrato No
5010Numero de Placa Sí
5011Categoria No
5012Marca No
5013Modelo No
5014Color No
5015Motor No
5016Combustible No
5017Form. Rodante No
5018VIN No
5019Serie/Chasis No
5020Año fabricacion No
5021Año modelo No
5022Version No
5023Ejes No
5024Asientos No
5025Pasajeros No
5026Ruedas No
5027Carroceria No
5028Potencia No
5029Cilindros No
5030Ciliindrada No
5031Peso Bruto No
5032Peso Neto No
5033Carga Util No
5034Longitud No
5035Altura No
5036Ancho No
5060Gas Natural - Lectura Anterior No
5061Gas Natural - Lectura Actual No
5062Gas Natural - Volumen consumido a Condiciones de lectura No
5063Gas Natural - Factor de correccion del volumen No
5064Gas Natural - Volumen a condiciones Estandares No
5065Gas Natural - Volumen facturado No
5066Gas Natural - Poder Calorifico Superior Promedio del Gas No
6000Comercialización de Oro: Código Unico Concesión Minera No
6001Comercialización de Oro: N° declaración compromiso No
6002Comercialización de Oro: N° Reg. Especial .Comerci. Oro No
6003Comercialización de Oro: N° Resolución que autoriza Planta de Beneficio No
6004Comercialización de Oro: Ley Mineral (% concent. oro) No
6005Comercialización de Oro : Naturaleza del mineral No
6006Comercialización de Oro : Nombre del derecho minero No
7000Gastos Art. 37 Renta: Número de Placa Sí
7001Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Tipo de préstamo No
7002Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Indicador de Primera Vivienda No
7003Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Partida Registral No
7004Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Número de contrato No
7005Empresas 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
7006Empresas 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
7007Empresas 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
7008Empresas 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
7009Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Provincia No
7010Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Distrito No
7011Empresas del sistema financiero y cooperativas de ahorro y crédito no autorizadas a captar recursos del público: Dirección del predio - Departamento No
7012Empresas 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
7013Empresas del sistema de seguro: Número de póliza No
7014Empresas del sistema de seguro: Fecha de inicio/término de vigencia de cobertura No
7015Empresas del sistema de seguro: Tipo de seguro No
7016Empresas del sistema de seguro: Suma asegurada / alcance de cobertura o monto No
7017AFP: CUSPP No
7018AFP: Periodo No
7019AFP: Monto del interes moratorio No
7020Partida arancelaria No
7021Numero de declaracion aduanera (DAM) No
7022Indicador de bien normalizado No
7023Numero 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ódigoDescripciónSe acepta en detracción
001Depósito en cuenta Sí
002Giro Sí
003Transferencia de fondos Sí
004Orden de pago Sí
005Tarjeta de débito Sí
006Tarjeta de crédito emitida en el país por una empresa del sistema financiero Sí
007Cheques 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í
008Efectivo, por operaciones en las que no existe obligación de utilizar medio de pago Sí
009Efectivo, en los demás casos Sí
010Medios de pago usados en comercio exterior Sí
011Documentos emitidos por las EDPYMES y las cooperativas de ahorro y crédito no autorizadas a captar depósitos del público Sí
012Tarjeta 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í
013Tarjetas de crédito emitidas en el exterior por empresas bancarias o financieras no domiciliadas No
101Transferencias – Comercio exterior No
102Cheques bancarios - Comercio exterior No
103Orden de pago simple - Comercio exterior No
104Orden de pago documentario - Comercio exterior No
105Remesa simple - Comercio exterior No
106Remesa documentaria - Comercio exterior No
107Carta de crédito simple - Comercio exterior No
108Carta de crédito documentario - Comercio exterior No
999Otros medios de pago No
Cat. 61Documentos relacionados al transporte26 códigos

Se usa en documentosRelacionados[].tipoDoc en guías

CódigoDescripciónGuía aplicable
01Facturaremitente, transportista
03Boleta de Ventaremitente, transportista
04Liquidación de Compraremitente, transportista
09Guía de Remisión Remitenteremitente, transportista
12Ticket o cinta emitido por máquina registradoraremitente, transportista
31Guía de Remisión Transportistasolo transportista
48Comprobante de Operaciones – Ley N° 29972remitente, transportista
49Constancia de Depósito - IVAP (Ley 28211)solo remitente
50Declaración Aduanera de Mercancíasremitente, transportista
52Declaración Simplificada (DS)remitente, transportista
65Autorización de Circulación para transportar MATPEL – Callaosolo transportista
66Autorización de Circulación para transporte de carga y mercancías en Lima Metropolitanasolo transportista
67Permiso de Operación Especial para el servicio de transporte de MATPEL - MTCsolo transportista
68Habilitación Sanitaria de Transporte Terrestre de Productos Pesqueros y Acuícolassolo transportista
69Permiso / Autorización de operación de transporte de mercancíassolo transportista
71Resolución de Adjudicación de bienes – SUNATsolo remitente
72Resolución de Comiso de bienes – SUNATsolo remitente
73Guía de Transporte Forestal o de Fauna - SERFORsolo remitente
74Guía de Tránsito – SUCAMECsolo remitente
75Autorización para operar como empresa de Saneamiento Ambiental – MINSA -solo remitente
76Autorización para manejo y recojo de residuos sólidos peligrosos y no peligrosossolo remitente
77Certificado fitosanitario la movilización de plantas, productos vegetales, y otros artículos reglamentadossolo remitente
78Registro Único de Usuarios y Transportistas de Alcohol Etílicosolo remitente
80Constancia de Depósito – Detracciónremitente, transportista
81Código de autorización emitida por el SCOPsolo remitente
82Declaración jurada de mudanzasolo 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 con una key.

Acceso con tu key

app-api.flashfact.pe · Token Bearer de tu key

Se llama una vez cada 15 minutos (o cuando el token venza) con tu Access Key ID y tu Secret. Con el token se firman, sin más, todas las demás peticiones.

Canjear tu key por un token

POST/v1/auth/api-key

Devuelve un token Bearer de 15 minutos que sirve únicamente para emitir, anular y consultar comprobantes. Se limita por IP: tras 20 intentos en un minuto responde 429. Si la key es incorrecta, está revocada o vencida, tiene una lista de IPs que no incluye la tuya, o tu plan ya no incluye Flashfact Conecta, la respuesta es siempre la misma 401.

Cuerpo (JSON)

2 campos · 2 obligatorios
CampoTipoDescripción
access_key_idobligatoriostringTu Access Key ID, con formato WISNA_<hex>.
secretobligatoriostringEl Secret de esa key.

Ejemplo de request

json
{ "access_key_id": "WISNA_9f2c4a7e1b3d5c6a8e0f1a2b3c4d5e6f", "secret": "…" }

Respuestas

json
{ "data": { "access_token": "eyJhbGciOi…", "expires_in": 900 } }

Facturas y boletas

app-api.flashfact.pe · Token Bearer de tu key

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/emission/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. Reintentos seguros con el header Idempotency-Key.

Identificación

9 campos · 5 obligatorios
CampoTipoDescripción
tipoDocumentoobligatoriostring01 factura o 03 boleta.
tipoOperacionobligatoriostringCatálogo 51. 0101 = venta interna; 02xx exportación; 1001-1004 detracción.
serieobligatoriostringF + 3 alfanuméricos para facturas (F001); B + 3 para boletas (B001). Debe estar habilitada en SUNAT.
fechaEmisionobligatoriostringYYYY-MM-DD.
horaEmisionstringHH:MM:SS.
fechaVencimientostringYYYY-MM-DD.
monedaobligatoriostringISO 4217: PEN, USD...
codigoEstablecimientostringCódigo de establecimiento anexo SUNAT. Por defecto 0000.
incotermstringCódigo Incoterm de la operación (por ejemplo FOB o CIF). Solo exportación.

Receptor

5 campos · 3 obligatorios
CampoTipoDescripción
tipoDocumentoAdquirenteobligatoriostringCatálogo 6: 6 RUC, 1 DNI, 4 carnet de extranjería, 7 pasaporte, - sin documento (boleta). Una factura de venta interna exige 6.
numDocumentoAdquirenteobligatoriostringRUC de 11 dígitos o DNI de 8. Otros tipos: alfanumérico de hasta 15 sin espacios.
razonSocialAdquirenteobligatoriostringEntre 3 y 1500 caracteres.
direccionAdquirentestringDirección del receptor.
correosNotificacion[]arregloCorreos a los que se envía el comprobante al quedar listo.

Totales

11 campos · 4 obligatorios
CampoTipoDescripción
totalImpuestosobligatorionumberSuma de totalImpuestosItem, con el descuento o cargo global prorrateado.
totalValorVentaobligatorionumberValor de venta sin IGV.
totalPrecioVentaobligatorionumberValor de venta con impuestos.
importeTotalobligatorionumberImporte a pagar. Incluye recargoConsumo si lo hay.
baseImponibleIGV / totalIGVnumberBase gravada e IGV. Se pueden calcular desde los ítems.
totalExonerado / totalInafecto / totalExportacion / totalGratuitonumberBases por tipo de afectación.
totalISC / totalICBPER / totalOtrosTributosnumberOtros tributos.
totalVentaIvap / sumatoriaIvapnumberOperaciones afectas al IVAP (afectación 17).
totalDescuentos / totalCargosnumberDescuentos y cargos globales.
recargoConsumonumberRecargo al consumo (cargo con código 46); no afecta la base del IGV.
redondeo / totalAnticiposnumberAjuste por redondeo y anticipos descontados.

Ítems (items[])

21 campos · 9 obligatorios
CampoTipoDescripción
numeroItemobligatorionumberPosición del ítem, desde 1.
unidadMedidaobligatoriostringCatálogo 3: NIU (unidad), ZZ (servicio), KGM...
cantidadobligatorionumberMayor que 0.
descripcionobligatoriostringDescripción del bien o servicio.
codigoProductostringCódigo interno de tu catálogo.
valorUnitarioobligatorionumberPrecio unitario sin IGV.
precioUnitarioobligatorionumberPrecio unitario con IGV.
valorVentaobligatorionumbercantidad × valorUnitario, menos descuento del ítem.
afectacionIGVobligatoriostringCatálogo 7: 10 gravado, 20 exonerado, 30 inafecto, 40 exportación, 11-16 / 21 / 31-36 gratuitos, 17 IVAP.
igvnumberIGV del ítem.
totalImpuestosItemobligatorionumberSuma de impuestos del ítem (IGV + ISC + ICBPER + otros).
iscnumberISC del ítem. Requiere sistemaISC.
sistemaISCstringCatálogo 8.
icbpernumberImpuesto a la bolsa de plástico.
otrosTributosnumberOtros tributos del ítem.
descuentoTipostringCatálogo 53. Obligatorio si envías descuentoMonto.
descuentoMontonumberDescuento del ítem. Excluyente con cargo.
cargoTipostringCatálogo 53: 47 afecta la base del IGV, 48 no.
cargoMontonumberCargo del ítem. Excluyente con descuento.
valorReferencialnumberValor referencial unitario, para operaciones gratuitas.
adicionalobjetoDatos de catálogo 55 (transporte de carga, pasajeros, hospedaje, paquete turístico).

Forma de pago

3 campos
CampoTipoDescripción
formaPago.tipostringContado o Credito.
formaPago.montonumberMonto pendiente de pago (crédito).
formaPago.cuotas[]arregloSolo crédito. Cada cuota: numero, monto, fechaVence (YYYY-MM-DD).

Tipo de cambio (moneda distinta de PEN)

5 campos
CampoTipoDescripción
tipoCambionumber | stringTipo de cambio a PEN si la moneda no es PEN (hasta 4 enteros y 6 decimales). Si lo omites se usa el SBS aplicable.
fechaCambiostringYYYY-MM-DD. Fecha a la que corresponde el tipo de cambio enviado (informativa).
motivoTipoCambiostringPor qué difiere del SBS (TC pactado, banco, contrato).
confirmarTipoCambiobooleanObligatorio en true si tu valor se aparta más de 10 % del SBS.
fechaHechoGeneradorstringYYYY-MM-DD. Fecha que fija el tipo de cambio del IGV. Por defecto, fechaEmision.

Otros

6 campos
CampoTipoDescripción
leyendas[]arregloCódigos del catálogo 52. Sin repetidos.
ordenComprastringNúmero de orden de compra.
guiasRelacionadas[]arreglo{ tipoGuia: 09 | 31, numeroGuia }.
documentosRelacionados[]arreglo{ tipoDocumento (cat. 12), numeroDocumento }.
adicional.detraccionobjetocodigoSujeto (cat. 54), numeroCuenta, medioPago (cat. 59), monto, porcentaje, fechaDeposito.
adicional.anticipos[]arregloidentificadorPago, serieNumero, tipoComprobante (02 | 03), montoAnticipado, fechaPago.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Ejemplo de request

json
{
  "tipoDocumento": "03",
  "tipoOperacion": "0101",
  "serie": "B001",
  "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
    }
  ]
}

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "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.
  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar comprobantes

GET/v1/emission/invoices

Parámetros de query

11 campos
CampoTipoDescripción
tipoDocumentostring01 o 03.
estadostringUno o varios separados por coma (REJECTED,FAILED): DRAFT, SENDING, SENT, ACCEPTED, REJECTED, FAILED, VOID_PENDING o VOIDED.
fechaDesde / fechaHastastringYYYY-MM-DD, ambos inclusive.
seriestringUna o varias series separadas por coma: F001,B001.
numDocAdquirentestringRUC o DNI del receptor.
monedastringPEN, USD...
formaPagostringContado o Credito, sin distinguir mayúsculas.
importeMin / importeMaxnumberRango de importe total.
qstringBúsqueda libre por receptor, serie y correlativo.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": [ { "id": 1042, "serie": "B001", "correlativo": "00000123", "estado": "ACCEPTED", "importeTotal": 118, "pdfUrl": "https://…" } ],
  "meta": { "total": 1, "page": 1, "perPage": 20 }
}

Notas

  • Cada elemento trae los mismos campos que el detalle, con enlaces firmados de 15 minutos.

Detalle de un comprobante

GET/v1/emission/invoices/{id}

Incluye el resultado de SUNAT, la información de baja si existe, el historial de correos y los enlaces de descarga.

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "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/emission/invoices/summary

Acepta los mismos filtros que el listado (sin paginación) y devuelve cantidades y montos vigentes.

Parámetros de query

9 campos
CampoTipoDescripción
tipoDocumentostring01 o 03.
estadostringUno o varios separados por coma (REJECTED,FAILED): DRAFT, SENDING, SENT, ACCEPTED, REJECTED, FAILED, VOID_PENDING o VOIDED.
fechaDesde / fechaHastastringYYYY-MM-DD, ambos inclusive.
seriestringUna o varias series separadas por coma: F001,B001.
numDocAdquirentestringRUC o DNI del receptor.
monedastringPEN, USD...
formaPagostringContado o Credito, sin distinguir mayúsculas.
importeMin / importeMaxnumberRango de importe total.
qstringBúsqueda libre por receptor, serie y correlativo.

Respuestas

json
{
  "data": {
    "count": 42,
    "totalPEN": 15230.5,
    "totalUSD": 800,
    "byStatus": { "ACCEPTED": 40, "REJECTED": 1, "DRAFT": 1 }
  }
}

Reenviar un comprobante a SUNAT

POST/v1/emission/invoices/{id}/emit

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
CampoTipoDescripción
idobligatorionumberID 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/emission/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
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Cuerpo (JSON)

1 campo · 1 obligatorio
CampoTipoDescripción
motivoobligatoriostringMí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/emission/bajas

Parámetros de query

3 campos
CampoTipoDescripción
invoiceIdnumberSolo las bajas que incluyen ese comprobante.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados 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/emission/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
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Cuerpo (JSON)

1 campo · 1 obligatorio
CampoTipoDescripción
emails[]obligatorioarregloAl menos un correo.

Ejemplo de request

json
{ "emails": ["contabilidad@cliente.com"] }

Respuestas

json
{ "data": { "status": "sent" } }

Regenerar el PDF

POST/v1/emission/invoices/{id}/regenerate-pdf

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
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

json
{ "data": { "status": "queued" } }

Notas de crédito y débito

app-api.flashfact.pe · Token Bearer de tu key

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/emission/invoices

Misma ruta que las facturas y boletas: Flashfact distingue la nota por tipoDocumento (07 crédito, 08 débito). 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

13 campos · 12 obligatorios
CampoTipoDescripción
tipoDocumentoobligatoriostring07 nota de crédito u 08 nota de débito.
serieobligatoriostringF + 3 alfanuméricos si modifica una factura (FC01); B + 3 si modifica una boleta (BC01).
fechaEmisionobligatoriostringYYYY-MM-DD.
monedaobligatoriostringISO 4217.
tipoNotaobligatoriostringCatálogo 9 para NC (01-13) o catálogo 10 para ND (01, 02, 03, 11, 12, 13). La nota 12 es para operaciones IVAP.
motivoNotaobligatoriostringDescripción del motivo, hasta 500 caracteres.
docModificadoobligatoriostringComprobante afectado como serie-correlativo, por ejemplo F001-00000010.
tipoDocModificadoobligatoriostring01 factura o 03 boleta.
tipoDocumentoAdquirenteobligatoriostringCatálogo 6.
numDocumentoAdquirenteobligatoriostringDocumento del receptor.
razonSocialAdquirenteobligatoriostringNombre o razón social.
totalImpuestos / totalValorVenta / totalPrecioVenta / importeTotalobligatorionumberTotales de la nota, con las mismas reglas que una factura.
baseImponibleIGV, totalIGV, totalExonerado, totalInafecto...numberTributos desagregados, igual que en POST /v1/invoices.

Ítems (items[])

21 campos · 9 obligatorios
CampoTipoDescripción
numeroItemobligatorionumberPosición del ítem, desde 1.
unidadMedidaobligatoriostringCatálogo 3: NIU (unidad), ZZ (servicio), KGM...
cantidadobligatorionumberMayor que 0.
descripcionobligatoriostringDescripción del bien o servicio.
codigoProductostringCódigo interno de tu catálogo.
valorUnitarioobligatorionumberPrecio unitario sin IGV.
precioUnitarioobligatorionumberPrecio unitario con IGV.
valorVentaobligatorionumbercantidad × valorUnitario, menos descuento del ítem.
afectacionIGVobligatoriostringCatálogo 7: 10 gravado, 20 exonerado, 30 inafecto, 40 exportación, 11-16 / 21 / 31-36 gratuitos, 17 IVAP.
igvnumberIGV del ítem.
totalImpuestosItemobligatorionumberSuma de impuestos del ítem (IGV + ISC + ICBPER + otros).
iscnumberISC del ítem. Requiere sistemaISC.
sistemaISCstringCatálogo 8.
icbpernumberImpuesto a la bolsa de plástico.
otrosTributosnumberOtros tributos del ítem.
descuentoTipostringCatálogo 53. Obligatorio si envías descuentoMonto.
descuentoMontonumberDescuento del ítem. Excluyente con cargo.
cargoTipostringCatálogo 53: 47 afecta la base del IGV, 48 no.
cargoMontonumberCargo del ítem. Excluyente con descuento.
valorReferencialnumberValor referencial unitario, para operaciones gratuitas.
adicionalobjetoDatos de catálogo 55 (transporte de carga, pasajeros, hospedaje, paquete turístico).

Forma de pago (opcional)

3 campos
CampoTipoDescripción
formaPago.tipostringContado o Credito.
formaPago.montonumberMonto pendiente de pago (crédito).
formaPago.cuotas[]arregloSolo crédito. Cada cuota: numero, monto, fechaVence (YYYY-MM-DD).

Tipo de cambio

5 campos
CampoTipoDescripción
tipoCambionumber | stringTipo de cambio a PEN si la moneda no es PEN (hasta 4 enteros y 6 decimales). Si lo omites se usa el SBS aplicable.
fechaCambiostringYYYY-MM-DD. Fecha a la que corresponde el tipo de cambio enviado (informativa).
motivoTipoCambiostringPor qué difiere del SBS (TC pactado, banco, contrato).
confirmarTipoCambiobooleanObligatorio en true si tu valor se aparta más de 10 % del SBS.
fechaHechoGeneradorstringYYYY-MM-DD. Fecha que fija el tipo de cambio del IGV. Por defecto, fechaEmision.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Ejemplo de request

json
{
  "tipoDocumento": "07",
  "serie": "FC01",
  "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
    }
  ]
}

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "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"
  }
}

Notas

  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar notas

GET/v1/emission/notes

Parámetros de query

5 campos
CampoTipoDescripción
tipoDocumentostring07 u 08.
estadostringDRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
docModificadostringSolo las notas que afectan a ese comprobante, por ejemplo F001-00000010.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{ "data": [ { "id": 310, "serie": "FC01", "correlativo": "00000001", "estado": "ACCEPTED", "pdfUrl": "https://…" } ], "meta": { "total": 1, "page": 1, "perPage": 20 } }

Detalle de una nota

GET/v1/emission/notes/{id}

Incluye xmlUrl, cdrUrl y pdfUrl como enlaces firmados de 15 minutos.

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "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

app-api.flashfact.pe · Token Bearer de tu key

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/emission/retenciones

Comprobante

8 campos · 7 obligatorios
CampoTipoDescripción
serieobligatoriostringR + 3 alfanuméricos (R001).
fechaEmisionobligatoriostringYYYY-MM-DD.
codigoRegimenobligatoriostringCatálogo 23: 01 régimen general (3 %), 02 régimen especial (6 %, solo hasta 28/02/2014).
tasaRetencionobligatorionumberDebe coincidir con la tasa del régimen.
tipoDocumentoProveedorobligatoriostringSiempre 6 (RUC).
rucProveedorobligatoriostring11 dígitos.
razonSocialProveedorobligatoriostringRazón social.
direccionProveedor / observaciones / redondeovariosOpcionales.

Documentos relacionados (documentos[])

10 campos · 6 obligatorios
CampoTipoDescripción
tipoDocumentoobligatoriostring01, 12, 07, 08 o 20.
numeroDocumentoobligatoriostringserie-correlativo del documento relacionado.
fechaEmision / importeTotal / monedaobligatoriovariosDatos del documento.
numeroPago / fechaPago / importePago / monedaPagovariosDatos del pago. El par documento más numeroPago no puede repetirse.
importeRetenidoobligatorionumberMayor que 0.
fechaRetencionobligatoriostringYYYY-MM-DD.
importeNetoPagadoobligatorionumberMayor que 0.
monedaOrigenstringSi la envías debe coincidir con la moneda del documento.
tipoCambionumber | stringObligatorio 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.
fechaCambio / motivoTipoCambio / confirmarTipoCambiovariosMismas reglas que en facturas.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Ejemplo de request

json
{
  "serie": "R001",
  "fechaEmision": "2026-10-11",
  "codigoRegimen": "01",
  "tasaRetencion": 3,
  "tipoDocumentoProveedor": "6",
  "rucProveedor": "20123456789",
  "razonSocialProveedor": "PROVEEDOR SAC",
  "documentos": [
    {
      "tipoDocumento": "01",
      "numeroDocumento": "F001-00000050",
      "fechaEmision": "2026-10-01",
      "importeTotal": 1000,
      "moneda": "PEN",
      "numeroPago": 1,
      "fechaPago": "2026-10-11",
      "importePago": 1000,
      "monedaPago": "PEN",
      "importeRetenido": 30,
      "fechaRetencion": "2026-10-11",
      "importeNetoPagado": 970
    }
  ]
}

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 55,
    "serie": "R001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "codigoRegimen": "01",
    "tasaRetencion": 3,
    "rucProveedor": "20123456789",
    "razonSocialProveedor": "PROVEEDOR SAC",
    "totalRetenido": 30,
    "totalPagado": 970,
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:20:00Z"
  }
}

Notas

  • totalPagado suma los importes netos pagados en soles, como exige SUNAT.
  • A diferencia de facturas y notas, repetir serie y correlativo no devuelve el original: usa correlativos que no hayas emitido.
  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar retenciones

GET/v1/emission/retenciones

Parámetros de query

3 campos
CampoTipoDescripción
estadostringDRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{ "data": [ { "id": 55, "serie": "R001", "correlativo": "00000001", "estado": "ACCEPTED", "pdfUrl": "https://…" } ], "meta": { "total": 1, "page": 1, "perPage": 20 } }

Detalle de una retención

GET/v1/emission/retenciones/{id}

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 55,
    "serie": "R001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "codigoRegimen": "01",
    "tasaRetencion": 3,
    "rucProveedor": "20123456789",
    "razonSocialProveedor": "PROVEEDOR SAC",
    "totalRetenido": 30,
    "totalPagado": 970,
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:20:00Z"
  }
}

Emitir un comprobante de percepción

POST/v1/emission/percepciones

Comprobante

9 campos · 7 obligatorios
CampoTipoDescripción
serieobligatoriostringP + 3 alfanuméricos (P001).
fechaEmisionobligatoriostringYYYY-MM-DD.
codigoRegimenobligatoriostringCatálogo 22: 01 venta interna (2 %), 02 combustible (1 %), 03 agentes de combustible (0.5 %).
tasaPercepcionobligatorionumberDebe coincidir con la tasa del régimen.
tipoDocumentoClienteobligatoriostringCatálogo 6.
rucClienteobligatoriostringDocumento del cliente.
razonSocialClienteobligatoriostringRazón social.
indicadorExcepcionalstringSolo 01. Con él se admite un único documento relacionado.
direccionCliente / observaciones / redondeovariosOpcionales.

Documentos relacionados (documentos[])

10 campos · 6 obligatorios
CampoTipoDescripción
tipoDocumentoobligatoriostring01, 03, 12, 07, 08 o 40.
numeroDocumentoobligatoriostringserie-correlativo.
fechaEmision / importeTotal / monedaobligatoriovariosDatos del documento.
numeroCobro / fechaCobro / importeCobro / monedaCobrovariosDatos del cobro.
importePercibidoobligatorionumberMonto percibido.
fechaPercepcionobligatoriostringYYYY-MM-DD.
importeNetoCobradoobligatorionumberMonto neto cobrado.
monedaOrigenstringSi la envías debe coincidir con la moneda del documento.
tipoCambionumber | stringObligatorio 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.
fechaCambio / motivoTipoCambio / confirmarTipoCambiovariosMismas reglas que en facturas.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Ejemplo de request

json
{
  "serie": "P001",
  "fechaEmision": "2026-10-11",
  "codigoRegimen": "01",
  "tasaPercepcion": 2,
  "tipoDocumentoCliente": "6",
  "rucCliente": "20123456789",
  "razonSocialCliente": "CLIENTE SAC",
  "documentos": [
    {
      "tipoDocumento": "01",
      "numeroDocumento": "F001-00000051",
      "fechaEmision": "2026-10-01",
      "importeTotal": 1000,
      "moneda": "PEN",
      "numeroCobro": 1,
      "fechaCobro": "2026-10-11",
      "importeCobro": 1000,
      "monedaCobro": "PEN",
      "importePercibido": 20,
      "fechaPercepcion": "2026-10-11",
      "importeNetoCobrado": 1020
    }
  ]
}

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 21,
    "serie": "P001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "codigoRegimen": "01",
    "tasaPercepcion": 2,
    "rucCliente": "20123456789",
    "razonSocialCliente": "CLIENTE SAC",
    "totalPercibido": 20,
    "totalCobrado": 1020,
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:25:00Z"
  }
}

Notas

  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar percepciones

GET/v1/emission/percepciones

Parámetros de query

3 campos
CampoTipoDescripción
estadostringDRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{ "data": [ { "id": 21, "serie": "P001", "correlativo": "00000001", "estado": "ACCEPTED", "pdfUrl": "https://…" } ], "meta": { "total": 1, "page": 1, "perPage": 20 } }

Detalle de una percepción

GET/v1/emission/percepciones/{id}

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 21,
    "serie": "P001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "codigoRegimen": "01",
    "tasaPercepcion": 2,
    "rucCliente": "20123456789",
    "razonSocialCliente": "CLIENTE SAC",
    "totalPercibido": 20,
    "totalCobrado": 1020,
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:25:00Z"
  }
}

Guías de remisión

app-api.flashfact.pe · Token Bearer de tu key

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/emission/guias/remitente

Guía

19 campos · 11 obligatorios
CampoTipoDescripción
serieobligatoriostringT + 3 alfanuméricos en la guía remitente (T001); V + 3 en la transportista (V001).
fechaEmisionobligatoriostringYYYY-MM-DD.
horaEmisionobligatoriostringHH:MM:SS. A diferencia de las facturas, es obligatoria.
motivoTrasladoobligatoriostringCatálogo 20: 01 venta, 02 compra, 04 traslado entre establecimientos...
fechaInicioTrasladoobligatoriostringYYYY-MM-DD.
pesoBrutoobligatorionumberMayor que 0.
unidadPesoobligatoriostringKGM o TNE.
observacionesstringTexto libre.
indicadores[]arregloTextos 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).
ubigeoOrigen / ubigeoDestinoobligatoriostring6 dígitos, del catálogo 13 (INEI).
direccionOrigen / direccionDestinoobligatoriostringDirecciones de partida y llegada.
documentosRelacionados[]arreglo{ tipoDoc (cat. 61), numDoc, emisorRUC, emisorNombre }.
tipoDocDestinatario / numDocDestinatario / nombreDestinatarioobligatoriostringDestinatario. Catálogo 6.
tipoDocProveedor / numDocProveedor / nombreProveedorstringSolo para los motivos 02, 07 y 13.
tipoDocComprador / numDocComprador / nombreCompradorstringSolo para los motivos 03 y 13.
modalidadTransporteobligatoriostringCatálogo 18: 01 transporte público, 02 transporte privado.
tipoDocTransportista / numDocTransportista / nombreTransportistastringObligatorios en transporte público (RUC de 11 dígitos), salvo con el indicador M1L.
placastringObligatoria en transporte privado, o en público con el indicador de vehículo y conductores. De 6 a 8 caracteres alfanuméricos en mayúsculas.
tipoDocConductor / numDocConductor / nombresConductor / apellidosConductorstringConductor principal. Mismas condiciones que la placa.

Líneas (lineas[])

4 campos · 3 obligatorios
CampoTipoDescripción
cantidadobligatorionumberMayor que 0.
unidadobligatoriostringCódigo de unidad UN/ECE.
descripcionobligatoriostringDescripción de la mercancía.
codProducto / codSUNAT / partidastringCódigo interno, código SUNAT de producto y partida arancelaria.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Ejemplo de request

json
{
  "serie": "T001",
  "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" } ]
}

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 88,
    "serie": "T001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "tipoDocDestinatario": "6",
    "numDocDestinatario": "20123456789",
    "nombreDestinatario": "CLIENTE SAC",
    "motivoTraslado": "01",
    "modalidadTransporte": "01",
    "fechaInicioTraslado": "2026-10-12",
    "pesoBruto": 120.5,
    "unidadPeso": "KGM",
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:30:00Z"
  }
}

Notas

  • Si la cola está caída la guía se guarda igual y la API responde 201: no hay error que reintentar. Revisa que su estado pase de DRAFT.
  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar guías remitente

GET/v1/emission/guias/remitente

Parámetros de query

3 campos
CampoTipoDescripción
estadostringDRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{ "data": [ { "id": 88, "serie": "T001", "correlativo": "00000001", "estado": "ACCEPTED", "pdfUrl": "https://…" } ], "meta": { "total": 1, "page": 1, "perPage": 20 } }

Detalle de una guía remitente

GET/v1/emission/guias/remitente/{id}

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 88,
    "serie": "T001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "tipoDocDestinatario": "6",
    "numDocDestinatario": "20123456789",
    "nombreDestinatario": "CLIENTE SAC",
    "motivoTraslado": "01",
    "modalidadTransporte": "01",
    "fechaInicioTraslado": "2026-10-12",
    "pesoBruto": 120.5,
    "unidadPeso": "KGM",
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:30:00Z"
  }
}

Notas

  • El CDR de las guías llega como archivo .zip.

Emitir una guía de remisión transportista

POST/v1/emission/guias/transportista

Guía

19 campos · 15 obligatorios
CampoTipoDescripción
serieobligatoriostringT + 3 alfanuméricos en la guía remitente (T001); V + 3 en la transportista (V001).
fechaEmisionobligatoriostringYYYY-MM-DD.
horaEmisionobligatoriostringHH:MM:SS. A diferencia de las facturas, es obligatoria.
motivoTrasladoobligatoriostringCatálogo 20: 01 venta, 02 compra, 04 traslado entre establecimientos...
fechaInicioTrasladoobligatoriostringYYYY-MM-DD.
pesoBrutoobligatorionumberMayor que 0.
unidadPesoobligatoriostringKGM o TNE.
observacionesstringTexto libre.
indicadores[]arregloTextos 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).
ubigeoOrigen / ubigeoDestinoobligatoriostring6 dígitos, del catálogo 13 (INEI).
direccionOrigen / direccionDestinoobligatoriostringDirecciones de partida y llegada.
registroMTCstringRegistro MTC del transportista.
tipoDocRemitente / numDocRemitente / nombreRemitenteobligatoriostringRemitente.
tipoDocDestinatario / numDocDestinatario / nombreDestinatarioobligatoriostringDestinatario.
modalidadTransporteobligatoriostringSiempre 01 (transporte público).
placaobligatoriostringDe 6 a 8 caracteres alfanuméricos en mayúsculas.
tipoDocConductorPrincipal / numDocConductorPrincipal / nombresConductorPrincipal / apellidosConductorPrincipalobligatoriostringConductor principal.
tipoDocConductorSecundario / numDocConductorSecundario / nombresConductorSecundario / apellidosConductorSecundariostringConductor secundario.
documentosRelacionados[]obligatorioarregloDebe incluir al menos una guía de remitente (09) o de transportista (31).

Líneas (lineas[])

4 campos · 3 obligatorios
CampoTipoDescripción
cantidadobligatorionumberMayor que 0.
unidadobligatoriostringCódigo de unidad UN/ECE.
descripcionobligatoriostringDescripción de la mercancía.
codProducto / codSUNAT / partidastringCódigo interno, código SUNAT de producto y partida arancelaria.

Dónde se emite

2 campos
CampoTipoDescripción
branch_idstringSucursal de la serie. Si lo omites se usa tu sucursal principal.
terminal_idstringCaja de la serie (el terminal_id que ves en GET /v1/emission/series). Si lo omites se usa la caja principal de la sucursal.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 88,
    "serie": "V001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "tipoDocDestinatario": "6",
    "numDocDestinatario": "20123456789",
    "nombreDestinatario": "CLIENTE SAC",
    "motivoTraslado": "01",
    "modalidadTransporte": "01",
    "fechaInicioTraslado": "2026-10-12",
    "pesoBruto": 120.5,
    "unidadPeso": "KGM",
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:30:00Z"
  }
}

Notas

  • Si la cola está caída la guía se guarda igual y la API responde 201: no hay error que reintentar. Revisa que su estado pase de DRAFT.
  • Envías la serie y Flashfact asigna el correlativo, con el mismo contador de tu panel: no se repite ni se salta. La serie debe existir y estar habilitada en tu cuenta.
  • Envía el header Idempotency-Key (cualquier texto único por comprobante) para reintentar sin duplicar: con la misma clave y el mismo cuerpo recibes la respuesta original.

Listar guías transportista

GET/v1/emission/guias/transportista

Parámetros de query

3 campos
CampoTipoDescripción
estadostringDRAFT, SENDING, SENT, ACCEPTED, REJECTED o FAILED.
pagenumberPágina, desde 1. Por defecto 1.
perPagenumberResultados por página. Por defecto 20.

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{ "data": [ { "id": 88, "serie": "V001", "correlativo": "00000001", "estado": "ACCEPTED", "pdfUrl": "https://…" } ], "meta": { "total": 1, "page": 1, "perPage": 20 } }

Detalle de una guía transportista

GET/v1/emission/guias/transportista/{id}

Parámetros de ruta

1 campo · 1 obligatorio
CampoTipoDescripción
idobligatorionumberID numérico del documento (campo id de la respuesta).

Respuestas

Estructura completa de la respuesta: ver modelo.

json
{
  "data": {
    "id": 88,
    "serie": "V001",
    "correlativo": "00000001",
    "fechaEmision": "2026-10-11",
    "tipoDocDestinatario": "6",
    "numDocDestinatario": "20123456789",
    "nombreDestinatario": "CLIENTE SAC",
    "motivoTraslado": "01",
    "modalidadTransporte": "01",
    "fechaInicioTraslado": "2026-10-12",
    "pesoBruto": 120.5,
    "unidadPeso": "KGM",
    "estado": "DRAFT",
    "fechaCreacion": "2026-10-11T15:30:00Z"
  }
}

Consultas de apoyo

app-api.flashfact.pe · Token Bearer de tu key

Datos para armar tus comprobantes y cuadrar tus ventas. Son de solo lectura: las series, sucursales y clientes se administran desde el panel.

Listar tus series

GET/v1/emission/series

Las series habilitadas de tu cuenta y su siguiente correlativo. Úsalo para elegir la serie que envías al emitir.

Parámetros de query

2 campos
CampoTipoDescripción
branch_idstringFiltra por sucursal. Por defecto, la principal.
terminal_idstringFiltra por caja. Por defecto, la principal.

Respuestas

json
{
  "data": [
    {
      "id": 31, "terminal_id": "5f0c2d6e-9b0a-4a39-8a77-2c1f6a1d3b10",
      "document_type": "01", "serie": "F001", "next_correlativo": 124, "enabled": true
    },
    {
      "id": 32, "terminal_id": "5f0c2d6e-9b0a-4a39-8a77-2c1f6a1d3b10",
      "document_type": "03", "serie": "B001", "next_correlativo": 981, "enabled": true
    }
  ]
}

Consultar un DNI o RUC

GET/v1/emission/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
CampoTipoDescripción
tipoobligatoriostringCatálogo 6: 1 para DNI, 6 para RUC. Otros valores, incluido DNI o RUC en texto, responden 404.
numeroobligatoriostringNú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).

Listar sucursales

GET/v1/emission/branches

Locales anexos de la empresa. Devuelve un arreglo simple, sin paginación.

Respuestas

json
{
  "data": [
    { "id": 4, "code": "0001", "name": "Tienda Miraflores", "address": "Av. Larco 100", "is_active": true }
  ]
}

Registro de ventas (PLE 14.1)

GET/v1/emission/registro-ventas

Facturas, boletas y notas ACCEPTED de un rango de fechas, con el desglose de tributos y la referencia de las notas. Sin paginación.

Parámetros de query

2 campos · 2 obligatorios
CampoTipoDescripción
fechaDesdeobligatoriostringYYYY-MM-DD.
fechaHastaobligatoriostringYYYY-MM-DD.

Respuestas

json
{
  "data": [
    {
      "docType": "01", "serie": "F001", "numero": "00000010", "fechaEmision": "2026-10-01",
      "clienteTipoDoc": "6", "clienteNumDoc": "20123456789", "clienteRazon": "EMPRESA SAC",
      "baseGravada": 100, "igv": 18, "exonerado": 0, "inafecto": 0, "exportacion": 0,
      "importeTotal": 118, "moneda": "PEN",
      "tipoCambio": null
    }
  ]
}

Notas

  • En comprobantes en moneda extranjera, tipoCambio, tipoCambioOrigen y tipoCambioVerificacion indican el valor usado y su origen.
¿Falta algo o algo no coincide con lo que ves? Escríbenos desde la página de contacto y lo corregimos.