API Facturación Electrónica
EL servicio RESTful de facturación electrónica (UBL 2.1) permite crear comprobantes electrónicos, cumpliendo así con la normatividad establecida por SUNAT evitando multas a los contribuyentes. Podrás emitir Facturas, Boletas, Notas de Crédito y Notas de Débito.
Atentificación
Para autentificarse se debe ingresar un usuario y contraseña y luego realizar una solicitud de request tipo POST. Si las credenciales ingresadas son correctas el Api Rest devolverá un token el cual tiene una duración de un minuto aproximadamente, luego expirará y tiene que solicitar un nuevo token.
Headers
Content-Type: application/json
End Point
https://apirest.tecnosolutionsperu.com/api/v1/login
{
"username": "demo",
"password": "demo"
}
Factura y Boletas
Para crear facturas o boletas electrónicas, se deben configurar las cabeceras y asignar el token previamente generado durante la autentificación, luego se debe realizar una solicitud de request tipo POST. Si el token es válido, el Api Rest devolverá el xml de la factura o boleta electrónica con su respectivo cdr, qrCode y pdf.
Headers
Authorization: Bearer + token
Content-Type: application/json
End Point
https://apirest.tecnosolutionsperu.com/api/v1/invoices
Factura Gravada
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento":{
"numero": "FV01-00000001",
"fecha_emision": "2023-09-01",
"hora_emision": "01:55:30",
"fecha_vto": "2023-09-01",
"tipo_comprobante": "01",
"tipo_moneda": "PEN",
"tipo_transaccion": "0101",
"numero_items": 1,
"tipo_pago": "Contado"
},
"cliente": {
"tipo_documento": 6,
"numero": "20325525555",
"razon_social": "CLIENTE DE PRUEBA S.A.C.",
"direccion": "SU CASITA...",
"pais": "PE"
},
"notas":[
{
"id": "1000",
"valor": "SON CIENTO DIECIOCHO CON 00/100 SOLES"
}
],
"cuotas": [],
"operaciones": {
"total_gravadas": 100.00,
"total_gratuitas": 0.00,
"total_exoneradas": 0.00,
"total_inafectas": 0.00
},
"impuestos": {
"total_igv": 18.00,
"total_icbper": 0.00
},
"descuentos": {},
"total": {
"valor_venta": 100.00,
"impuestos": 18.00,
"descuentos": 0.00,
"cargos": 0.00,
"pagable": 118.00
},
"items": [
{
"item": 1,
"codigo_producto": "PRO01",
"descripcion": "CAJA DE JUGUETES NIÑO 24 UND.",
"tipo_afectacion": 10,
"unidad_medida": "NIU",
"cantidad": 1,
"valor_unitario": 100.00,
"precio_unitario": 118.00,
"precio_referencial": 0.00,
"descuento": {
"codigo": "00",
"porcentaje": 0,
"total_base_igv": 100.00,
"total": 0.00
},
"valor_venta":100.00,
"porcentaje_igv": 18,
"total_igv": 18.00,
"total_isc": 0.00,
"tasa_icbper": 0,
"total_icbper": 0.00
}
]
}
Respuesta
{
"success": true,
"data": {
"filename": "20000000000-03-BV01-00000001",
"hash": "mcdBAwRVP200MWpk8qIsYXMi4eM=",
"code": 0,
"description": "La Factura número FV01-00000001 fue aceptada.",
"notes": "",
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL",
"qrCode": "iVBORw0KGgoAAAANSUhEUgAAAKQAAACkAQMAAAAjex",
"cdr": null,
"pdf": "JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJ"
}
}
Factura Exonerada
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento":{
"numero": "FV01-00000001",
"fecha_emision": "2023-09-01",
"hora_emision": "01:55:30",
"fecha_vto": "2023-09-01",
"tipo_comprobante": "01",
"tipo_moneda": "PEN",
"tipo_transaccion": "0101",
"numero_items": 1,
"tipo_pago": "Contado"
},
"cliente": {
"tipo_documento": 6,
"numero": "20325525555",
"razon_social": "CLIENTE DE PRUEBA S.A.C.",
"direccion": "SU CASITA...",
"pais": "PE"
},
"notas":[
{
"id": "1000",
"valor": "SON CIEN CON 00/100 SOLES"
}
],
"cuotas": [],
"operaciones": {
"total_gravadas": 0.00,
"total_gratuitas": 0.00,
"total_exoneradas": 100.00,
"total_inafectas": 0.00
},
"impuestos": {
"total_igv": 0.00,
"total_icbper": 0.00
},
"descuentos": {},
"total": {
"valor_venta": 100.00,
"impuestos": 0.00,
"descuentos": 0.00,
"cargos": 0.00,
"pagable": 100.00
},
"items": [
{
"item": 1,
"codigo_producto": "PRO01",
"descripcion": "CAJA DE JUGUETES NIÑO 24 UND.",
"tipo_afectacion": 20,
"unidad_medida": "NIU",
"cantidad": 1,
"valor_unitario": 100.00,
"precio_unitario": 100.00,
"precio_referencial": 0.00,
"descuento": {
"codigo": "00",
"porcentaje": 0,
"total_base_igv": 100.00,
"total": 0.00
},
"valor_venta":100.00,
"porcentaje_igv": 0,
"total_igv": 0.00,
"total_isc": 0.00,
"tasa_icbper": 0,
"total_icbper": 0.00
}
]
}
Respuesta
{
"success": true,
"data": {
"filename": "20000000000-03-BV01-00000001",
"hash": "mcdBAwRVP200MWpk8qIsYXMi4eM=",
"code": 0,
"description": "La Factura número FV01-00000001 fue aceptada.",
"notes": "",
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL",
"qrCode": "iVBORw0KGgoAAAANSUhEUgAAAKQAAACkAQMAAAAjex",
"cdr": null,
"pdf": "JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJ"
}
}
Resumenes Diario
Para crear resumenes diario, se debe realizar una solicitud de request tipo POST con la siguiente estructura, si la petición es correcta el Api Rest devolverá el xml y un número de ticket con el cual podrá descargar el cdr (constancia de recepción).
Headers
Authorization: Bearer + token
Content-Type: application/json
End Point
https://apirest.tecnosolutionsperu.com/api/v1/summary
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento": {
"tipo": "RC",
"numero": "20230912-00001",
"fecha_referencia": "2023-09-01",
"fecha_emision": "2023-09-01",
"rango": {
"numero_desde": "00000012",
"numero_hasta": "00000020"
}
},
"items": [
{
"id": "1",
"documento": {
"tipo": "03",
"serie": "BV01",
"numero": "00000029",
"tipo_moneda": "PEN",
"status_code": "1",
"total": "118.00"
},
"cliente": {
"tipo_documento": "1",
"numero": "45623521"
},
"documento_afectado":{},
"montos": [
{
"codigo": "01",
"importe": "100.00"
},
{
"codigo": "02",
"importe": "0.00"
},
{
"codigo": "03",
"importe": "0.00"
},
{
"codigo": "05",
"importe": "0.00"
}
],
"impuestos": [
{
"id": "1000",
"nombre": "IGV",
"codigo": "VAT",
"monto": "18.00"
}
],
"cargos": []
}
]
}
Respuesta
{
"success": true,
"data": {
"external_id": "22653eaacf7e8007344bc19b2d9d5a6fb3d8ec8c146a023f067d20bae3063921",
"filename": "20000000000-RC-20230912-00001",
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8U3VtbWF",
"ticket": "1693373661984"
}
}
Descargar Cdr
Para descargar el cdr del resumen diario se debe enviar el parametro external_id que devuelve al enviar el resumen diario, así como el número de ticket.
End Point
https://apirest.tecnosolutionsperu.com/api/v1/summary/getStatus
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento":{
"external_id": 14,
"ticket": "1699902490491"
}
}
Respuesta
{
"success": true,
"data": {
"filename": "20000000000-RC-20231113-00001",
"code": 0,
"description": "El Resumen Diario número RC-20231113-00001 fue aceptado.",
"notes": "",
"cdr": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL"
}
}
Comunicación de Baja
Para crear comunicaciones de baja, se debe realizar una solicitud de request tipo POST con la siguiente estructura, si la petición es correcta el Api Rest devolverá el xml y un número de ticket con el cual podrá descargar el cdr (constancia de recepción).
Headers
Authorization: Bearer + token
Content-Type: application/json
End Point
https://apirest.tecnosolutionsperu.com/api/v1/voided
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento": {
"tipo": "RA",
"numero": "20230912-00001",
"fecha_referencia": "2023-09-01",
"fecha_emision": "2023-09-01"
},
"items": [
{
"external_id" : "11",
"item": 1,
"tipo_documento": "01",
"serie": "FV01",
"numero": "00000028",
"motivo": "CLIENTE NO QUIERE EL PRODUCTO"
}
]
}
Respuesta
{
"success": true,
"data": {
"external_id": "22653eaacf7e8007344bc19b2d9d5a6fb3d8ec8c146a023f067d20bae3063921",
"filename": "20000000000-RA-20230912-00001",
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8U3VtbWF",
"ticket": "1693373661984"
}
}
Descargar Cdr
Para descargar el cdr de la comunicación de baja se debe enviar el parametro external_id que devuelve al enviar la comunicación de baja, así como el número de ticket.
End Point
https://apirest.tecnosolutionsperu.com/api/v1/voided/getStatus
{
"emisor": {
"ruc": "20000000000",
"anexo": "0000"
},
"documento":{
"external_id": 14,
"ticket": "1699902490491"
}
}
Respuesta
{
"success": true,
"data": {
"filename": "20000000000-RA-20231113-00001",
"code": 0,
"description": "La Comunicación de Baja número RA-20231113-00001 fue aceptado.",
"notes": "",
"cdr": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL"
}
}