Factura de Exportación (11)
La Factura de Exportación (tipo 11) documenta ventas de bienes o servicios a clientes fuera del territorio aduanero de El Salvador. Estas operaciones están gravadas con IVA a tasa 0% (exentas con derecho a devolución), por lo que el monto total que paga el cliente coincide con la base sin IVA adicional.
Cuándo usar Exportación
- Venta de bienes que salen físicamente del país.
- Prestación de servicios a clientes domiciliados en el extranjero.
- Operaciones amparadas por tratados de libre comercio vigentes.
Si tu venta es local, usa Factura (01) o CCF (03) según el receptor.
Detalles técnicos
| Método | POST |
| URL | https://ocote.io/api/connect/invoice (mismo endpoint, doc_type: "11") |
| Content-Type | application/json |
| Autenticación | Header Authorization: Bearer odt_... |
Request
El request es estructuralmente idéntico al de Factura (01), con una diferencia:
doc_typedebe ser"11".
El customer es opcional (igual que en Factura 01), pero es muy recomendable incluirlo para que el DTE contenga los datos del comprador extranjero. Usa customer.name y customer.address para identificar al receptor.
Diferencias clave vs Factura 01
| Aspecto | Factura 01 | Exportación 11 |
|---|---|---|
doc_type | "01" | "11" |
| Tasa IVA | 13% | 0% |
unit_price | Con IVA incluido | Sin IVA (no aplica) |
amount_vat del response | Desglosa 13% | 0.00 |
amount_taxable del response | Base sin IVA | Coincide con amount_gross |
El API Connect acepta doc_type: "11" con la misma estructura que Factura 01, pero la normativa MH para exportaciones puede exigir información adicional en el DTE (país de destino, INCOTERM, partidas arancelarias, modo de transporte). Estos campos no están expuestos directamente en el API Connect actual; se aplican valores por defecto de la empresa. Para exportaciones con requisitos complejos, contacta con Ocote antes de operar en producción para validar la configuración de tu empresa.
Response
Idéntico en estructura al de Factura 01. Campos de montos con diferencias:
| Campo | En Exportación 11 |
|---|---|
amount_taxable | Total de la operación (sin IVA). |
amount_vat | 0.00 — la exportación está a tasa 0. |
amount_gross | Igual a amount_taxable. |
amount_retention | 0.00 en la mayoría de casos. |
amount_total | Igual a amount_gross. |
Ejemplo: venta de servicio al exterior
curl -X POST https://ocote.io/api/connect/invoice \
-H "Authorization: Bearer odt_xxx" \
-H "Content-Type: application/json" \
-d '{
"doc_type": "11",
"external_ref": "EXPORT-2026-0001",
"customer": {
"name": "ACME CORPORATION",
"address": "742 Evergreen Terrace, Springfield, USA",
"email": "ap@acme.com"
},
"lines": [
{
"description": "Software development services - March 2026",
"quantity": 1,
"unit_price": 10000.00
}
],
"payment_method": "05",
"transaction_condition": 2,
"deadline": 30
}'
const { data } = await axios.post(
'https://ocote.io/api/connect/invoice',
{
doc_type: '11',
external_ref: 'EXPORT-2026-0001',
customer: {
name: 'ACME CORPORATION',
address: '742 Evergreen Terrace, Springfield, USA',
email: 'ap@acme.com',
},
lines: [
{ description: 'Software development services - March 2026',
quantity: 1, unit_price: 10000.00 },
],
payment_method: '05',
transaction_condition: 2,
deadline: 30,
},
{ headers: { Authorization: `Bearer ${process.env.OCOTE_API_KEY}` } }
);
r = requests.post(
"https://ocote.io/api/connect/invoice",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"doc_type": "11",
"external_ref": "EXPORT-2026-0001",
"customer": {
"name": "ACME CORPORATION",
"address": "742 Evergreen Terrace, Springfield, USA",
"email": "ap@acme.com",
},
"lines": [
{
"description": "Software development services - March 2026",
"quantity": 1,
"unit_price": 10000.00,
},
],
"payment_method": "05",
"transaction_condition": 2,
"deadline": 30,
},
)
Respuesta exitosa
{
"success": true,
"dte_success": true,
"contingency": false,
"rejected": false,
"posted": true,
"is_duplicate": false,
"document_id": "a1b2c3d4-...",
"external_ref": "EXPORT-2026-0001",
"control_number": "DTE-11-M001P001-000000000000015",
"generation_code": "A1B2C3D4-...",
"reception_stamp": "20260421154532...",
"amount_taxable": 10000.00,
"amount_vat": 0.00,
"amount_gross": 10000.00,
"amount_retention": 0.00,
"amount_total": 10000.00,
"ticket_url": "",
"json_url": "https://ocote.io/api/connect/file/a1b2c3d4-.../...?type=json&key=odt_xxx"
}
Observa que amount_vat: 0.00 — la exportación no genera IVA. El total bruto coincide con la base gravable.
Los documentos tipo 11 no generan ticket térmico (igual que CCF); ticket_url siempre viene vacío. Se consulta el DTE vía el JSON firmado o el PDF disponible en la plataforma Ocote.
Errores de validación
Mismos errores generales de /invoice — ver Factura (01) > Errores. Tipo 11 no impone validaciones adicionales a nivel del API.
Si el MH rechaza por falta de datos específicos de exportación (país destino, INCOTERM), el response devolverá rejected: true con observaciones describiendo el campo faltante. En ese caso contacta a Ocote para ajustar la configuración de la empresa.
Ver también
- Factura (01) — estructura base del request.
- CCF (03) — para ventas locales a contribuyentes IVA.
- Sujeto Excluido (14) — para documentar compras a personas no contribuyentes.
- Catálogos MH — códigos de forma de pago y actividad económica.