Saltar al contenido principal

Cómo crear comprobantes

Esta página cubre los flujos de creación de comprobantes: individual y masivo.

Flujo individual

POST /v1/receivables
Authorization: Bearer eyJ...
Idempotency-Key: erp-fac-2026-05-15-00012345
Content-Type: application/json

{
"receivableAccountId": 4242,
"amount": 45000.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"legalNumber": "0001-00012345",
"issueDate": "2026-05-15",
"dueDate": "2026-05-30",
"description": "Pedido 5678 - 12 cajas"
}

Campos del request

CampoTipoRequeridoDescripción
receivableAccountIdint64Cuenta sobre la que se emite
amountdecimal positivoMonto, siempre positivo. El signo contable lo da receivableType
currencyCodestringDebe coincidir con la moneda de la cuenta
receivableTypeenumVer tipos
clientIdint64NoDefault: el de la cuenta. Pasarlo solo si difiere
associateIdint64NoOperador que registra. Si la cuenta no tiene operador, este valor lo vincula post-hoc
parentReceivableIdint64Solo para tipos con signo negativoComprobante original que este modifica/cancela
legalNumberstringNoNúmero del comprobante AFIP
descriptionstringNoTexto libre
externalRoutingCodestringNoCódigo de hoja de ruta
issueDateYYYY-MM-DDNoFecha del comprobante
dueDateYYYY-MM-DDNoVencimiento
receivableDateYYYY-MM-DDNoDefault: hoy
attachmentUriURLNoAdjunto del comprobante
invoiceData.*objectNoDatos AFIP (versión, punto de venta, CAE, etc.)

Respuesta

201 Created
Location: /v1/receivables/99001
Content-Type: application/json

{
"id": 99001,
"receivableAccountId": 4242,
"clientId": 1042,
"associateId": null,
"amount": 45000.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"status": "PENDING",
"legalNumber": "0001-00012345",
"description": "Pedido 5678 - 12 cajas",
"issueDate": "2026-05-15",
"dueDate": "2026-05-30",
"receivableDate": "2026-05-15",
"creationDate": "2026-05-15T10:00:00-03:00",
"modificationDate": "2026-05-15T10:00:00-03:00"
}

Diagrama de secuencia

Vinculación post-hoc del operador

Si la cuenta está en Patrón A (solo clientId) y este es el primer comprobante que carga un chofer en esa cuenta, podés pasar associateId en el comprobante y la cuenta queda automáticamente vinculada al asociado (transición a Patrón C). Útil para flujos donde la asignación de chofer-cliente surge orgánicamente.

POST /v1/receivables
Idempotency-Key: ...

{
"receivableAccountId": 4242,
"amount": 45000.00,
"currencyCode": "ARS",
"receivableType": "INVOICE",
"associateId": 88
}

Ver más en vinculación post-hoc.

Casos relacionados

Errores comunes

EscenarioHTTPcode
amount <= 0400validation
currencyCode no coincide con la cuenta422unmatching-receivable-currency-code
receivableAccountId apunta a una cuenta de otro customer403resource-not-accessible
Cuenta no habilitada para comprobantes (es una MAIN/SUB)422current-account-not-receivable-enabled
parentReceivableId requerido para tipos negativos pero no enviado422missing-parent-receivable
clientId distinto al de la cuenta422unmatching-receivable-client-id
Mismo Idempotency-Key con body distinto409idempotency-key-reuse

Modificaciones posteriores

Un comprobante en estado PENDING se puede modificar con PUT /v1/receivables/{id} (limitado a ciertos campos: description, dueDate, attachmentUri, externalRoutingCode).

Para cambiar el estado, usar PATCH /v1/receivables/{id}/status — ver Lifecycle.

Si el comprobante ya está en un estado terminal (PAID, SETTLED, EXPIRED, DISABLED), el PUT devuelve 422 updating-receivable-final-status.