tefacturo

Emitir Boleta de Venta

Servicio para emitir boletas de venta electrónicas validadas por SUNAT. La boleta es el comprobante de pago utilizado en transacciones con consumidores finales (B2C).

Reglas de uso importantes

  • tipoIntegracion: OFFLINE → tu propio ERP se encarga del correlativo (serie/número). ERP → tefacturo se encarga del correlativo.
  • numero (en datosDocumento): no puede estar duplicado. Si el número ya fue utilizado, mapea/controla el correlativo para no reenviarlo.
  • fechaEmision: un comprobante (CPE) se puede declarar con un máximo de 3 días de anterioridad.
  • Reemplaza el RUC fijo del ejemplo por el RUC emisor usado en la URL y el token; los tres deben coincidir.
  • Los valores de la respuesta 200, como serie, número, hash, firma e identificador, son ilustrativos; el API genera sus valores reales en cada solicitud.
PUThttps://jarvis.tefacturo.pe/boleta-api/invoice2u/integracion/boleta/{ruc}

Servicio para emitir boletas de venta electrónicas. Reemplaza {ruc} con el RUC del emisor. El comprobante será firmado digitalmente y enviado a SUNAT de forma automática.

Headers

HeaderValorDescripción
AuthorizationBearer {token}Token de autenticación obtenido del endpoint de login
Content-Typeapplication/jsonTipo de contenido del cuerpo de la solicitud

Cuerpo de la Solicitud

La estructura del JSON es similar a la de la factura. El panel derecho replica los mismos casos de la página de Ejemplos JSON: boleta gravada, boleta inafecta y boleta gratuita.

Los ejemplos completos están en el panel derecho para copiar rápidamente.

Respuesta Exitosa (200)

La respuesta confirma que la boleta fue emitida correctamente y retorna los datos generados del comprobante: firma, hash, identificador, serie, número, total, observación y tipo_documento. A diferencia de las facturas, las boletas se envían a SUNAT a través de resúmenes diarios.

Revisa el panel derecho para ver y copiar la respuesta de ejemplo.

Diferencias con la Factura

AspectoFacturaBoleta
SerieInicia con "F" (ej: FFA6)Inicia con "B" (ej: BBV5)
ReceptorSiempre RUCDNI, CE, Pasaporte o RUC
Envío a SUNATInmediato (tiempo real)Mediante resumen diario
UsoTransacciones B2BTransacciones B2C

Tipo de Registro de Precios

El campo tipoRegistro funciona igual que en la factura:

ValorDescripción
PRECIOS_SIN_IGVLos precios NO incluyen IGV. El sistema calcula el 18% automáticamente.
PRECIOS_CON_IGVLos precios YA incluyen IGV. El sistema descompone base imponible e impuesto.

Nota técnica de cálculo IGV

El campo que se envía por ítem depende de si la operación está gravada con IGV y del valor de close2u.tipoRegistro.

CasoCampo a enviarInterpretación del sistema
Gravado + PRECIOS_SIN_IGVvalorVentaUnitarioItemValor de venta sin IGV. El sistema calcula el IGV y obtiene el precio de venta.
Gravado + PRECIOS_CON_IGVprecioVentaUnitarioItemPrecio de venta con IGV. El sistema lo descompone para reemplazar/obtener el valor de venta y el impuesto.
Exonerado o inafectovalorVentaUnitarioItemNo hay IGV por calcular. En ausencia de IGV, el sistema asume el valor enviado como base y lo usa como precio de venta.
Transferencia gratuita o retirovalorReferencialUnitarioItemObligatorio cuando tipoAfectacion es una transferencia gratuita o un retiro. Sin este campo, la API rechaza el ítem porque no tiene precio referencial.
ExportacióntipoAfectacion: "EXPORTACION"Cuando informacionAdicional.tipoOperacion es exportación, cada ítem debe usar la afectación EXPORTACION.

Nota sobre detracción: Incluye el objeto detraccion solo cuando el importe de venta alcance el mínimo requerido: S/ 700 para casos generales de detracción y S/ 400 para transporte de personas cuando corresponda.

Referencia de Campos

Los campos son idénticos a los de la factura. Consulta la referencia completa de campos de factura para la tabla detallada de cada objeto.

Nota: Para boletas, el campo tipoDocumentoIdentidad del receptor puede ser DNI, CE o PASAPORTE además de RUC. Si el monto total es menor a S/ 700, el receptor puede omitir su documento de identidad.

Manejo de Errores

CódigoEstadoDescripción
400Bad RequestErrores de validación en el cuerpo de la solicitud.
401UnauthorizedToken de autenticación inválido o expirado.
403ForbiddenNo tiene permisos para emitir boletas con el RUC indicado.
404Not FoundEl RUC proporcionado no está registrado en el sistema.
500Internal Server ErrorError interno del servidor. Intente nuevamente o contacte soporte.

Endpoints Relacionados