La API de cuenta es de solo lectura para decisiones. Una subida exitosa no
cambia el resultado: agrega una versión inmutable de evidencia.
Contenido del pack de evidencia
Cuando la organización genera un pack, la cuenta puede descargar el mismo PDF privado y autenticado asociado al caso. Incluye campos tipados del payin, evidencia de ledger/FIFO y referencias externas del gasto. Para payins con tarjeta, el pack incluye la operación que se presenta al procesador (referencias de transacción, aprobación, monto/moneda/fecha, detalles enmascarados de la tarjeta, emisor/país, 3DS, AVS/CVV, resultado del motor de decisión, fingerprint del dispositivo y contexto enmascarado del pagador). Los gastos FIFO incluyen el ID del retiro o payout, activo/moneda, estado, dirección de destino o referencia bancaria y hash de transacción si existe. La identidad verificada KYB/KYC del comercio se incluye completa para representarlo ante el procesador; el pagador permanece enmascarado. Se excluyen los payloads crudos y los campos adyacentes al PAN.Abrir casos por identificadores
Los administradores de la organización pueden abrir varios casos desde una lista pegada de identificadores. El flujo acepta entre 1 y 100 valores únicos y no vacíos después de quitar espacios y duplicados exactos. Un identificador puede ser el ID del payin, una clave de idempotencia, una referencia corta,qbank_reference o qbank_payin_id.
Ambas llamadas exigen el permiso de organización disputes:write. El preview
es de solo lectura: no crea casos, no retiene fondos ni envía webhooks.
1. Previsualizar la lista
ambiguous incluye hasta cinco
candidatos; cada candidato trae payin_id, currency, local_amount y
credited_at.
status y has_open_case antes de confirmar: batch-open solo
abre payins acreditados que no tengan un caso abierto.
La apertura individual y la vinculación manual de una fila importada también
exigen un payin credited. Si no lo está, responden 409 payin_not_credited
y no crean una retención; batch e importación lo reportan por ítem o fila.
2. Confirmar la apertura
Envía los mismos identificadores, o la lista completa, con una clave de idempotencia del batch.kind por defecto es dispute y también acepta
fraud_hold.
200 cuando la solicitud es válida.
case_already_open, not_found, ambiguous y not_credited son resultados
skipped por ítem; un monto inválido o un fallo de apertura es un resultado
failed por ítem. Repetir la misma clave devuelve el ítem original como
opened con idempotency_hit: true y no crea otra retención.
La API devuelve invalid_payload para una lista vacía, valores vacíos, un
kind inválido o más de 100 identificadores únicos. No existe un código
superior separado too_many. Si falta la idempotencia devuelve
idempotency_key_required; si falta el scope de organización devuelve
org_required.
Ciclo de vida
Un caso vencido mantiene su retención preventiva. Vencer es una señal operativa, no un movimiento automático de dinero.Lista tus casos
status,
kind, from, to, page y page_size.
Detalle y evidencia
GET /v1/disputes/{id} agrega items, timeline y evidence al caso. El
payload crudo de los cobros nunca se incrusta en la respuesta.
file:
Webhook
Suscríbete adispute_status_changed mediante el flujo normal de webhooks:
Errores
Consulta el catálogo de errores.
FAQ
¿Puedo liberar o perder un caso desde la API de cuenta?
¿Puedo liberar o perder un caso desde la API de cuenta?
No. Son acciones de organización, protegidas por
disputes:write y
maker-checker.¿Un vencimiento libera la retención?
¿Un vencimiento libera la retención?
No. El worker solo cambia el caso a
expired y registra el evento.¿Puedo subir evidencia después de enviar el caso?
¿Puedo subir evidencia después de enviar el caso?
Sí.
open, evidence y submitted aceptan evidencia de cuenta. Los casos
won, lost y expired quedan cerrados.Fiat local retenido
Un payin concredit_asset BOB, MXN o ARS devuelve
409 dispute_fiat_unsupported sin crear caso ni hold. Batch lo omite como
fiat_unsupported e import lo marca payin holds local fiat (unsupported).
USD como activo principal del ledger
Las cuentas usanUSD como valor predeterminado de settlement_asset y
payin_settlement_asset; cámbialo cuando quieras con PUT /v1/settlement.
Las operaciones en vuelo nunca se vuelven a cotizar.
Los montos del ledger en USD usan centavos (dos decimales). Los créditos y
los débitos directos, las comisiones y los flujos de payout, checkout, POS y
tarjetas usan USD solo cuando el campo de activo de ese flujo lo acepta. Los
swaps entre USD y USDT usan paridad 1:1 y no consultan un oráculo FX. BOB,
MXN y ARS siguen siendo activos fiat separados del ledger; en v1 el pricing
de money-out para esos activos sigue no disponible.
Un payin acreditado directamente a una cuenta USD-principal expone
credit_asset: USD y el monto fiat acreditado en centavos; usdt_credited
sigue siendo el equivalente USD para reportes. El hold de una controversia
sigue el activo acreditado: los créditos USD usan hold_asset: USD. disputed y held usan las
unidades del activo retenido; disputed_usdt y held_usdt son equivalentes
normalizados.