Condición de Pago
Cómo informar el pago de una Factura Electrónica — un medio simple, varios medios de pago o un crédito con plazo o cuotas.
Una Factura Electrónica describe cómo paga el cliente con una de dos formas excluyentes:
condicionPago: un solo objeto para el caso simple, un medio de contado o un crédito con una entrega inicial opcional.pagos+credito: la forma completa. Admite varios medios de pago, datos de tarjeta o cheque y mediosOTROcon descripción propia.
No combines ambas formas: una solicitud con condicionPago y pagos o credito recibe 400 validation-error.
Forma completa: pagos y credito
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
pagos | array | Sí en CONTADO; opcional en CREDITO | Medios de pago en orden, hasta 999. En CONTADO cubren el total; en CREDITO describen la entrega inicial |
credito | object | Sí en CREDITO sin condicionPago | Condiciones del crédito; no se informa en CONTADO. Si una operación a crédito no envía condicionPago ni credito, la respuesta es 400 en credito |
Cada pago
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipoPago | enum | Sí | Medio de pago — ver tipoPago |
descripcionTipoPago | string | Sí con OTRO | Descripción propia del medio, de 4 a 30 caracteres. Sólo con tipoPago = OTRO |
montoPago | number | Sí | Importe en la moneda del pago, mayor que cero, hasta 15 enteros y 4 decimales |
monedaPago | enum | Sí | Moneda del pago |
tipoCambio | number | Condicional | Obligatorio cuando monedaPago no es PYG; no se informa en PYG |
tarjeta | object | Sí con tarjeta | Obligatorio y exclusivo de TARJETA_DE_CREDITO y TARJETA_DE_DEBITO |
cheque | object | Sí con cheque | { numeroCheque, bancoCheque }, obligatorio y exclusivo de CHEQUE. numeroCheque admite hasta 8 dígitos; bancoCheque, de 4 a 20 caracteres no vacíos |
PAGO_BANCARIO sólo corresponde a una operación bancaria: informalo con indicadorPresencia: "OPERACION_BANCARIA".
tarjeta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipoTarjeta | enum | Sí | Denominación — ver tipoTarjeta |
descripcionTipoTarjeta | string | Sí con OTRO | De 4 a 20 caracteres. Sólo con tipoTarjeta = OTRO |
formaProcesamientoPago | enum | Sí | POS, PAGO_ELECTRONICO u OTRO |
razonSocialProcesadora | string | No | De 4 a 60 caracteres |
rucProcesadora | string | No | RUC sin DV; se informa junto con digitoVerificadorProcesadora |
digitoVerificadorProcesadora | string | No | Un dígito, que debe corresponder al RUC |
codigoAutorizacion | string | No | Entero positivo de 6 a 10 dígitos, sin ceros a la izquierda (desde 100000) |
nombreTitular | string | No | De 4 a 30 caracteres |
ultimosCuatroDigitos | string | No | Cuatro dígitos distintos de 0000 |
Contado con varios medios
La suma de los pagos debe ser igual al total a pagar de la factura: no se admite un saldo pendiente en una operación al contado. Un saldo a pagar después corresponde a crédito. En guaraníes el total a pagar se redondea hacia abajo a múltiplos de 50 (107.437 se paga 107.400). En otras monedas el total no se redondea: se paga el total general exacto (30,75 USD se paga 30,75).
{
"condicionOperacion": "CONTADO",
"pagos": [
{ "tipoPago": "EFECTIVO", "monedaPago": "PYG", "montoPago": 60000 },
{
"tipoPago": "TARJETA_DE_DEBITO",
"monedaPago": "PYG",
"montoPago": 50000,
"tarjeta": {
"tipoTarjeta": "VISA",
"formaProcesamientoPago": "POS",
"ultimosCuatroDigitos": "4321"
}
}
]
}Cuando todos los pagos están en la moneda de la operación, la suma se compara con el total general en esa moneda. Si algún pago está en otra moneda, la comparación se hace en guaraníes: cada pago se convierte con su tipoCambio y se compara con el total en guaraníes de la factura.
credito
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
condicionCredito | enum | Sí | PLAZO o CUOTA |
plazoCredito | string | Una alternativa para PLAZO | Texto libre de 2 a 15 caracteres |
plazoEstructurado | object | Una alternativa para PLAZO | { "cantidad": 30, "unidad": "DIAS" } |
cuotas | integer | Sí para CUOTA | Cantidad de cuotas, de 1 a 999; igual a la cantidad de elementos de detalleCuotas |
detalleCuotas | array | Sí para CUOTA | { monto, fechaVencimiento?, moneda? } por cuota. moneda es opcional y, si se informa, debe coincidir con monedaOperacion |
montoEntregaInicial | number | No | Si se informa, debe ser igual a la suma de pagos |
{
"condicionOperacion": "CREDITO",
"pagos": [
{ "tipoPago": "CHEQUE", "monedaPago": "PYG", "montoPago": 20000,
"cheque": { "numeroCheque": "1234567", "bancoCheque": "Banco Continental" } }
],
"credito": {
"condicionCredito": "CUOTA",
"cuotas": 2,
"detalleCuotas": [
{ "monto": 45000, "fechaVencimiento": "2026-11-18" },
{ "monto": 45000, "fechaVencimiento": "2026-12-18" }
]
}
}Forma simple: condicionPago
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipo | enum | Sí | CONTADO o CREDITO; debe coincidir con condicionOperacion |
tipoPago | enum | Para CONTADO y para crédito con entrega inicial | Medio de pago — ver tabla abajo |
descripcionTipoPago | string | Sí con OTRO | Descripción propia del medio, de 4 a 30 caracteres. Sólo con tipoPago = OTRO |
monedaPago | enum | Para CONTADO y para crédito con entrega inicial | Moneda del pago; en una entrega inicial debe coincidir con monedaOperacion |
tipoCambio | number | Condicional | Obligatorio cuando monedaPago no es PYG; no se informa para pagos en PYG |
montoPago | number | Sí para CONTADO | Monto pagado; si monedaPago coincide con monedaOperacion, debe ser igual al total de la operación. No se informa para CREDITO |
numeroCheque | string | Sí para tipoPago = CHEQUE | Número del cheque, hasta 8 dígitos. Sólo con CHEQUE |
bancoCheque | string | Sí para tipoPago = CHEQUE | Banco emisor del cheque, de 4 a 20 caracteres no vacíos. Sólo con CHEQUE |
tipoTarjeta | enum | No (sólo tarjetas) | Denominación de la tarjeta. Si no se informa, se asume OTRO |
descripcionTipoTarjeta | string | Sí con tipoTarjeta = OTRO | De 4 a 20 caracteres. Sólo con tipoTarjeta = OTRO o sin tipoTarjeta |
formaProcesamientoPago | enum | No (sólo tarjetas) | Forma de procesamiento. Si no se informa, se asume OTRO |
condicionCredito | enum | Sí para CREDITO | Modalidad: PLAZO o CUOTA |
plazoCredito | string | Una alternativa para PLAZO | Texto libre de 2 a 15 caracteres. No genera un vencimiento calculable. |
plazoEstructurado | object | Una alternativa para PLAZO | { "cantidad": 30, "unidad": "DIAS" }; cantidad entera de 1 a 9999, unidad DIAS o MESES. |
cuotas | integer | Sí para CUOTA | Cantidad, entre 1 y 999; debe coincidir con detalleCuotas.length |
detalleCuotas | array | Sí para CUOTA | Un detalle por cuota; cada monto es positivo y la fecha es opcional |
montoEntregaInicial | number | No (sólo CREDITO) | Entrega inicial; null o 0 significa que no hay entrega |
Los datos de tarjeta sólo se informan con TARJETA_DE_CREDITO o TARJETA_DE_DEBITO, y los de cheque sólo con CHEQUE; con otro tipoPago la respuesta es 400 en el campo enviado. Para informar los datos de la procesadora o más de un medio de pago, usá la forma completa.
Tipo de cambio del pago
tipoCambio describe la conversión de la moneda del pago y se valida independientemente del tipo de cambio GLOBAL o POR_ITEM de la operación. Debe ser positivo, menor que 99999.9999 y admitir como máximo 4 decimales.
{
"condicionPago": {
"tipo": "CONTADO",
"tipoPago": "TRANSFERENCIA",
"monedaPago": "USD",
"tipoCambio": 7130.5000,
"montoPago": 30.75
}
}Una operación en USD pagada en PYG no lleva tipoCambio en el pago. Un pago en USD sí lo requiere, aunque ya hayas informado la cotización de la operación. Ver Facturar en Moneda Extranjera.
Modalidades de crédito
PLAZO y CUOTA son ramas excluyentes, en condicionPago y en credito. Para PLAZO enviá exactamente uno de plazoCredito o plazoEstructurado. No envíes cuotas ni detalleCuotas con PLAZO, ni ningún plazo con CUOTA. El plazo estructurado produce el texto (30 días o 2 meses) y una fecha desde la fecha efectiva de emisión. Los meses se suman como meses calendario y se ajustan al último día del mes.
{
"condicionPago": {
"tipo": "CREDITO",
"condicionCredito": "PLAZO",
"plazoCredito": "30 días",
"montoEntregaInicial": 0
}
}También se puede emitir con vencimiento calculable:
{
"condicionPago": {
"tipo": "CREDITO",
"condicionCredito": "PLAZO",
"plazoEstructurado": { "cantidad": 30, "unidad": "DIAS" }
}
}plazoCredito se envía como texto libre y no se interpreta como una fecha.
Entrega inicial
Una entrega positiva agrega tipoPago y monedaPago al mismo bloque de condicionPago, o se informa como pagos en la forma completa:
{
"condicionPago": {
"tipo": "CREDITO",
"condicionCredito": "PLAZO",
"plazoCredito": "30 días",
"tipoPago": "TRANSFERENCIA",
"monedaPago": "PYG",
"montoEntregaInicial": 20000
}
}La entrega se expresa en la moneda de la operación y debe ser menor que el total: sin saldo financiado, la operación es CONTADO. CHEQUE también exige numeroCheque y bancoCheque.
El crédito admite cualquier moneda de operación. En moneda extranjera, la entrega y las cuotas se expresan en esa moneda, y un pago en moneda extranjera lleva su tipoCambio.
Valores de tipoPago
| Valor | Descripción |
|---|---|
EFECTIVO | Pago en efectivo |
CHEQUE | Cheque |
TARJETA_DE_CREDITO | Tarjeta de crédito |
TARJETA_DE_DEBITO | Tarjeta de débito |
TRANSFERENCIA | Transferencia bancaria |
GIRO | Giro u orden de pago |
BILLETERA_ELECTRONICA | Billetera electrónica |
TARJETA_EMPRESARIAL | Tarjeta empresarial |
RETENCION | Retención |
PAGO_BANCARIO | Pago bancario, sólo en una operación bancaria |
PAGO_MOVIL | Pago móvil |
OTRO | Otro medio, con descripcionTipoPago |
Consultá enumeraciones para el listado completo y actualizado.
tipoTarjeta
| Valor | Descripción |
|---|---|
VISA | Visa |
MASTERCARD | Mastercard |
AMERICAN_EXPRESS | American Express |
MAESTRO | Maestro |
PANAL | Panal |
CABAL | Cabal |
OTRO | Otro |
tipoTarjeta y formaProcesamientoPago también se publican en /api/v1/public/enums.