Emití Documentos Tributarios Electrónicos firmados ante el Ministerio de Hacienda con una sola llamada REST. Una request, un PDF con sello fiscal. Alineado a la Normativa de Cumplimiento DTE v2.0.
Mandás el JSON; nosotros firmamos (JWS RS512) y lo transmitimos al Ministerio de Hacienda. Te devolvemos el sello fiscal y el PDF.
Si el MH está caído, el DTE queda firmado y se retransmite solo dentro de la ventana legal de 72h. No perdés ventas.
Factura, CCF, Notas de Crédito y Débito, Exportación, Retención, Liquidación, Donación y más, con sus eventos (Invalidación, Contingencia, Retorno y Operaciones Especiales), alineados a la Normativa v2.0.
Email (con PDF + Archivo DTE firmado) y WhatsApp opcionales por request. O notificá vos con las URLs firmadas.
Un Consumer emite por varios NIT. Rate limit por Consumer, webhooks de contingencia, ambientes de pruebas y producción.
Spec OpenAPI 3.1 machine-readable y llms.txt. Tu IA (Claude Code, Codex) implementa el cliente en minutos.
Autenticás con Authorization: Bearer tqo_…. Emitís una Factura a consumidor final así:
curl -X POST https://dte-sv.tequio.work/api/dte/factura \
-H "Authorization: Bearer tqo_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"receptor": null,
"items": [
{ "descripcion": "Servicio mensual", "precioUni": 9.99, "tipoItem": 2 }
],
"notify": ["email"]
}'Respuesta:
{
"estado": "PROCESADO",
"codigoGeneracion": "C6D61720-8D93-40CF-B4C1-845764DD7F4A",
"numeroControl": "DTE-01-M001P001-000000000000186",
"selloRecibido": "20262F05FA037B8B461A967C8AD5990F002BHOMY",
"assets": {
"portalUrl": "https://dte-sv.tequio.work/dte/C6D61720-…",
"pdfUrl": "…firmada 30 días…"
}
}¿No querés escribir el cliente a mano? Pegale esto a tu IA: tiene los recursos machine-readable y queda integrado al 100%.
Quiero integrar **dte-sv** (facturación electrónica de El Salvador, Ministerio de Hacienda) a mi sistema. Implementá un cliente completo y robusto.
Recursos (leélos antes de empezar):
- OpenAPI 3.1 (machine-readable): https://dte-sv.tequio.work/openapi.json
- Referencia completa para IA: https://dte-sv.tequio.work/llms-full.txt
- Guía humana: https://dte-sv.tequio.work/developers
Mis credenciales:
- API key: tqo_TU_API_KEY
- Base URL: https://dte-sv.tequio.work
Implementá:
1. Un cliente con auth Bearer (header `Authorization: Bearer tqo_TU_API_KEY`).
2. Emisión de Factura (01) a consumidor final y CCF (03) B2B, con los shapes exactos del OpenAPI.
3. Manejo de los 3 estados de respuesta: PROCESADO (200), PENDIENTE_CONTINGENCIA (422 con estado), RECHAZADO (422). NO reintentar con el mismo codigoGeneracion en RECHAZADO.
4. Manejo de errores HTTP (401, 402 sin suscripción, 422 invalid-payload con `issues`, 429 con `Retry-After`).
5. Tipado fuerte a partir del OpenAPI (generá tipos/cliente con tu herramienta preferida).
6. Tests con el ambiente de pruebas (`"ambiente": "00"`) antes de producción.
7. (Opcional) Emisión con IA: `POST /api/dte/ai` recibe la venta en lenguaje natural
(`{ textos?, audios?, adjuntos?, ambiente, autoEmit? }`: texto, notas de voz, fotos o PDF;
`input` también vale como un solo texto) y devuelve uno o varios documentos en
`documentos[]`, cada uno con `accion` EMITIR/CONFIRMAR/NO_EMITIR, su `statusEmision` y el
DTE emitido o el payload listo. Si llegó a intentar emitir responde 200 o 422, nunca 5xx: no
reintentes el pedido entero, mirá cada documento. Útil como atajo de captura.
Cuenta y emisores: si mi sistema emite en nombre de varios clientes (multi-emisor), leé
la sección "7-bis" de llms-full.txt: el alta de cada emisor NO es por API ni hace falta
pedirle los datos fiscales al cliente; Tequio la hace con su contador y nos entrega el
issuerId. No diseñes un formulario de alta fiscal. Las pruebas que exige Hacienda para
autorizar al emisor también las hace Tequio en el alta. Los DTE de pruebas (00) se cobran.
Usá `externalRef` en TODA emisión (todos los tipos lo aceptan) y, ante timeout o 502,
repetí el mismo POST con el mismo externalRef: nunca duplica. El webhook no va firmado:
usalo solo como aviso y confirmá con GET /api/dte/{codigoGeneracion}. Registralo vos
con PATCH /api/consumer/me { "webhookUrl": "https://..." } (no hace falta pedírnoslo).
Empezá generando el cliente desde https://dte-sv.tequio.work/openapi.json y mostrame un ejemplo de emisión de Factura.| POST | /api/dte/factura | Factura (01), consumidor final |
| POST | /api/dte/ccf | Comprobante de Crédito Fiscal (03), B2B |
| POST | /api/dte/nota-remision | Nota de Remisión (04), traslado de mercadería |
| POST | /api/dte/nota-credito | Nota de Crédito (05) |
| POST | /api/dte/nota-debito | Nota de Débito (06) |
| POST | /api/dte/comprobante-retencion | Comprobante de Retención (07) |
| POST | /api/dte/comprobante-liquidacion | Comprobante de Liquidación (08) |
| POST | /api/dte/documento-contable-liquidacion | Documento Contable de Liquidación (09) |
| POST | /api/dte/factura-exportacion | Factura de Exportación (11) |
| POST | /api/dte/factura-sujeto-excluido | Factura de Sujeto Excluido (14) |
| POST | /api/dte/comprobante-donacion | Comprobante de Donación (15) |
| POST | /api/dte/ai | Emisión con IA: texto, audio o archivos → uno o varios DTE |
| GET | /api/dte/{codGen} | Consultar estado + assets |
| POST | /api/dte/{codGen}/invalidar | Invalidar un DTE |
| POST | /api/dte/{codGen}/retorno | Reportar devolución (B2C) |
| POST | /api/dte/lote | Emisión masiva (hasta 100) |
Schemas exactos, ejemplos por endpoint y "try it" en la referencia interactiva.
Entrá al dashboard para ver tu API key, tus issuerIds y tu archivo .env listo para copiar, con un hand-off a Claude Code ya personalizado con tus credenciales.