Billing Report
Devuelve el desglose de aranceles e impuestos de un manifiesto courier ya procesado. La estructura sigue el layout Destinación Simplificada de Importación (15 columnas) que usan los despachantes argentinos para conciliar derechos, IVA y tasa estadística por guía aérea (AWB).
Toda la respuesta viene en ARS, ya convertida desde los valores internos en USD
usando el exchange_rate enviado en la request. No volver a multiplicar en el cliente.
El endpoint
Devuelve el reporte de billing de un manifiesto como JSON. La respuesta usa el
sobre estándar { success, data } del resto de la API.
Path parameters
- Name
manifest- Type
- string
- Description
Número de manifiesto. Ejemplo
045-16286642.
Query parameters
- Name
exchange_rate- Type
- number
- Description
ARS por USD aplicado a todas las columnas monetarias. Rango
0.0001..99999.99. El despachante envía este valor porque la aduana argentina aplica el tipo de cambio oficial del día en que se presenta cada declaración.
- Name
regime_type- Type
- enum
- Description
Régimen aplicado a la columna
derechos_ars. Uno demixed(default),commercial,personal. Ver tabla de regímenes abajo.
Selección de régimen
regime_type | Qué proyecta en derechos_ars |
|---|---|
mixed (default) | Derecho de importación base almacenado al momento del cálculo. |
commercial | Derecho del Régimen General de Importación. |
personal | Derecho del Régimen Simplificado / Courier. |
Solo cambia la columna Derechos (ARS) entre regímenes. IVA, tasa estadística e impuesto interno son idénticos en los tres.
Request
curl -G "https://app.price2b.com/api/v1/couriers/manifests/045-16286642/billing-report" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
--data-urlencode "exchange_rate=1500.00" \
--data-urlencode "regime_type=mixed"
Response
{
"success": true,
"data": {
"manifest_id": "045-16286642",
"regime_type": "mixed",
"exchange_rate": 1500.00,
"currency": "ARS",
"generated_at": "2026-05-10T12:34:56-03:00",
"rows": [
{
"fecha": "2026-04-15",
"master": "071-57898304",
"guia_hija": "AWB12345",
"consignatario": "JUAN PEREZ",
"peso_kg": 2.50,
"bultos": 1,
"fob_ars": 45000.00,
"derechos_ars": 5400.00,
"iva_ars": 9450.00,
"tasa_estadistica_ars": 0.00,
"impuesto_interno_ars": 0.00,
"antidumping_ars": 0.00,
"impuesto_ley_ars": 0.00,
"cambio_aduana": 1500.00,
"posicion_ncm": "8517.13.00.000W"
}
],
"summary": {
"rows_count": 141,
"exchange_rate": 1500.00,
"total_fob_ars": 6345000.00,
"total_derechos_ars": 761400.00,
"total_iva_ars": 1332450.00,
"total_tasa_estadistica_ars": 0.00,
"total_impuesto_interno_ars": 0.00,
"total_antidumping_ars": 0.00,
"total_impuesto_ley_ars": 0.00,
"total_taxes_ars": 2093850.00
}
}
}
El objeto data.rows[] — 15 columnas
Cada fila representa un ítem del manifiesto. El orden es por Master (MAWB) y luego
por House guide (AWB). Todos los campos *_ars ya vienen multiplicados por el
exchange_rate de la request.
- Name
fecha- Type
- string | null
- Description
Fecha de creación del ítem en formato ISO
YYYY-MM-DD.
- Name
master- Type
- string
- Description
Número de Master AWB. String para preservar ceros a la izquierda.
- Name
guia_hija- Type
- string
- Description
Número de House AWB.
- Name
consignatario- Type
- string
- Description
Nombre del consignatario tal como fue declarado.
- Name
peso_kg- Type
- number
- Description
Peso neto en kilogramos, redondeado a 2 decimales.
- Name
bultos- Type
- integer
- Description
Cantidad de bultos.
- Name
fob_ars- Type
- number
- Description
Valor FOB en ARS.
- Name
derechos_ars- Type
- number
- Description
Derechos de importación en ARS. La cifra depende de
regime_type.
- Name
iva_ars- Type
- number
- Description
IVA en ARS.
- Name
tasa_estadistica_ars- Type
- number
- Description
Tasa estadística en ARS.
- Name
impuesto_interno_ars- Type
- number
- Description
Impuesto interno en ARS.
- Name
antidumping_ars- Type
- number
- Description
Derecho antidumping en ARS. Siempre
0.00en esta versión de la API.
- Name
impuesto_ley_ars- Type
- number
- Description
Impuesto de ley en ARS. Siempre
0.00en esta versión de la API.
- Name
cambio_aduana- Type
- number
- Description
Tipo de cambio (ARS/USD) usado para esta fila. Hace eco del
exchange_rate.
- Name
posicion_ncm- Type
- string
- Description
Posición arancelaria usada para el cálculo (código NCM/HTS).
antidumping_ars e impuesto_ley_ars son campos estables reservados para uso
futuro. Hoy siempre devuelven 0.00. Cuando se empiecen a calcular, los valores
llegarán por el mismo campo sin cambios de contrato — diseñá la integración para
aceptar valores > 0.00 ahí.
El objeto data.summary — totales
- Name
rows_count- Type
- integer
- Description
Cantidad de filas en
data.rows.
- Name
exchange_rate- Type
- number
- Description
Tipo de cambio (ARS/USD) hecho eco desde la request.
- Name
total_fob_ars- Type
- number
- Description
Suma de
fob_ars.
- Name
total_derechos_ars- Type
- number
- Description
Suma de
derechos_ars.
- Name
total_iva_ars- Type
- number
- Description
Suma de
iva_ars.
- Name
total_tasa_estadistica_ars- Type
- number
- Description
Suma de
tasa_estadistica_ars.
- Name
total_impuesto_interno_ars- Type
- number
- Description
Suma de
impuesto_interno_ars.
- Name
total_antidumping_ars- Type
- number
- Description
Suma de
antidumping_ars.
- Name
total_impuesto_ley_ars- Type
- number
- Description
Suma de
impuesto_ley_ars.
- Name
total_taxes_ars- Type
- number
- Description
Suma de todas las columnas de impuestos:
derechos_ars + iva_ars + tasa_estadistica_ars + impuesto_interno_ars + antidumping_ars + impuesto_ley_ars.
Errores
401 Unauthorized — token faltante o inválido
404 Not Found — manifiesto no encontrado o no accesible
Devuelve 404 en lugar de 403 intencionalmente, para no filtrar la existencia de manifiestos entre cuentas.
422 Unprocessable Entity — falló validación
Causas comunes:
exchange_ratefaltante, no numérico,≤ 0o> 99999.99.regime_typefuera del enummixed | commercial | personal.
401 Unauthorized
{ "message": "Unauthenticated." }
404 Not Found
{
"success": false,
"error": "manifest_not_found",
"message": "El manifiesto solicitado no existe o no pertenece a su cuenta.",
"manifest_number": "045-16286642"
}
422 Validation failed
{
"success": false,
"message": "Validation failed",
"errors": {
"exchange_rate": [
"exchange_rate is required (ARS per USD applied by customs)."
]
}
}
Tips de integración
- Currency: cada campo
*_arsya está multiplicado porexchange_rate. No multiplicar de nuevo en el cliente. - Exchange rate: el valor que envías se usa para toda la respuesta. La aduana argentina aplica el tipo de cambio oficial del día de presentación, así que típicamente se pasa el del día de la conciliación.
- Antidumping / Impuesto ley: siempre
0.00en esta versión. Tratarlos como campos estables que pueden empezar a devolver valores> 0en el futuro sin cambios de contrato. - Ordering: las filas vienen ordenadas por Master AWB y luego por House AWB. No hay garantía de orden alfabético por consignatario o NCM.
- Account scoping: un manifiesto de otra cuenta devuelve
404 manifest_not_found, no403. No usar404como señal de que el manifiesto no existe en ningún lado — solo que no es accesible con el token actual. - Manifests en proceso: si se consulta un manifiesto mientras los cálculos de aduana todavía están corriendo, los ítems sin cálculo se devuelven con
0.00en las columnas de impuestos yfob_arsbasado en el valor declarado. Volver a consultar después para obtener las cifras finales.