Exportación WSFEX
Comprobantes de exportación contra el servicio WSFEXV1: factura E y sus notas de crédito y débito. A diferencia de WSFE, acá el detalle de items es obligatorio y no se informa IVA.
El certificado tiene que estar habilitado específicamente para wsfex. Estar autorizado para wsfe no alcanza. Si ves errores de autenticación al consultar los parámetros, es casi siempre esto.
Diferencias con WSFE
| Aspecto | WSFE (mercado interno) | WSFEX (exportación) |
|---|---|---|
| Endpoint de emisión | /api/facturacion/emitir | /api/facturacionexportacion/autorizar |
| Tipos de comprobante | 1, 6, 11… | 19, 20, 21 |
| IVA | Obligatorio según el caso | No se informa |
| Items | Opcional | Obligatorio, al menos uno |
| Moneda | Normalmente PES | Normalmente extranjera |
| Parámetros | POST con body | GET con query string |
Autorizar un comprobante
{
"ambiente": "produccion",
"cuit": "30712345678",
"puntoVenta": 1,
"tipoComprobante": 19,
"fechaComprobante": "2026-08-20",
"tipoExportacion": 1,
"paisDestinoMercaderia": 203,
"cliente": "Importadora Andina Ltda",
"domicilioCliente": "Av. Providencia 1234, Santiago",
"cuitPaisCliente": 50000000016,
"idImpositivo": "76.543.210-K",
"idioma": 1,
"monedaId": "DOL",
"monedaCotizacion": 1385.50,
"importeTotal": 5000.00,
"incoterms": "FOB",
"formaPago": "Transferencia bancaria a 30 dias",
"items": [
{
"codigo": "PROD-001",
"descripcion": "Valvula industrial de bronce 2 pulgadas",
"cantidad": 100,
"unidadMedida": 7,
"precioUnitario": 50.00,
"importeItem": 5000.00,
"codigoNCM": "8481.80.95"
}
]
}
Campos del request
Identificación
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
ambiente | string | No | Por defecto "homologacion". |
cuit | string | No | CUIT del emisor. |
puntoVenta | int | Sí | Rechaza si es <= 0. |
tipoComprobante | int | Sí | Solo se aceptan 19 y 21. Otro valor devuelve 400. |
numeroComprobante | long | No | Si se omite, se toma el siguiente disponible. |
id | long | No | Identificador único de la operación ante AFIP. |
fechaComprobante | date | No | Formato yyyy-MM-dd. |
Exportación y destino
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
tipoExportacion | int | Sí | 1 definitiva para consumo, 2 servicios, 4 otros. |
paisDestinoMercaderia | int | No | Código de país de AFIP. Consultar en países. |
cliente | string | No | Razón social del destinatario. |
domicilioCliente | string | No | Domicilio en el exterior. |
cuitPaisCliente | long | No | CUIT genérico del país del cliente, según la tabla de AFIP. |
idImpositivo | string | No | Identificación fiscal del cliente en su país (RUT, NIT, VAT). |
idioma | int | No | 1 español, 2 inglés, 3 portugués. |
permisoExistente | string | No | Permiso de embarque, si corresponde. |
permisoDestino | int | No | País de destino del permiso. |
Importes y condiciones
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
importeTotal | decimal | Sí | Debe coincidir con la suma de items[].importeItem. Rechaza si es <= 0. |
monedaId | string | No | "DOL" por defecto. |
monedaCotizacion | decimal | Sí | Cotización del día. Consultala con el endpoint de cotización. |
incoterms | string | No | FOB, CIF, EXW, etc. |
incotermsDs | string | No | Detalle secundario del incoterm. |
formaPago | string | No | Texto libre. |
fechaPago | date | No | Fecha comprometida de cobro. |
canMisMonExt | string | No | "S" o "N": si se cancela en la misma moneda extranjera. |
observaciones | string | No | Texto libre. |
observacionesComerciales | string | No | Texto libre. |
Items
Al menos uno. Si items llega vacío, la respuesta es 400.
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
codigo | string | Sí | Código interno del producto. |
descripcion | string | Sí | Descripción del bien o servicio. |
cantidad | decimal | Sí | Unidades exportadas. |
unidadMedida | int | Sí | Código de AFIP. 7 = unidades. |
precioUnitario | decimal | Sí | En la moneda del comprobante. |
importeItem | decimal | Sí | Total de la línea. |
bonificacion | decimal | No | Descuento aplicado. |
codigoNCM | string | No | Nomenclador Común del Mercosur. |
Respuesta
{
"success": true,
"errorMessage": null,
"cae": "76234567890123",
"caeVencimiento": "2026-08-30T00:00:00",
"numeroComprobante": 15,
"puntoVenta": 1,
"tipoComprobante": 19,
"resultado": "A",
"motivoRechazo": null,
"reproceso": "N",
"observaciones": [],
"errores": []
}
Además de los campos habituales, WSFEX devuelve motivoRechazo y reproceso.
Este último indica que AFIP detectó un comprobante equivalente ya autorizado.
Consultar comprobantes
{ "ambiente": "produccion", "cuit": "30712345678", "tipoComprobante": 19, "puntoVenta": 1, "numeroComprobante": 15 }
// Request
{ "ambiente": "produccion", "cuit": "30712345678", "tipoComprobante": 19, "puntoVenta": 1 }
// Respuesta
{ "success": true, "errorMessage": null, "ultimoNumero": 15 }
Tablas de parámetros
A diferencia de WSFE, los parámetros de exportación se consultan con GET y query string.
Todos aceptan ambiente (por defecto homologacion) y cuit.
curl "https://api.tudominio.com/api/facturacionexportacion/parametros/paises?ambiente=produccion&cuit=30712345678" \
-H "X-Api-Token: abc123XYZ..."
| Endpoint | Devuelve |
|---|---|
/parametros/paises | Códigos de país para paisDestinoMercaderia. |
/parametros/cuits-paises | CUIT genérico por país, para cuitPaisCliente. |
/parametros/monedas | Monedas habilitadas para exportación. |
/parametros/unidades-medida | Códigos de unidad de medida de los items. |
/parametros/tipos-exportacion | Valores válidos de tipoExportacion. |
/parametros/tipos-comprobante | Tipos de comprobante de exportación. |
/parametros/puntos-venta | Puntos de venta habilitados para WSFEX. |
Un punto de venta habilitado para facturación interna no sirve para exportación. Se dan de alta por separado en el portal de AFIP.
Cotización
curl "https://api.tudominio.com/api/facturacionexportacion/parametros/cotizacion/DOL?ambiente=produccion&cuit=30712345678&fecha=20260820" \
-H "X-Api-Token: abc123XYZ..."
fecha es estricto
Debe ser exactamente yyyyMMdd, sin guiones: 20260820. Si el formato no parsea, el parámetro se ignora en silencio y AFIP devuelve la cotización del día actual — sin ningún aviso de que tu fecha fue descartada.
Estado del servicio
Llama a FEXDummy y devuelve el estado de los servidores de AFIP para el servicio de exportación.