Saltar al contenido principal

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étodoPOST
URLhttps://ocote.io/api/connect/invoice (mismo endpoint, doc_type: "11")
Content-Typeapplication/json
AutenticaciónHeader Authorization: Bearer odt_...

Request

El request es estructuralmente idéntico al de Factura (01), con una diferencia:

  • doc_type debe 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

AspectoFactura 01Exportación 11
doc_type"01""11"
Tasa IVA13%0%
unit_priceCon IVA incluidoSin IVA (no aplica)
amount_vat del responseDesglosa 13%0.00
amount_taxable del responseBase sin IVACoincide con amount_gross
Requisitos adicionales del MH para exportación

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:

CampoEn Exportación 11
amount_taxableTotal de la operación (sin IVA).
amount_vat0.00 — la exportación está a tasa 0.
amount_grossIgual a amount_taxable.
amount_retention0.00 en la mayoría de casos.
amount_totalIgual a amount_gross.

Ejemplo: venta de servicio al exterior

curl
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
}'
Node.js (axios)
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}` } }
);
Python (requests)
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