FACTESOL - Documentación¶
Documentacion para la elaboración y envío de comprobantes electrónicos al API de factesol.
Nota
Necesitas tener un plan de servicio para utilizar nuestra plataforma.

Indice¶
Archivos de Texto¶
Ejemplos de archivos de texto para el envio comprobantes electronicos.
Factura¶
Ejemplo de una factura con operaciones gravadas e inafectas.
Cabecera
Dato | Valor |
---|---|
Identificador de Cabecera | CAB |
Tipo de operación | |
Tipo de documento | 01 |
Serie del documento | F001 |
Correlativo del documento | 123 |
Fecha de emisión | 2017-12-20 |
Tipo de documento de identidad del adquirente | 6 |
Número de documento de identidad del adquirente | 20480048359 |
Razón social del adquirente | EMPRESA SAC |
Correo del adquiriente | admin@domain.pe |
Tipo de moneda en la cual se emite la factura electrónica | PEN |
Descuentos Globales | |
Sumatoria otros Cargos | |
Total descuentos | |
Total valor de venta - Operaciones gravadas | 50 |
Total valor de venta - Operaciones inafectas | 50 |
Total valor de venta - Operaciones exoneradas | 0 |
Total valor de venta - Operaciones gratuitas | |
Sumatoria IGV | 9 |
Sumatoria ISC | |
Sumatoria otros tributos | |
Importe total de la venta | 109 |
Monto de la percepción | |
Monto total incluido la percepción | |
Código del tipo de Nota de Credito o Debito electrónica | |
Descripción de motivo o sustento | |
Tipo de documento del documento que modifica | |
Serie y número del documento que modifica | |
Tipo de documento relacionado | |
Número de documento relacionado | |
Tipo de documento guía | |
Número de documento de guía | |
Monto total anticipos | |
Anticipo - Tipo Documento Relacionado | |
Anticipo - Nro. Documento Relacionado | |
Anticipo - Monto Documento Relacionado | |
Anticipo - Emisor del Documento Relacionado | |
Gratuito | |
Tipo de Cambio |
Detalles
Dato | DETALLE 1 | DETALLE 2 |
---|---|---|
Identificador de Detalle | DET | DET |
Código de unidad de medida por ítem | NIU | MTR |
Cantidad de unidades por ítem | 5 | 2 |
Código de producto | C0001 | C0002 |
Codigo producto SUNAT | ||
Descripción | PROD 1 | PROD 2 |
Valor unitario por ítem | 10 | 25 |
Descuentos por item | ||
Monto de IGV por ítem | 1.8 | 0 |
Afectación al IGV por ítem | 10 | 30 |
Monto de ISC por ítem | ||
Tipo de sistema ISC | ||
Precio de venta unitario por item | 10 | 25 |
Valor de venta por ítem | 50 | 50 |
Valor referencial unitario por ítem (gratuita) |
Contenido del archivo de texto.
CAB||01|F001|123|2017-12-20|6|20480048359|EMPRESA SAC|admin@domain.pe|PEN|0|0|0|50|50|0||9|0|0|109|||||||||||||||||
DET|NIU|5|C0001||PROD 1|10|0|1.8|10|||10|50||
DET|MTR|4|C0002||PROD 2|25|0|0|30|||25|50||
Boleta¶
Ejemplo de una Boleta con operaciones gravadas e inafectas.
Cabecera
Dato | Valor |
---|---|
Identificador de Cabecera | CAB |
Tipo de operación | |
Tipo de documento | 03 |
Serie del documento | B001 |
Correlativo del documento | 123 |
Fecha de emisión | 2017-12-20 |
Tipo de documento de identidad del adquirente | 1 |
Número de documento de identidad del adquirente | 22334455 |
Razón social del adquirente | PERSONA F |
Correo del adquiriente | user@gmail.com |
Tipo de moneda en la cual se emite la factura electrónica | USD |
Descuentos Globales | |
Sumatoria otros Cargos | |
Total descuentos | |
Total valor de venta - Operaciones gravadas | 50 |
Total valor de venta - Operaciones inafectas | 0 |
Total valor de venta - Operaciones exoneradas | 50 |
Total valor de venta - Operaciones gratuitas | |
Sumatoria IGV | 9 |
Sumatoria ISC | |
Sumatoria otros tributos | |
Importe total de la venta | 109 |
Monto de la percepción | |
Monto total incluido la percepción | |
Código del tipo de Nota de Credito o Debito electrónica | |
Descripción de motivo o sustento | |
Tipo de documento del documento que modifica | |
Serie y número del documento que modifica | |
Tipo de documento relacionado | |
Número de documento relacionado | |
Tipo de documento guía | |
Número de documento de guía | |
Monto total anticipos | |
Anticipo - Tipo Documento Relacionado | |
Anticipo - Nro. Documento Relacionado | |
Anticipo - Monto Documento Relacionado | |
Anticipo - Emisor del Documento Relacionado | |
Gratuito | |
Tipo de Cambio | 3.26 |
Detalles
Dato | DETALLE 1 | DETALLE 2 |
---|---|---|
Identificador de Detalle | DET | DET |
Código de unidad de medida por ítem | NIU | ZZ |
Cantidad de unidades por ítem | 5 | 2 |
Código de producto | C0001 | C0002 |
Codigo producto SUNAT | ||
Descripción | PROD 1 | PROD 2 |
Valor unitario por ítem | 10 | 25 |
Descuentos por item | ||
Monto de IGV por ítem | 1.8 | 0 |
Afectación al IGV por ítem | 10 | 30 |
Monto de ISC por ítem | ||
Tipo de sistema ISC | ||
Precio de venta unitario por item | 10 | 25 |
Valor de venta por ítem | 50 | 50 |
Valor referencial unitario por ítem (gratuita) |
Contenido del archivo de texto.
CAB||03|B001|123|2017-12-20|1|22334455|PERSONA F|user@gmail.com|USD|0|0|0|50|0|50||9|0|0|109|||||||||||||||||3.26
DET|NIU|5|C0001||PROD 1|10|0|1.8|10|||10|50||
DET|ZZ|4|C0002||PROD 2|25|0|0|30|||25|50||
Nota de Crédito¶
Ejemplo de una Nota de Crédito relacionada a una factura.
Cabecera
Dato | Valor |
---|---|
Identificador de Cabecera | CAB |
Tipo de operación | |
Tipo de documento | 07 |
Serie del documento | F001 |
Correlativo del documento | 111 |
Fecha de emisión | 2017-12-20 |
Tipo de documento de identidad del adquirente | 6 |
Número de documento de identidad del adquirente | 20480048359 |
Razón social del adquirente | EMPRESA SAC |
Correo del adquiriente | admin@domain.pe |
Tipo de moneda en la cual se emite la factura electrónica | PEN |
Descuentos Globales | |
Sumatoria otros Cargos | |
Total descuentos | |
Total valor de venta - Operaciones gravadas | 50 |
Total valor de venta - Operaciones inafectas | 0 |
Total valor de venta - Operaciones exoneradas | 50 |
Total valor de venta - Operaciones gratuitas | |
Sumatoria IGV | 9 |
Sumatoria ISC | |
Sumatoria otros tributos | |
Importe total de la venta | 109 |
Monto de la percepción | |
Monto total incluido la percepción | |
Código del tipo de Nota de Credito o Debito electrónica | 02 |
Descripción de motivo o sustento | Error en Ruc |
Tipo de documento del documento que modifica | 01 |
Serie y número del documento que modifica | F001-123 |
Tipo de documento relacionado | |
Número de documento relacionado | |
Tipo de documento guía | |
Número de documento de guía | |
Monto total anticipos | |
Anticipo - Tipo Documento Relacionado | |
Anticipo - Nro. Documento Relacionado | |
Anticipo - Monto Documento Relacionado | |
Anticipo - Emisor del Documento Relacionado | |
Gratuito | |
Tipo de Cambio |
Detalles
Dato | DETALLE 1 | DETALLE 2 |
---|---|---|
Identificador de Detalle | DET | DET |
Código de unidad de medida por ítem | NIU | MTR |
Cantidad de unidades por ítem | 5 | 2 |
Código de producto | C0001 | C0002 |
Codigo producto SUNAT | ||
Descripción | PROD 1 | PROD 2 |
Valor unitario por ítem | 10 | 25 |
Descuentos por item | ||
Monto de IGV por ítem | 1.8 | 0 |
Afectación al IGV por ítem | 10 | 30 |
Monto de ISC por ítem | ||
Tipo de sistema ISC | ||
Precio de venta unitario por item | 10 | 25 |
Valor de venta por ítem | 50 | 50 |
Valor referencial unitario por ítem (gratuita) |
Contenido del archivo de texto.
CAB||07|F001|111|2017-12-20|6|20480048359|EMPRESA SAC|admin@domain.pe|PEN|0|0|0|50|0|50||9|0|0|109|||02|ERROR EN RUC|01|F001-123|||||||||||
DET|NIU|5|C0001||PROD 1|10|0|1.8|10|||10|50||
DET|MTR|4|C0002||PROD 2|25|0|0|30|||25|50||
Nota de Débito¶
Ejemplo de una Nota de Débito relacionada a una factura.
Cabecera
Dato | Valor |
---|---|
Identificador de Cabecera | CAB |
Tipo de operación | |
Tipo de documento | 08 |
Serie del documento | F001 |
Correlativo del documento | 122 |
Fecha de emisión | 2017-12-20 |
Tipo de documento de identidad del adquirente | 6 |
Número de documento de identidad del adquirente | 20480048359 |
Razón social del adquirente | EMPRESA SAC |
Correo del adquiriente | admin@domain.pe |
Tipo de moneda en la cual se emite la factura electrónica | PEN |
Descuentos Globales | |
Sumatoria otros Cargos | |
Total descuentos | |
Total valor de venta - Operaciones gravadas | 50 |
Total valor de venta - Operaciones inafectas | 0 |
Total valor de venta - Operaciones exoneradas | 50 |
Total valor de venta - Operaciones gratuitas | |
Sumatoria IGV | 9 |
Sumatoria ISC | |
Sumatoria otros tributos | |
Importe total de la venta | 109 |
Monto de la percepción | |
Monto total incluido la percepción | |
Código del tipo de Nota de Credito o Debito electrónica | 01 |
Descripción de motivo o sustento | Intereses |
Tipo de documento del documento que modifica | 01 |
Serie y número del documento que modifica | F001-123 |
Tipo de documento relacionado | |
Número de documento relacionado | |
Tipo de documento guía | |
Número de documento de guía | |
Monto total anticipos | |
Anticipo - Tipo Documento Relacionado | |
Anticipo - Nro. Documento Relacionado | |
Anticipo - Monto Documento Relacionado | |
Anticipo - Emisor del Documento Relacionado | |
Gratuito | |
Tipo de Cambio |
Detalles
Dato | DETALLE 1 | DETALLE 2 |
---|---|---|
Identificador de Detalle | DET | DET |
Código de unidad de medida por ítem | NIU | MTR |
Cantidad de unidades por ítem | 5 | 2 |
Código de producto | C0001 | C0002 |
Codigo producto SUNAT | ||
Descripción | PROD 1 | PROD 2 |
Valor unitario por ítem | 10 | 25 |
Descuentos por item | ||
Monto de IGV por ítem | 1.8 | 0 |
Afectación al IGV por ítem | 10 | 30 |
Monto de ISC por ítem | ||
Tipo de sistema ISC | ||
Precio de venta unitario por item | 10 | 25 |
Valor de venta por ítem | 50 | 50 |
Valor referencial unitario por ítem (gratuita) |
Contenido del archivo de texto.
CAB||07|F001|122|2017-12-20|6|20480048359|EMPRESA SAC|admin@domain.pe|PEN|0|0|0|50|0|50||9|0|0|109|||01|Intereses|01|F001-123|||||||||||
DET|NIU|5|C0001||PROD 1|10|0|1.8|10|||10|50||
DET|MTR|4|C0002||PROD 2|25|0|0|30|||25|50||
Endpoints¶
Estas son las url a las que se debe enviar los archivos de texto.
Ventas¶
Incluye Facturas, Boletas, Notas de Crédito y Notas de Débito.
Reversión¶
Resumen de Reversiones.
https://factesol.net.pe/api/v1/doc/reversiones
-
POST
/api/reversion/status
¶ Retorna el estado del resumen asociado al id despues de haber sido enviado a Sunat.
Example request:
{ "Ruc": "20123456789", "TipoDocumento": "20", "Serie": "R001", "Correlativo": "123" }
JSON Parameters: - Ruc (string) – Ruc del emisor del comprobante.
- TipoDocumento (string) – Tipo documento (20 - Retencion, 40 - Percepcion).
- Serie (string) – Serie del comprobante.
- Correlativo (string) – Correlativo del comprobante.
Example response:
{ "Success": true, "Code": "03", "Description": "El Resumen de Reversion XXXX ha sido aceptado" }
Resumen Diario¶
-
POST
/api/resumen/create/
(date: fecha)¶ Crea el resumen para la fecha indicada.
Example request:
/api/resumen/create/2019-05-17
Example response:
Retorna un array de los identificadores de los resumenes creado para la fecha indicada.
[ 12, 13]
Status Codes: - 200 OK – no error
- 404 Not Found – No hay comprobantes para esa fecha
-
POST
/api/resumen/send/(int: id)
¶ Envia el resumen asociado al id (retornado al crear el resumen).
Example request:
/api/resumen/send/12
Example response:
{ "Success": true, "Code": "06", "Description": "Enviado a Sunat por procesar" }
Status Codes: - 200 OK – no error
- 404 Not Found – No se encontro el resumen
-
POST
/api/resumen/status/(int: id)
¶ Retorna el estado del resumen asociado al id despues de haber sido enviado a Sunat.
Example request:
/api/resumen/status/12
Example response:
{ "Success": true, "Code": "03", "Description": "El Resumen diario XXXX ha sido aceptado" }
Status Codes: - 200 OK – no error
- 404 Not Found – No se encontro el resumen
Ejemplos¶
Se proveen algunos ejemplos para el envio de comprobantes al API.
Nota
Para ejecuar los siguiente ejemplos necesita crear un token, vaya a la sección Tutoriales
C#¶
Usar los espacios de nombres.
using System;
using System.Net;
Emplear el siguiente codigo para el envio.
var token = "UN-TOKEN-VALIDO";
var txt = "CAB||01|F001|433|2017-12-01|6|20480048359...";
var http = (HttpWebRequest)WebRequest.Create("https://factesol.net.pe/api/v2/doc/ventas");
http.Method = "POST";
http.ContentType = "text/plain";
http.Headers.Add("Authorization", "Bearer " + token);
var content = Encoding.UTF8.GetBytes(txt);
http.ContentLength = content.Length;
using (var wr = http.GetRequestStream())
{
wr.Write(content, 0, content.Length);
}
var resp = (HttpWebResponse)http.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
{
Console.WriteLine("Enviado a Factesol");
}
Java¶
Realizar los siguientes import.
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
Emplear el siguiente codigo para el envio.
String endpoint = "https://factesol.net.pe/api/v2/doc/ventas";
String token = "UN-TOKEN-VALIDO";
String txtContent = "CAB||01|F001|433|2017-12-01|6|20480048359...";
URL url = new URL(endpoint);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Authorization", "Bearer " + token);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/plain");
OutputStream os = conn.getOutputStream();
os.write(txtContent.getBytes());
os.flush();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.out.println("Success");
}
conn.disconnect();
PHP¶
Para el siguiente ejemplo necesita tener activada la extension Curl.
<?php
$token = "UN-TOKEN-VALIDO";
$txt = "CAB||01|F001|433|2017-12-01|6|20480048359...";
$header = array();
$header[] = 'Content-type: text/plain';
$header[] = 'Authorization: Bearer ' . $token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://factesol.net.pe/api/v2/doc/ventas");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $txt);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec ($ch);
curl_close ($ch);
var_dump($result);
Visual FoxPro¶
pURL_WSDL = "https://factesol.net.pe/api/v2/doc/ventas"
token = "UN-TOKEN-VALIDO"
* txt = FILETOSTR(Ruta_de_archivo)
txt = "CAB|0101|01|F591|00001235|2020-08-20|6|20600055519|TI SOLUCIONES|user@gmail.com|PEN|||||4000||||||0|4000|4000|||||||||||||||||3.31" + Chr(13) + ;
"DET|NIU|1|C0001||CEMENTO|4000||0|30|||4000|4000||4000|0|0||" + Chr(13) + ;
"EXT|005|Cal. Bernardo O’Higgins Nro. 899 Int. 505 Pueblo Libre"
oHTTP = Createobject('MsXml2.XmlHttp');
oHTTP.OPEN("POST", pURL_WSDL, .F.):
oHTTP.setRequestHeader("Content-Type", "text/plain")
oHTTP.setRequestHeader("Authorization", "Bearer " + token)
oHTTP.SEND( ALLTRIM(txt) )
RespuestaWS = oHTTP.responseText
RespuestaBd = oHTTP.responseBody
RespuestaEstado = oHTTP.status
IF RespuestaEstado <> 200
MESSAGEBOX("Error")
ELSE
MESSAGEBOX("enviado correctamente")
ENDIF
Visual Basic 6¶
pURL_WSDL = «https://factesol.net.pe/api/v2/doc/ventas» token = «eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJydWMiOiIyMDEyMzQ1Njc4OSIsInR5cGUiOiJzeXMiLCJkYXRlIjoxNTQwMzMyOTg0fQ.ijQaRydA6-Ptsbn3IdXeyH272hUoa–uWM3khEAFIgc»
- txt = «CAB|0101|01|F591|00001235|2020-08-20|6|20600055519|TI SOLUCIONES|user@gmail.com|PEN|||||4000||||||0|4000|4000|||||||||||||||||3.31» & Chr(13) & _
- «DET|NIU|1|C0001||CEMENTO|4000||0|30|||4000|4000||4000|0|0||» & Chr(13) & _ «EXT|005|Cal. Bernardo O’Higgins Nro. 899 Int. 505 Pueblo Libre»
Set oHTTP = CreateObject(«MSXML2.XMLHTTP») oHTTP.open «POST», pURL_WSDL, False oHTTP.setRequestHeader «Content-Type», «text/plain» oHTTP.setRequestHeader «Authorization», «Bearer » + token
oHTTP.send (txt)
RespuestaWS = oHTTP.responseText RespuestaBd = oHTTP.responseBody RespuestaEstado = oHTTP.Status
- If RespuestaEstado <> 200 Then
- MsgBox «Error»
- Else
- MsgBox «enviado correctamente»
End If
Tutoriales¶
Lista de Tutoriales.
Como crear un token¶
Advertencia
Puede crear muliples tokens que no tienen fecha de expiración, puede eliminarlo o suspenderlo temporalmente en que caso sea necesario
Para crear un token dirijase a la opción de Opciones > API Tokens

Click en el boton Agregar
y en la vetana que le aparecerá podrá darle un nombre referencial al token.

Luego podra visualizar los tokens que ha creado.

Continuar con la sección Ejemplos
Obtener el codigo Hash¶
var token = "UN-TOKEN-VALIDO";
var txt = "{\"Ruc\": \"20600055519\", \"TipoDocumento\": \"01\", \"Serie\": \"F001\", \"Correlativo\": \"1\"}";
var http = (HttpWebRequest)WebRequest.Create("https://factesol.net.pe/api/venta/hash");
http.Method = "POST";
http.ContentType = "application/json";
http.Headers.Add("Authorization", "Bearer " + token);
var content = Encoding.UTF8.GetBytes(txt);
http.ContentLength = content.Length;
using (var wr = http.GetRequestStream())
{
wr.Write(content, 0, content.Length);
}
var resp = (HttpWebResponse)http.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
{
using (var reader = new System.IO.StreamReader(resp.GetResponseStream()))
{
string hash = reader.ReadToEnd();
Console.WriteLine("Hash: " + hash);
}
}
Obtener el codigo Qr¶
var token = "UN-TOKEN-VALIDO";
var txt = "{\"Ruc\": \"20600055519\", \"TipoDocumento\": \"01\", \"Serie\": \"F001\", \"Correlativo\": \"1\"}";
var http = (HttpWebRequest)WebRequest.Create("https://factesol.net.pe/api/venta/code-qr");
http.Method = "POST";
http.ContentType = "application/json";
http.Headers.Add("Authorization", "Bearer " + token);
var content = Encoding.UTF8.GetBytes(txt);
http.ContentLength = content.Length;
using (var wr = http.GetRequestStream())
{
wr.Write(content, 0, content.Length);
}
var resp = (HttpWebResponse)http.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
{
using (var stream = resp.GetResponseStream())
{
// imagen en la respuesta
}
}