Introducción
API REST para la integración con Viainfo para facturación electrónica. Todos los endpoints requieren autenticación.
Codificación
Los documentos pueden enviarse en formato XML o JSON. Explicamos en JSON que es más recurrente, la cual requiere codificación ISO-8859-1 (ISO LATIN1). Los nombres de los nodos son case sensitive.
| Carácter | Reemplazo |
|---|---|
| < | < |
| > | > |
| & | & |
| " | " |
| ' | ' |
Autenticación
POST
/api/login
Obtener token de acceso
Request Body:
JSON
{
"rut": "29282726-1",
"usuario": "demo",
"password": "demo123"
}
Response:
JSON
{
"sistema": "webbasico",
"usuario": "demo",
"token": "webbasico_LB621d9j889b6a23afic7f9c8f9u97w40buahd7f9a9f93f211dbnpvcea413685e35g1243e90ap2ccc4zc31c7f29057"
}
Encabezado del Documento
POST
/api/documento
Emitir documento
Ejemplo JSON completo
JSON
{
"Sistema": {
"nombre": "webbasico",
"rut": "29282726-1",
"usuario": "integrado_webbasico",
"clave": "d2ViYmFzaWNvMjAyMQ=="
},
"Documento": {
"Encabezado": {
"IdDoc": {
"TipoDTE": "33",
"Folio": "0",
"FchEmis": "2024-01-20",
"FchVenc": "2024-01-26"
},
"Emisor": {
"RUTEmisor": "29282726-1",
"RznSocEmisor": "EMPRESA DE PRUEBA",
"GiroEmisor": "DESARROLLO DE SISTEMAS",
"DirOrigen": "Avenida del Software #11001101",
"CmnaOrigen": "PROVIDENCIA",
"CiudadOrigen": "SANTIAGO"
},
"Receptor": {
"RUTRecep": "76399744-8",
"RznSocRecep": "CLIENTE DE PRUEBA",
"CorreoRecep": "prueba@viainfo.cl",
"DirRecep": "CALLE A 50",
"CmnaRecep": "SANTIAGO",
"CiudadRecep": "SANTIAGO"
},
"Totales": {
"MntNeto": "10000",
"MntExe": "0",
"IVA": "1900",
"MntTotal": "11900"
}
},
"Detalle": [
{
"NroLinDet": "1",
"NmbItem": "Producto de ejemplo",
"QtyItem": "1",
"PrcItem": "11900",
"MontoItem": "11900"
}
]
}
}
Parámetros del Encabezado
| Campo | Tipo | Descripción |
|---|---|---|
| TipoDTE | requerido | 33: Factura, 39: Boleta, 52: Guía, 56: ND, 61: NC |
| Folio | opcional | 0 para autoasignación |
| FchEmis | requerido | Formato: YYYY-MM-DD |
| RUTEmisor | requerido | RUT con guión y dígito verificador |
Detalle de Líneas
POST
/api/documento
Estructura del detalle
| Campo | Tipo | Descripción |
|---|---|---|
| NroLinDet | requerido | Número de línea (1-60) |
| NmbItem | requerido | Descripción del producto |
| QtyItem | requerido | Cantidad (hasta 12 dígitos) |
| PrcItem | requerido | Precio unitario |
| MontoItem | requerido | QtyItem * PrcItem |
| IndExe | opcional | 1: Exento, 2: No facturable |
Referencias
POST
/api/documento
Documentos referenciados
JSON
"Referencia": [
{
"NroLinRef": "1",
"TpoDocRef": "33",
"FolioRef": "123",
"FchRef": "2024-01-15",
"CodRef": "3",
"RazonRef": "Corrige Montos"
}
]
Códigos de Referencia
| Código | Descripción |
|---|---|
| 1 | Anula Documento |
| 2 | Corrige Texto |
| 3 | Corrige Montos |
| 4 | Anulación Masiva |
API Emisión
POST
/api/documento
Emitir DTE
Endpoint:
.../Api/Documento
Headers:
Content-Type: application/json
Ejemplo con CURL:
BASH
curl -X POST '.../Api/Documento' \
-H 'Content-Type: application/json' \
-d '{
"Sistema": {
"nombre": "webbasico",
"rut": "29282726-1",
"usuario": "integrado_webbasico",
"clave": "d2ViYmFzaWNvMjAyMQ=="
},
"Documento": {
"Encabezado": {
"IdDoc": {
"TipoDTE": "33",
"Folio": "0",
"FchEmis": "2024-01-20"
},
"Emisor": {
"RUTEmisor": "29282726-1",
"RznSocEmisor": "EMPRESA DE PRUEBA"
},
"Receptor": {
"RUTRecep": "76399744-8",
"RznSocRecep": "CLIENTE DE PRUEBA"
},
"Totales": {
"MntNeto": "10000",
"IVA": "1900",
"MntTotal": "11900"
}
},
"Detalle": [
{
"NroLinDet": "1",
"NmbItem": "Producto de prueba",
"QtyItem": "1",
"PrcItem": "11900",
"MontoItem": "11900"
}
]
}
}'
Boletas de Honorarios
POST
/api/librohonorarios/emision
Emitir BHE
Requiere token Bearer
JSON
{
"sistema": {
"nombre": "webbasico",
"rut": "29282726-1",
"usuario": "demo",
"clave": "demo123"
},
"info": {
"emision": "03-07-2025",
"agente_retenedor": "1"
},
"cliente": {
"rut": "20297815-0",
"razon": "José Robles",
"email": "jose.robles@prueba.cl"
},
"totales": {
"honorarios": "100000",
"impuesto": "14500",
"total": "85500"
}
}
Aceptación/Rechazo
POST
/api/librodecompras/aceptacion
Aceptar o rechazar documento
| Tipo | Código | Descripción |
|---|---|---|
| Aceptación | ACD | Aceptar documento |
| Rechazo Parcial | RFP | Rechazo de mercadería parcial |
| Rechazo Total | RFT | Rechazo de mercadería total |
{
"rut": "77143385-5",
"folio": "9560",
"tipodoc": "33",
"acepta_rechaza": "ACD"
}
Anulación Guías
DELETE
/api/librodespachos/{folio}
Anular guía de despacho
DELETE .../api/librodespachos/14
Authorization: Bearer {token}
{
"code": 200,
"mensaje": "Registro anulado con éxito"
}
Diccionario RCV
GET
/api/rcv
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| detTipoDoc | BigInt | Tipo de documento |
| detRutDoc | BigInt | RUT sin DV |
| detRznSoc | Varchar | Razón social |
| detNroDoc | BigInt | Número de documento |
| detFchDoc | Varchar | Fecha del documento |
| detMntNeto | BigInt | Monto neto |
| detMntExe | BigInt | Monto exento |
| detMntIVA | BigInt | Monto IVA |
| detMntTotal | BigInt | Monto total |
Diccionario Ctas Ctes
GET
/api/conciliacion/cuentas
Objeto de pago
| Campo | Tipo | Descripción |
|---|---|---|
| id | string | ID de sesión |
| amount | integer | Monto del pago |
| currency | string | CLP o MXN |
| status | string | Estado del pago |
| customer_email | string | Email del cliente |
Preguntas Frecuentes
FAQ
/faq/emision
¿Cómo emitir un documento?
Debes enviar un POST al endpoint de emisión con la estructura JSON completa incluyendo Sistema y Documento. Las credenciales van en Base64.
FAQ
/faq/bhe
¿Cómo obtener el token para BHE?
Primero debes hacer login en /api/login con tus credenciales. El token recibido debe enviarse en el header Authorization: Bearer {token}.
FAQ
/faq/referencias
¿Cómo referenciar una orden de compra?
Usa TpoDocRef: "801" para orden de compra y CodRef: "0". Ejemplo:
"Referencia": [{
"NroLinRef": "1",
"TpoDocRef": "801",
"FolioRef": "4505421654",
"FchRef": "2024-01-15",
"CodRef": "0",
"RazonRef": "ORDEN DE COMPRA"
}]