Facturas
Envía el cliente, los ítems con su precio sin IVA y la forma de pago. Golem calcula subtotales, IVA y total, asigna el número y la clave de acceso, firma el XML y lo envía al SRI.
Datos de una factura
Una factura necesita como mínimo:
establecimientoypuntoEmision: los códigos de 3 dígitos del punto de emisión (GET /empresalos lista). Si los omites, se usa el punto por defecto del token.cliente: la identificación, la razón social y, para enviarle la factura, el correo.items: el código, la descripción, la cantidad, el precio unitario sin IVA y el IVA de cada ítem.formaPago(una forma por el total) opagos(varias formas).
La tabla de la referencia lista todos los campos. Un campo que no está en ella se rechaza con 400 VALIDACION.
Cliente
- Identificación: cédula (10 dígitos), RUC (13 dígitos), pasaporte o identificación del exterior. Golem valida la cédula y el RUC.
- Tipo de identificación: si omites
tipoIdentificacion, se deduce: 13 dígitos válidos → RUC (04), 10 dígitos válidos → cédula (05),9999999999999→ consumidor final (07). Para pasaportes (06) y documentos del exterior (08) indícalo siempre. - Identificación inválida: sin
tipoIdentificacion, una cédula o un RUC que no son válidos no permiten deducir el tipo y la respuesta es400 VALIDACION, conCAMPO_REQUERIDOencliente.tipoIdentificacion. ContipoIdentificacion04o05, la respuesta es422 IDENTIFICACION_INVALIDAencliente.identificacion. - Datos por comprobante: la razón social, la dirección y el correo de la solicitud se usan en esta factura. Golem no toma ni cambia los datos que otra empresa registró para la misma identificación.
- Correo: si omites
email, se usa el último que tu empresa registró para ese cliente, si existe. En producción, cuando el SRI autoriza la factura, Golem envía al cliente el XML y el RIDE a ese correo.
Consumidor final
Para ventas sin identificar al comprador, envía "identificacion": "9999999999999". La razón social es opcional (se imprime CONSUMIDOR FINAL) y solo se usa el correo que venga en la solicitud.
El SRI limita el valor de una factura a consumidor final: por encima de USD 50.00 la solicitud responde 422 CONSUMIDOR_FINAL_EXCEDE_LIMITE y hay que identificar al comprador. Una factura a consumidor final no admite notas de crédito.
Ítems y productos
codigoidentifica el producto en el catálogo de tu empresa. Si ya existe, se usa ese producto y el catálogo no se modifica. Si no existe, se crea con el código, la descripción, el precio y el IVA de la solicitud (codigoAuxiliarytiposolo se usan al crearlo;tipoesBIENpor defecto).descripciones la que se imprime en el comprobante, aunque el producto del catálogo tenga otra.cantidadadmite hasta 2 decimales yprecioUnitariohasta 4. El precio va sin IVA.descuentoes el valor en dólares de la línea completa, no un porcentaje, y no puede superar cantidad × precio (422 DESCUENTO_INVALIDO).- Si el producto existe con control de inventario y no hay existencias suficientes, la factura no se emite:
422 SIN_STOCK. Los productos que crea el API no llevan control de inventario.
IVA de cada ítem
Indica el IVA con iva (porcentaje) o con codigoIva (código del SRI):
iva | codigoIva | Tarifa |
|---|---|---|
| 15 | 4 | IVA 15 % |
| 5 | 5 | IVA 5 % |
| 13 | 10 | IVA 13 % |
| 8 | 8 | IVA diferenciado |
| 0 | 0 | IVA 0 % |
| — | 6 | No objeto de IVA |
| — | 7 | Exento de IVA |
El porcentaje 0 siempre es la tarifa 0 %: para no objeto o exento usa codigoIva 6 o 7. Las tarifas de 12 % y 14 % ya no están vigentes y responden 422 TARIFA_IVA_NO_VIGENTE en una factura; solo se usan en notas de crédito de facturas de esas fechas. El catálogo tarifas-iva tiene la vigencia de cada código.
Cálculo de totales
Golem calcula la factura con el mismo método que la aplicación, redondeando la mitad hacia arriba:
- Por ítem: cantidad × precio unitario, redondeado a 4 decimales; menos el descuento; redondeado a 2 decimales. Es el subtotal de la línea.
- IVA de la línea: subtotal × tarifa / 100, redondeado a 2 decimales.
- Por tarifa: la base es la suma de los subtotales y el IVA es la suma del IVA de sus líneas.
- Total: suma de subtotales + suma de IVA + propina.
| Ítem | Cálculo | Subtotal | IVA |
|---|---|---|---|
| Mantenimiento mensual, IVA 15 % | 1 × 120.00 − 12.00 | 108.00 | 16.20 |
| Libro técnico, IVA 0 % | 2 × 15.50 | 31.00 | 0.00 |
| Total | 108.00 + 31.00 + 16.20 | 155.20 |
La respuesta trae el desglose en totales: subtotal, descuento, subtotalesIva (base y valor por tarifa), iva, propina y total.
Comparar con tu sistema
Si envías totalEsperado con el total que calculó tu sistema, Golem lo compara con el suyo: si difieren en más de 0.01, la factura no se emite y la respuesta 422 TOTAL_NO_COINCIDE muestra el desglose. Así detectas diferencias de cálculo antes de crear el comprobante.
Precios con IVA incluido
El API recibe el precio unitario sin IVA. Si tu sistema guarda el precio de venta con IVA (PVP), conviértelo:
precioUnitario = PVP ÷ (1 + tarifa / 100), redondeado a 4 decimalesEjemplo con IVA 15 %: un PVP de 1.15 da un precio unitario de 1.0000; 3 unidades suman 3.00 + 0.45 de IVA = 3.45, lo mismo que se cobró.
Como el IVA se redondea por línea, el total puede diferir en 0.01 por línea de lo cobrado. Por ejemplo, un PVP de 1.03 da 0.8957; la línea queda en 0.90 + 0.14 de IVA = 1.04. Para esos casos:
- Envía en
totalEsperadolo cobrado: una diferencia de 0.01 se acepta y una mayor se rechaza antes de emitir. - Con
pagos, la suma puede diferir del total en 0.01. ConformaPago, el pago es el total que calcula Golem.
La emisión con precios con IVA incluido está en la hoja de ruta.
Formas de pago
formaPago: un código del catálogo formas-pago, por el total de la factura. Por ejemplo01(sin utilización del sistema financiero, efectivo) o20(otros con utilización del sistema financiero, como una transferencia).pagos: hasta 10 formas, cada una con sutotaly, si es a plazo,plazoyunidadTiempo(DIAS,MESESoANIOS). Deben sumar el total de la factura con una diferencia de hasta 0.01; si no,422 PAGOS_NO_CUADRAN.
Envía uno de los dos: si faltan ambos o vienen los dos, 400 VALIDACION.
Otros campos
fechaEmision: por defecto hoy; se acepta hoy o ayer (hora de Ecuador). Ver Fecha de emisión desde 2026.referencia: identificador del documento en tu sistema, por ejemplo el número de pedido, hasta 100 caracteres. No se imprime y sirve para buscar la factura.propina: propina o cargo por servicio; se suma al total.guiaRemision: número de la guía de remisión con el formato001-001-000000001.informacionAdicional: hasta 14 campos con nombre y valor que se imprimen en el RIDE. Golem agrega el campo obligatorio “RUC Proveedor”.
Después de emitir
La respuesta es 201 con el estado final o 202 si el SRI no respondió en 12 segundos (ver Estados). Cuando la factura está autorizada, descarga el XML y el RIDE. Para corregir una factura autorizada, emite una nota de crédito.
Emitir una factura
POST /
- Requiere token
- Idempotency-Key
- Espera al SRI hasta 12 s
Crea una factura (código 01) en el punto de emisión indicado, calcula subtotales, IVA y total, asigna el secuencial y la clave de acceso, la firma y la envía al SRI.
establecimientoypuntoEmisionson los códigos de 3 dígitos. Si los omites, se usa el punto por defecto del token.- Envía el precio unitario sin IVA, con hasta 4 decimales, y la cantidad con hasta 2. Si tu sistema maneja precios con IVA incluido, la guía de facturas explica cómo convertirlos. El IVA de cada ítem se indica con
iva(porcentaje) o concodigoIva(código del SRI). Para no objeto de IVA usacodigoIva: "6"y para exento"7". - Indica el pago con
formaPago(una sola forma por el total) o conpagos(varias formas; deben sumar el total). - Si envías
totalEsperado, Golem compara su cálculo con ese valor y rechaza la factura si difieren en más de 0.01. - Si un ítem usa el código de un producto de tu catálogo con control de inventario y no hay existencias, la factura no se emite (
422 SIN_STOCK). - Envía siempre
Idempotency-Key: si la conexión se corta, repite la solicitud con la misma clave.
Límites: 60 solicitudes por minuto por token; 20 emisiones por minuto por token y 40 por empresa.
Parámetros
| Campo | Descripción |
|---|---|
Idempotency-Key cabecera string | Clave única de la operación, generada por tu sistema (se recomienda un UUID v4). Entre 8 y 100 caracteres: letras, números,
|
Prefer cabecera string |
|
X-Request-Id cabecera string | Identificador propio de la solicitud (hasta 64 caracteres: letras, números y
|
Cuerpo de la solicitud
JSON (application/json). Los campos que no están en esta tabla se rechazan con 400 VALIDACION.
| Campo | Descripción |
|---|---|
establecimiento string | Código de 3 dígitos del establecimiento, como en el número del comprobante.
|
puntoEmision string | Código de 3 dígitos del punto de emisión.
|
fechaEmision string (date) | Fecha de emisión (hora de Ecuador). Por defecto, hoy. Solo se acepta la de hoy o la de ayer: el SRI exige transmitir el comprobante al emitirlo. Otra fecha responde |
referencia string | Identificador del documento en tu sistema (por ejemplo, el número de pedido), para buscarlo después. No se imprime ni tiene que ser único.
|
cliente object obligatorio | Comprador. Sus datos se usan en este comprobante: la razón social, la dirección y el correo al que se envía. Golem no toma ni cambia los datos que otra empresa registró para la misma identificación. Si omites el |
cliente. tipoIdentificacion string | Tipo de identificación del SRI (tabla 6): 04 RUC, 05 cédula, 06 pasaporte, 07 consumidor final, 08 identificación del exterior.
|
cliente. identificacion string obligatorio | Cédula (10 dígitos), RUC (13 dígitos), pasaporte o identificación del exterior. Para consumidor final,
|
cliente. razonSocial string | Nombres y apellidos o razón social. Obligatorio salvo para consumidor final.
|
cliente. email string (email) |
|
cliente. direccion string |
|
cliente. telefono string |
|
items object[] obligatorio |
|
items[]. codigo string obligatorio | Código principal del ítem. Si no existe en el catálogo de la empresa, se crea con estos datos.
|
items[]. codigoAuxiliar string |
|
items[]. descripcion string obligatorio | Descripción que se imprime en el comprobante (el catálogo no se modifica).
|
items[]. cantidad number obligatorio | Cantidad, mayor que 0, con hasta 2 decimales (por ejemplo 1.25 kg).
|
items[]. precioUnitario number obligatorio | Precio unitario sin IVA, con hasta 4 decimales. Si tu sistema tiene el precio con IVA incluido (PVP), envía PVP ÷ (1 + tarifa/100) redondeado a 4 decimales y, si quieres comparar con lo cobrado, usa
|
items[]. descuento number | Descuento en dólares de la línea completa, con hasta 2 decimales. No puede superar cantidad × precio.
|
items[]. iva number | Porcentaje de IVA del ítem. Se traduce al código del SRI (15 → 4, 5 → 5, 0 → 0, 13 → 10, 8 → 8; 12 → 2 y 14 → 3 solo en notas de crédito de facturas de esas fechas). Obligatorio si no envías
|
items[]. codigoIva string | Código de porcentaje de IVA del SRI (tabla 17): 0 (0 %), 2 (12 %, hasta el 31-03-2024), 3 (14 %, del 01-06-2016 al 31-05-2017), 4 (15 %, desde el 01-04-2024), 5 (5 %), 6 (no objeto de IVA), 7 (exento de IVA), 8 (IVA diferenciado), 10 (13 %).
|
items[]. tipo string | Tipo del ítem. Solo se usa para crear el producto en el catálogo de la empresa cuando su código no existe.
|
items[]. detallesAdicionales object[] | Hasta 3 detalles adicionales del ítem.
|
items[].detallesAdicionales[]. nombre string obligatorio |
|
items[].detallesAdicionales[]. valor string obligatorio |
|
formaPago string | Una sola forma de pago por el total de la factura. No se combina con
|
pagos object[] | Varias formas de pago. Deben sumar el total de la factura (±0.01). No se combina con
|
pagos[]. formaPago string obligatorio | Forma de pago del SRI (tabla 24): 01 sin utilización del sistema financiero, 15 compensación de deudas, 16 tarjeta de débito, 17 dinero electrónico, 18 tarjeta prepago, 19 tarjeta de crédito, 20 otros con utilización del sistema financiero, 21 endoso de títulos.
|
pagos[]. total number obligatorio | Valor pagado con esta forma, con hasta 2 decimales.
|
pagos[]. plazo integer | Plazo de pago. Requiere
|
pagos[]. unidadTiempo string | Unidad del plazo de pago.
|
propina number | Propina o cargo por servicio, con hasta 2 decimales. Por defecto 0.
|
guiaRemision string | Número del comprobante con establecimiento, punto de emisión y secuencial.
|
informacionAdicional object[] | Hasta 14 campos. Golem agrega el campo obligatorio "RUC Proveedor".
|
informacionAdicional[]. nombre string obligatorio |
|
informacionAdicional[]. valor string obligatorio |
|
totalEsperado number | Total que calculó tu sistema. Si difiere en más de 0.01 del cálculo de Golem, la factura no se emite (
|
Ejemplo de solicitud
Los ejemplos leen el token de la variable de entorno GOLEM_TOKEN. Usa una clave nueva por cada comprobante en Idempotency-Key: la del ejemplo de curl es solo una muestra. Si repites la solicitud después de un corte de conexión, usa la misma clave.
# Usa una clave nueva por cada comprobante en Idempotency-Key (por ejemplo, un UUID v4).
curl -X POST https://api.golem.ec/v1/comprobantes/facturas \
--max-time 30 \
-H "Authorization: Bearer $GOLEM_TOKEN" \
-H "Idempotency-Key: f57ae464-4a05-49b1-bf73-e18ca8e85f8e" \
-H "Content-Type: application/json" \
-d '{
"establecimiento": "001",
"puntoEmision": "001",
"cliente": {
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]"
},
"items": [
{
"codigo": "P-001",
"descripcion": "Producto de ejemplo",
"cantidad": 10,
"precioUnitario": 7.8,
"iva": 15
}
],
"formaPago": "20"
}' import { randomUUID } from 'node:crypto';
const respuesta = await fetch('https://api.golem.ec/v1/comprobantes/facturas', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GOLEM_TOKEN}`,
'Idempotency-Key': randomUUID(), // una clave nueva por cada comprobante; guárdala para repetir la solicitud si la conexión se corta
'Content-Type': 'application/json',
},
body: JSON.stringify({
establecimiento: '001',
puntoEmision: '001',
cliente: {
identificacion: '0990000000001',
razonSocial: 'CLIENTE DEMO S.A.',
email: '[email protected]',
},
items: [
{
codigo: 'P-001',
descripcion: 'Producto de ejemplo',
cantidad: 10,
precioUnitario: 7.8,
iva: 15,
},
],
formaPago: '20',
}),
signal: AbortSignal.timeout(30000),
});
const datos = await respuesta.json();
console.log(respuesta.status, datos); import os
import uuid
import requests
respuesta = requests.post(
"https://api.golem.ec/v1/comprobantes/facturas",
headers={
"Authorization": f"Bearer {os.environ['GOLEM_TOKEN']}",
"Idempotency-Key": str(uuid.uuid4()), # una clave nueva por cada comprobante; guárdala para repetir la solicitud si la conexión se corta
},
json={
"establecimiento": "001",
"puntoEmision": "001",
"cliente": {
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]",
},
"items": [
{
"codigo": "P-001",
"descripcion": "Producto de ejemplo",
"cantidad": 10,
"precioUnitario": 7.8,
"iva": 15,
},
],
"formaPago": "20",
},
timeout=30,
)
print(respuesta.status_code, respuesta.json()) <?php
// composer require guzzlehttp/guzzle ramsey/uuid
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use Ramsey\Uuid\Uuid;
$cliente = new Client(['base_uri' => 'https://api.golem.ec/v1/', 'timeout' => 30]);
$respuesta = $cliente->post('comprobantes/facturas', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('GOLEM_TOKEN'),
'Idempotency-Key' => Uuid::uuid4()->toString(), // una clave nueva por cada comprobante; guárdala para repetir la solicitud si la conexión se corta
],
'json' => [
'establecimiento' => '001',
'puntoEmision' => '001',
'cliente' => [
'identificacion' => '0990000000001',
'razonSocial' => 'CLIENTE DEMO S.A.',
'email' => '[email protected]',
],
'items' => [
[
'codigo' => 'P-001',
'descripcion' => 'Producto de ejemplo',
'cantidad' => 10,
'precioUnitario' => 7.8,
'iva' => 15,
],
],
'formaPago' => '20',
],
'http_errors' => false,
]);
echo $respuesta->getStatusCode(), PHP_EOL, $respuesta->getBody(), PHP_EOL; Respuestas
201 application/json
Comprobante creado y procesado hasta un estado final: AUTORIZADO, NO_AUTORIZADO, DEVUELTO o ERROR. En los tres últimos el crédito vuelve al saldo y los motivos están en mensajes.
Esquema Comprobante.
{
"tipo": "FACTURA",
"codDoc": "01",
"claveAcceso": "2409202601179000000000120010010000001481234567815",
"numero": "001-001-000000148",
"estado": "AUTORIZADO",
"ambiente": "PRODUCCION",
"fechaEmision": "2026-09-24",
"fechaEnvio": "2026-09-24T10:42:28-05:00",
"fechaAutorizacion": "2026-09-24T10:42:31-05:00",
"numeroAutorizacion": "2409202601179000000000120010010000001481234567815",
"fechaActualizacion": "2026-09-24T10:42:33.512-05:00",
"establecimiento": "001",
"puntoEmision": "001",
"referencia": null,
"origen": "API",
"total": 89.7,
"cliente": {
"tipoIdentificacion": "04",
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]",
"direccion": null,
"telefono": null
},
"items": [
{
"codigo": "P-001",
"codigoAuxiliar": null,
"descripcion": "Producto de ejemplo",
"cantidad": 10,
"precioUnitario": 7.8,
"descuento": 0,
"subtotal": 78,
"codigoIva": "4",
"tarifaIva": 15,
"valorIva": 11.7,
"detallesAdicionales": []
}
],
"pagos": [
{
"formaPago": "20",
"total": 89.7,
"plazo": null,
"unidadTiempo": null
}
],
"guiaRemision": null,
"totales": {
"subtotal": 78,
"descuento": 0,
"subtotalesIva": [
{
"codigoIva": "4",
"tarifa": 15,
"baseImponible": 78,
"valor": 11.7
}
],
"iva": 11.7,
"propina": 0,
"total": 89.7
},
"mensajes": [],
"anulacion": null,
"informacionAdicional": [
{
"nombre": "RUC Proveedor",
"valor": "0195113076001"
}
],
"enlaces": {
"self": "https://api.golem.ec/v1/comprobantes/2409202601179000000000120010010000001481234567815",
"pdf": "https://api.golem.ec/v1/comprobantes/2409202601179000000000120010010000001481234567815/pdf",
"xml": "https://api.golem.ec/v1/comprobantes/2409202601179000000000120010010000001481234567815/xml"
}
} Más ejemplos de la respuesta 201
{
"tipo": "FACTURA",
"codDoc": "01",
"claveAcceso": "2609202601179000000000120010010000001501122334419",
"numero": "001-001-000000150",
"estado": "DEVUELTO",
"ambiente": "PRODUCCION",
"fechaEmision": "2026-09-26",
"fechaEnvio": "2026-09-26T09:20:11-05:00",
"fechaAutorizacion": null,
"numeroAutorizacion": null,
"fechaActualizacion": "2026-09-26T09:20:12.845-05:00",
"establecimiento": "001",
"puntoEmision": "001",
"referencia": "PED-2026-00483",
"origen": "API",
"total": 11.5,
"cliente": {
"tipoIdentificacion": "04",
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]",
"direccion": null,
"telefono": null
},
"items": [
{
"codigo": "P-002",
"codigoAuxiliar": null,
"descripcion": "Servicio de ejemplo",
"cantidad": 1,
"precioUnitario": 10,
"descuento": 0,
"subtotal": 10,
"codigoIva": "4",
"tarifaIva": 15,
"valorIva": 1.5,
"detallesAdicionales": []
}
],
"pagos": [
{
"formaPago": "20",
"total": 11.5,
"plazo": null,
"unidadTiempo": null
}
],
"guiaRemision": null,
"totales": {
"subtotal": 10,
"descuento": 0,
"subtotalesIva": [
{
"codigoIva": "4",
"tarifa": 15,
"baseImponible": 10,
"valor": 1.5
}
],
"iva": 1.5,
"propina": 0,
"total": 11.5
},
"mensajes": [
{
"origen": "SRI",
"identificador": "56",
"mensaje": "ESTABLECIMIENTO CERRADO",
"informacionAdicional": "El establecimiento 001 del RUC 1790000000001 está cerrado en el catastro.",
"tipo": "ERROR"
}
],
"anulacion": null,
"informacionAdicional": [],
"enlaces": {
"self": "https://api.golem.ec/v1/comprobantes/2609202601179000000000120010010000001501122334419",
"pdf": null,
"xml": null
}
} {
"tipo": "NOTA_CREDITO",
"codDoc": "04",
"claveAcceso": "2609202604179000000000120010010000000095550123411",
"numero": "001-001-000000009",
"estado": "AUTORIZADO",
"ambiente": "PRODUCCION",
"fechaEmision": "2026-09-26",
"fechaEnvio": "2026-09-26T11:02:40-05:00",
"fechaAutorizacion": "2026-09-26T11:02:43-05:00",
"numeroAutorizacion": "2609202604179000000000120010010000000095550123411",
"fechaActualizacion": "2026-09-26T11:02:44.087-05:00",
"establecimiento": "001",
"puntoEmision": "001",
"referencia": "DEV-2026-0012",
"origen": "API",
"total": 17.94,
"cliente": {
"tipoIdentificacion": "04",
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]",
"direccion": null,
"telefono": null
},
"documentoModificado": {
"codDoc": "01",
"numero": "001-001-000000148",
"fechaEmision": "2026-09-24",
"claveAcceso": "2409202601179000000000120010010000001481234567815"
},
"motivo": "Devolución de 2 unidades",
"items": [
{
"codigo": "P-001",
"codigoAuxiliar": null,
"descripcion": "Producto de ejemplo",
"cantidad": 2,
"precioUnitario": 7.8,
"descuento": 0,
"subtotal": 15.6,
"codigoIva": "4",
"tarifaIva": 15,
"valorIva": 2.34,
"detallesAdicionales": []
}
],
"totales": {
"subtotal": 15.6,
"descuento": 0,
"subtotalesIva": [
{
"codigoIva": "4",
"tarifa": 15,
"baseImponible": 15.6,
"valor": 2.34
}
],
"iva": 2.34,
"total": 17.94
},
"mensajes": [],
"anulacion": null,
"informacionAdicional": [
{
"nombre": "RUC Proveedor",
"valor": "0195113076001"
}
],
"enlaces": {
"self": "https://api.golem.ec/v1/comprobantes/2609202604179000000000120010010000000095550123411",
"pdf": "https://api.golem.ec/v1/comprobantes/2609202604179000000000120010010000000095550123411/pdf",
"xml": "https://api.golem.ec/v1/comprobantes/2609202604179000000000120010010000000095550123411/xml"
}
} {
"tipo": "RETENCION",
"codDoc": "07",
"claveAcceso": "2609202607179000000000120010010000000223141592611",
"numero": "001-001-000000022",
"estado": "AUTORIZADO",
"ambiente": "PRODUCCION",
"fechaEmision": "2026-09-26",
"fechaEnvio": "2026-09-26T12:10:05-05:00",
"fechaAutorizacion": "2026-09-26T12:10:08-05:00",
"numeroAutorizacion": "2609202607179000000000120010010000000223141592611",
"fechaActualizacion": "2026-09-26T12:10:09.301-05:00",
"establecimiento": "001",
"puntoEmision": "001",
"referencia": "CXP-2026-0931",
"origen": "API",
"total": 62.5,
"sujetoRetenido": {
"tipoIdentificacion": "04",
"identificacion": "0990000000001",
"razonSocial": "PROVEEDOR DEMO S.A.",
"email": "[email protected]",
"direccion": null,
"telefono": null
},
"periodoFiscal": "2026-09",
"documentoSustento": {
"codDoc": "01",
"numero": "002-001-000004521",
"fechaEmision": "2026-09-22",
"claveAcceso": null
},
"retenciones": [
{
"codigoImpuesto": "1",
"codigoRetencion": "312",
"baseImponible": 1000,
"porcentaje": 1.75,
"valorRetenido": 17.5
},
{
"codigoImpuesto": "2",
"codigoRetencion": "1",
"baseImponible": 150,
"porcentaje": 30,
"valorRetenido": 45
}
],
"mensajes": [],
"anulacion": null,
"informacionAdicional": [
{
"nombre": "RUC Proveedor",
"valor": "0195113076001"
}
],
"enlaces": {
"self": "https://api.golem.ec/v1/comprobantes/2609202607179000000000120010010000000223141592611",
"pdf": "https://api.golem.ec/v1/comprobantes/2609202607179000000000120010010000000223141592611/pdf",
"xml": "https://api.golem.ec/v1/comprobantes/2609202607179000000000120010010000000223141592611/xml"
}
} 202 application/json
Comprobante creado; el SRI aún no responde. Estado EN_PROCESO. Consulta Location más tarde (por ejemplo a los 5, 15 y 60 segundos). Golem reintenta el envío y la autorización por su cuenta.
Esquema Comprobante.
{
"tipo": "FACTURA",
"codDoc": "01",
"claveAcceso": "2609202601179000000000120010010000001498765432115",
"numero": "001-001-000000149",
"estado": "EN_PROCESO",
"ambiente": "PRODUCCION",
"fechaEmision": "2026-09-26",
"fechaEnvio": "2026-09-26T09:15:04-05:00",
"fechaAutorizacion": null,
"numeroAutorizacion": null,
"fechaActualizacion": "2026-09-26T09:15:04.120-05:00",
"establecimiento": "001",
"puntoEmision": "001",
"referencia": "PED-2026-00482",
"origen": "API",
"total": 89.7,
"cliente": {
"tipoIdentificacion": "04",
"identificacion": "0990000000001",
"razonSocial": "CLIENTE DEMO S.A.",
"email": "[email protected]",
"direccion": null,
"telefono": null
},
"items": [
{
"codigo": "P-001",
"codigoAuxiliar": null,
"descripcion": "Producto de ejemplo",
"cantidad": 10,
"precioUnitario": 7.8,
"descuento": 0,
"subtotal": 78,
"codigoIva": "4",
"tarifaIva": 15,
"valorIva": 11.7,
"detallesAdicionales": []
}
],
"pagos": [
{
"formaPago": "20",
"total": 89.7,
"plazo": null,
"unidadTiempo": null
}
],
"guiaRemision": null,
"totales": {
"subtotal": 78,
"descuento": 0,
"subtotalesIva": [
{
"codigoIva": "4",
"tarifa": 15,
"baseImponible": 78,
"valor": 11.7
}
],
"iva": 11.7,
"propina": 0,
"total": 89.7
},
"mensajes": [],
"anulacion": null,
"informacionAdicional": [],
"enlaces": {
"self": "https://api.golem.ec/v1/comprobantes/2609202601179000000000120010010000001498765432115",
"pdf": null,
"xml": null
}
} Errores: HTTP 400, 401, 402, 403, 409, 413, 415, 422, 429, 500, 503
| HTTP | Código | Causa y solución |
|---|---|---|
| 400 | JSON_INVALIDO | El cuerpo no es un JSON válido. Revisa la sintaxis cerca de la línea y la columna que indica el mensaje. |
| 400 | VALIDACION | Uno o más campos no cumplen el formato. Corrige los campos de |
| 400 | PARAMETRO_INVALIDO | Un parámetro de la ruta o de la consulta no es válido: por ejemplo, una clave de acceso sin 49 dígitos, un rango de fechas de más de 366 días o un Corrige el parámetro que indica |
| 400 | IDEMPOTENCY_KEY_INVALIDA | La cabecera Genera la clave con un UUID v4. |
| 400 | TOKEN_EN_URL | La URL incluye Envía el token solo en la cabecera |
| 401 | TOKEN_REQUERIDO | Falta la cabecera Envía |
| 401 | TOKEN_INVALIDO | El token no existe o no tiene el formato de un token de Golem. Copia el token completo, con su prefijo. Si no lo tienes, crea otro: Golem no puede mostrarlo de nuevo. |
| 401 | TOKEN_REVOCADO | El token fue revocado. Crea otro en Cuenta > API e integraciones. |
| 402 | SIN_CREDITOS | La empresa no tiene créditos para emitir o reprocesar. Compra una recarga en la aplicación. Las consultas y descargas siguen disponibles. |
| 403 | EMPRESA_SUSPENDIDA | La empresa no está activa. Afecta a las emisiones y las acciones; las consultas siguen disponibles. Escribe a [email protected]. |
| 403 | PUNTO_NO_PERMITIDO | El token no puede emitir en ese punto de emisión, o está restringido y no tiene puntos. Usa uno de los puntos que devuelve |
| 403 | PLAN_NO_PERMITE | El plan de la empresa no incluye la emisión de comprobantes electrónicos. Revisa el plan en la aplicación o escribe a [email protected]. |
| 409 | IDEMPOTENCIA_CUERPO_DISTINTO | La Usa una clave nueva para cada operación distinta y la misma clave solo para repetir la misma solicitud. |
| 409 | IDEMPOTENCIA_EN_PROCESO | La solicitud original con esa Repite la solicitud después de los segundos de |
| 413 | CUERPO_DEMASIADO_GRANDE | El cuerpo supera 256 KB. Reduce el comprobante: admite hasta 200 ítems. |
| 415 | TIPO_CONTENIDO_NO_SOPORTADO | Una emisión llegó sin Envía el cuerpo como JSON con esa cabecera. |
| 422 | PUNTO_EMISION_NO_EXISTE | El establecimiento o el punto de emisión que indica la solicitud no existe en la empresa. Usa los códigos que devuelve |
| 422 | IDENTIFICACION_INVALIDA | La cédula o el RUC no son válidos para el Corrige la identificación. Para pasaportes y documentos del exterior, indica |
| 422 | TARIFA_IVA_NO_VIGENTE | La tarifa de IVA no está vigente en la fecha del comprobante (en notas de crédito, en la fecha de la factura modificada). Usa una tarifa del catálogo |
| 422 | TARIFA_IVA_NO_COINCIDE | En una nota de crédito sobre una factura de Golem, un ítem usa una tarifa de IVA que la factura no tiene. Usa en cada ítem una de las tarifas de la factura modificada. |
| 422 | PAGOS_NO_CUADRAN | La suma de Ajusta los pagos al total calculado, o usa |
| 422 | TOTAL_NO_COINCIDE | El total que calcula Golem difiere de Compara el cálculo de tu sistema con el de la guía de facturas; con precios con IVA incluido, revisa la conversión. |
| 422 | DESCUENTO_INVALIDO | El descuento de una línea supera la cantidad por el precio unitario. Envía el descuento en dólares de la línea completa, sin superar su valor. |
| 422 | CONSUMIDOR_FINAL_EXCEDE_LIMITE | Una factura a consumidor final supera el tope que permite el SRI. Identifica al comprador con su cédula, RUC o pasaporte. |
| 422 | FECHA_FUERA_DE_RANGO | La fecha de emisión no es la de hoy ni la de ayer (hora de Ecuador), o es anterior a la del documento modificado o sustento. Omite |
| 422 | FIRMA_NO_VIGENTE | La empresa no tiene firma electrónica o la firma venció. Carga una firma vigente en la aplicación. |
| 422 | SIN_STOCK | Un ítem usa un producto con control de inventario sin existencias suficientes. Registra el ingreso en la aplicación o quita el control de inventario del producto. |
| 422 | SUSTENTO_NO_ENCONTRADO | La factura que modifica la nota de crédito no existe en la empresa y el ambiente del token. Revisa la clave de acceso. Si la factura se emitió fuera de Golem, envía |
| 422 | SUSTENTO_NO_AUTORIZADO | La factura que modifica la nota de crédito no está autorizada. Emite la nota de crédito cuando la factura esté autorizada. |
| 422 | NOTA_CREDITO_EXCEDE_SALDO | La nota de crédito, sumada a las anteriores de la misma factura, supera el total de la factura. Reduce el valor de la nota de crédito al saldo de la factura. |
| 422 | CLIENTE_NO_COINCIDE | La identificación de Omite |
| 422 | CLIENTE_NO_PERMITIDO | Una nota de crédito a consumidor final, o sobre una factura emitida a consumidor final. El SRI exige un receptor identificado en las notas de crédito. |
| 422 | CODIGO_RETENCION_INVALIDO | El código de retención no existe o no está vigente para ese impuesto. Usa un código de los catálogos |
| 422 | PORCENTAJE_RETENCION_INVALIDO | Falta Envía |
| 422 | SIN_CORREO | El comprobante no tiene un correo de destino. El correo se toma del comprobante al emitirlo; en ese caso, envía el XML y el RIDE por tu cuenta. |
| 429 | LIMITE_EXCEDIDO | Se superó un límite de solicitudes por minuto. Repite la solicitud después de los segundos de |
| 500 | ERROR_INTERNO | Error inesperado de Golem. Si ocurrió al emitir, repite la solicitud con la misma |
| 503 | SRI_NO_DISPONIBLE | El SRI no responde. Repite la solicitud después de los segundos de |
| 503 | SERVICIO_NO_DISPONIBLE | Un servicio interno de Golem no responde. Repite la solicitud después de los segundos de |
| 503 | MANTENIMIENTO | Golem está en mantenimiento. Los mantenimientos se avisan por correo con 24 horas de anticipación. Repite la solicitud después de los segundos de |
Formato y lista completa en Errores.
Más ejemplos de solicitud
Otros cuerpos válidos de la especificación: una factura con descuento, dos tarifas de IVA, dos pagos y referencia, y una factura a consumidor final.
{
"establecimiento": "001",
"puntoEmision": "001",
"referencia": "PED-2026-00481",
"cliente": {
"tipoIdentificacion": "05",
"identificacion": "1700000001",
"razonSocial": "PERSONA DEMO",
"email": "[email protected]",
"direccion": "Av. Amazonas N24-03, Quito",
"telefono": "022000000"
},
"items": [
{
"codigo": "SERV-01",
"descripcion": "Mantenimiento mensual",
"cantidad": 1,
"precioUnitario": 120,
"descuento": 12,
"iva": 15,
"tipo": "SERVICIO"
},
{
"codigo": "LIB-07",
"descripcion": "Libro técnico",
"cantidad": 2,
"precioUnitario": 15.5,
"codigoIva": "0",
"detallesAdicionales": [
{
"nombre": "Edición",
"valor": "2026"
}
]
}
],
"pagos": [
{
"formaPago": "19",
"total": 100
},
{
"formaPago": "20",
"total": 55.2,
"plazo": 30,
"unidadTiempo": "DIAS"
}
],
"informacionAdicional": [
{
"nombre": "Pedido",
"valor": "PED-2026-00481"
}
],
"totalEsperado": 155.2
} {
"cliente": {
"identificacion": "9999999999999"
},
"items": [
{
"codigo": "CAFE-01",
"descripcion": "Café de especialidad 250 g",
"cantidad": 1,
"precioUnitario": 8.5,
"iva": 15
}
],
"formaPago": "01"
}