Ir al contenido
SitioCrear cuenta

Comprobantes

Factura de Exportación

Emití Facturas Electrónicas de Exportación (tipo 09) para ventas a compradores del exterior, en moneda extranjera y con partida arancelaria.

La Factura Electrónica de Exportación (document_type: "09", FEE) documenta una venta a un comprador del exterior: mercancías que salen del país o servicios prestados a un cliente no domiciliado.

Campo Regla en la FEE
receiver Obligatorio en la práctica: desde la versión 4.4, Hacienda exige la identificación del receptor
receiver.type 05 (Extranjero No Domiciliado) o 06 (No Contribuyente)
receiver.foreign_address La dirección del comprador en el exterior
receiver.address y receiver.activity_code No se envían: la ubicación en Costa Rica y la actividad del receptor no existen en la FEE
items[].tariff_code Obligatorio para mercancías: la partida arancelaria de 12 dígitos (Hacienda -503). Los servicios no la llevan
items[].tax Al menos un impuesto por línea, sin monto de impuesto
items[].exoneration No se permite
commercial_info.currency Normalmente USD, con exchange_rate. Ver moneda extranjera

Una FEE no cobra IVA: Aster rechaza una FEE cuyo total de impuestos sea mayor que cero. Cada línea igual necesita su bloque de impuesto (el esquema de Hacienda lo exige), y el código de tarifa no puede ser 01, porque Hacienda lo rechaza en exportaciones con el error -101. Usá rate_code: "10" (tarifa exenta) con rate: 0:

tax en una línea de exportación
[
{ "type": "01", "rate_code": "10", "rate": 0 }
]

Cada línea de mercancía lleva tariff_code, la partida del Sistema Arancelario Centroamericano a 12 dígitos. Buscala en el catálogo público:

Terminal
curl "https://aster.astranexo.com/api/v1/reference/tariff-codes?q=llaves+de+ajuste&leaf_only=1"

El CABYS y la partida arancelaria son catálogos distintos: el CABYS clasifica el bien para Hacienda y la partida lo clasifica para aduanas. La línea necesita los dos.

La ferretería vende herramientas a un distribuidor en Panamá, a crédito de 30 días, en dólares.

factura-exportacion.json
{
"document": {
"document_type": "09",
"activity_code": "475201",
"date": "2026-10-08T14:00:00-06:00",
"situation": "1",
"branch": "001",
"terminal": "00001"
},
"commercial_info": {
"currency": "USD",
"exchange_rate": 506.40,
"sale_condition": "02",
"credit_terms": "30",
"payment_method": "04"
},
"issuer": {
"type": "02",
"id": "3101654321",
"name": "Ferretería La Sabana S.A.",
"email": "facturas@ferreterialasabana.cr",
"phone": "22905511",
"address": {
"province": "1",
"canton": "08",
"district": "01",
"details": "Del Más x Menos 200 m sur"
}
},
"receiver": {
"type": "05",
"id": "1557012342019",
"name": "Herrajes del Istmo S.A.",
"email": "compras@herrajesdelistmo.example",
"foreign_address": "Vía España 120, Ciudad de Panamá, Panamá"
},
"items": [
{
"line_number": 1,
"cabys_code": "4292104010100",
"tariff_code": "820412000000",
"quantity": 200,
"unit": "Unid",
"description": "Llave ajustable 10 pulgadas",
"price": 8.50,
"tax": [
{ "type": "01", "rate_code": "10", "rate": 0 }
]
},
{
"line_number": 2,
"cabys_code": "4292104010200",
"tariff_code": "820411000000",
"quantity": 100,
"unit": "Unid",
"description": "Juego de llaves fijas, 8 piezas",
"price": 6.25,
"tax": [
{ "type": "01", "rate_code": "10", "rate": 0 }
]
}
]
}
Línea USD
1. 200 × 8,50 1 700,00
2. 100 × 6,25 625,00
Impuestos 0,00
Total 2 325,00
Terminal
curl https://aster.astranexo.com/api/v1/electronic-documents \
-H "Authorization: Bearer aster_test_8KfQ2mVx3TzL9pRw" \
-H "Content-Type: application/json" \
-H "X-Idempotency-Key: exportacion-po-7781" \
--data @factura-exportacion.json
201 Created
{
"success": true,
"message": "Document submitted for processing.",
"data": {
"id": 352,
"document_key": "50608102600310165432100100001090000000007140926157",
"consecutive_number": "00100001090000000007",
"document_type": "09",
"document_type_name": "Factura Electrónica de Exportación",
"status": "processing",
"environment": "staging",
"queued_at": "2026-10-08T20:00:01Z"
}
}
Situación Código de Hacienda
Mercancía sin tariff_code, o con un formato distinto de 12 dígitos -503
rate_code: "01" en una línea -101
Total de impuestos mayor que cero —
receiver.type distinto de 05 o 06 —
Moneda distinta de colones sin exchange_rate —
exoneration en una línea —

Ver errores.