Autenticación Bearer
Cada petición requiere la cabecera estándar HTTP:
Authorization: Bearer TU_API_KEY
Envía un JSON simple y nosotros nos encargamos del esquema XML v1.1.0, firma digital XAdES-BES en memoria, cálculo automático de IVA (soporte PVP incluido y neto), transmisión al SRI y generación del RIDE PDF con latencia de alta concurrencia.
Estructura JSON real de producción. Soporta cálculo dual de precios: productos con PVP incluido y servicios con precio unitario sin IVA.
POST https://api.emite.ec/api/v1/b2b/comprobantes/factura
curl -X POST "https://api.emite.ec/api/v1/b2b/comprobantes/factura" \
-H "Authorization: Bearer TU_API_KEY_AQUI" \
-H "Content-Type: application/json" \
-d '{
"cliente": {
"tipo_identificacion": "07",
"identificacion": "9999999999999",
"razon_social": "CONSUMIDOR FINAL",
"direccion": "Quito",
"email": "consumidorfinal@emite.ec"
},
"detalles": [
{
"codigo_principal": "PVP-001",
"descripcion": "Producto con PVP Incluido IVA (USD 10.00 final)",
"cantidad": 1.0,
"precio_con_iva": 10.00,
"impuesto_porcentaje": "15"
},
{
"codigo_principal": "NET-002",
"descripcion": "Servicio con precio unitario sin IVA",
"cantidad": 1.0,
"precio_unitario": 8.70,
"impuesto_porcentaje": "15"
}
],
"forma_pago": "01",
"establecimiento": "001",
"punto_emision": "001",
"secuencial": "000000001",
"ambiente": 1
}'
import requests
url = "https://api.emite.ec/api/v1/b2b/comprobantes/factura"
headers = {
"Authorization": "Bearer TU_API_KEY_AQUI",
"Content-Type": "application/json"
}
payload = {
"cliente": {
"tipo_identificacion": "07",
"identificacion": "9999999999999",
"razon_social": "CONSUMIDOR FINAL",
"direccion": "Quito",
"email": "consumidorfinal@emite.ec"
},
"detalles": [
{
"codigo_principal": "PVP-001",
"descripcion": "Producto con PVP Incluido IVA (USD 10.00 final)",
"cantidad": 1.0,
"precio_con_iva": 10.00,
"impuesto_porcentaje": "15"
},
{
"codigo_principal": "NET-002",
"descripcion": "Servicio con precio unitario sin IVA",
"cantidad": 1.0,
"precio_unitario": 8.70,
"impuesto_porcentaje": "15"
}
],
"forma_pago": "01",
"establecimiento": "001",
"punto_emision": "001",
"secuencial": "000000001",
"ambiente": 1
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
<?php
$client = new \GuzzleHttp\Client();
$response = $client->post('https://api.emite.ec/api/v1/b2b/comprobantes/factura', [
'headers' => [
'Authorization' => 'Bearer TU_API_KEY_AQUI',
'Content-Type' => 'application/json',
],
'json' => [
'cliente' => [
'tipo_identificacion' => '07',
'identificacion' => '9999999999999',
'razon_social' => 'CONSUMIDOR FINAL',
'direccion' => 'Quito',
'email' => 'consumidorfinal@emite.ec',
],
'detalles' => [
[
'codigo_principal' => 'PVP-001',
'descripcion' => 'Producto con PVP Incluido IVA (USD 10.00 final)',
'cantidad' => 1.0,
'precio_con_iva' => 10.00,
'impuesto_porcentaje' => '15',
],
[
'codigo_principal' => 'NET-002',
'descripcion' => 'Servicio con precio unitario sin IVA',
'cantidad' => 1.0,
'precio_unitario' => 8.70,
'impuesto_porcentaje' => '15',
]
],
'forma_pago' => '01',
'establecimiento' => '001',
'punto_emision' => '001',
'secuencial' => '000000001',
'ambiente' => 1,
]
]);
echo $response->getBody();
const axios = require('axios');
async function emitirFactura() {
const response = await axios.post('https://api.emite.ec/api/v1/b2b/comprobantes/factura', {
cliente: {
tipo_identificacion: '07',
identificacion: '9999999999999',
razon_social: 'CONSUMIDOR FINAL',
direccion: 'Quito',
email: 'consumidorfinal@emite.ec'
},
detalles: [
{
codigo_principal: 'PVP-001',
descripcion: 'Producto con PVP Incluido IVA (USD 10.00 final)',
cantidad: 1.0,
precio_con_iva: 10.00,
impuesto_porcentaje: '15'
},
{
codigo_principal: 'NET-002',
descripcion: 'Servicio con precio unitario sin IVA',
cantidad: 1.0,
precio_unitario: 8.70,
impuesto_porcentaje: '15'
}
],
forma_pago: '01',
establecimiento: '001',
punto_emision: '001',
secuencial: '000000001',
ambiente: 1
}, {
headers: {
'Authorization': 'Bearer TU_API_KEY_AQUI',
'Content-Type': 'application/json'
}
});
console.log(response.data);
}
emitirFactura();
Diseñada bajo principios de menor privilegio y cumplimiento ISO 27001 para resguardar tus operaciones tributarias.
Cada petición requiere la cabecera estándar HTTP:
Authorization: Bearer TU_API_KEY
Controla el entorno directamente desde el payload JSON sin alterar credenciales complejas:
"ambiente": 1
Pruebas SRI / Sandbox gratis
"ambiente": 2
Producción fiscal oficial
Almacena tu clave en variables de entorno .env. Nunca la expongas en repositorios públicos.
En caso de compromiso accidental, revócala inmediatamente desde tu panel para emitir una nueva sin interrupción de servicio.
Mapeo completo de operaciones B2B sobre comprobantes tributarios del SRI:
Construida con FastAPI y Python 3.12 para soportar picos de alta concurrencia con 99.9% de uptime.
Firma criptográfica sin cuellos de botella de disco. Tu archivo .p12 se procesa en memoria RAM con cifrado AES-256 en bóveda aislada con latencias desde 35.86 ms.
No bloquees tus hilos esperando la respuesta del SRI. Suscribe tu endpoint y te notificamos en cuanto el SRI autorice el comprobante con reintentos automáticos.
Prueba sin límites en el ambiente de pruebas del SRI (ambiente: 1) antes de pasar a producción sin necesidad de ingresar tarjetas de crédito.
Resolución de dudas técnicas sobre integración, rendimiento de red y especificación tributaria.
La API utiliza tokens de portador estándar (Authorization: Bearer <TU_API_KEY>) generables al instante desde el panel de control con permisos de lectura y emisión, y capacidad de revocación inmediata.
La API opera con un tiempo mínimo de 35.86 ms, promedio sostenido de 47.29 ms y máximo en régimen de 70.64 ms, alineándose con el benchmark global FinTech de Stripe (30–60 ms) gracias a su arquitectura en memoria.
El JSON de EMITE admite tanto precio_con_iva (ideal para eCommerce B2C y puntos de venta con PVP final) como precio_unitario (base neta sin impuestos para B2B), calculando automáticamente las bases imponibles y el IVA reglamentario del 15% o 5%.
Permite emitir los 6 comprobantes reglamentarios del SRI: Facturas (01), Liquidaciones de compra (03), Notas de crédito (04), Notas de débito (05), Guías de remisión (06) y Comprobantes de retención (07).
EMITE procesa la firma XAdES-BES en memoria en menos de 50 ms y ofrece soporte para Webhooks asíncronos. En lugar de bloquear la petición de tu backend esperando la respuesta de los servidores del SRI, puedes configurar una URL de webhook para recibir la notificación push inmediata de autorización o rechazo.
El certificado debe estar en formato PKCS#12 (.p12 o .pfx). Puedes cargarlo mediante el endpoint de certificados o desde el dashboard de EMITE con cifrado AES-256 en memoria.
La especificación interactiva y schemas JSON completos están disponibles públicamente en developers.emite.ec, donde puedes probar cada endpoint en vivo.
Normalmente responde en unos minutos