Anular un movimiento
Para un fiado, abono o condonación mal registrado. No se borra nada: el movimiento se queda en el historial con voided: true y el saldo se recalcula sin él (por eso es POST …/void y no DELETE). Anular dos veces devuelve lo mismo y no emite un segundo evento.
Anular un fiado que ya se había abonado dejaría al cliente con saldo a favor: responde 422 RECEIVABLE_NEGATIVE_BALANCE — primero se anula el abono.
Permiso: receivables.void.
Autorización
apiKey receivables.voidLa llave del negocio, creada en el panel: Integraciones → API pública. vk_live_… es una llave real; vk_test_…, una llave de modo prueba (verificaciones simuladas, nada toca el libro real). Ver la guía «Modo de prueba».
Va en: header
Permiso: receivables.void
Parámetros de la ruta
Id del cliente (la cuenta por cobrar).
Id del movimiento.
Parámetros de consulta
Sobre qué negocio actúa la petición. Obligatorio solo si la llave entra a varios negocios; con uno solo, se deduce.
Parámetros de cabecera
Llave única de la operación. Un reintento con la misma llave y el mismo cuerpo devuelve la respuesta original (con Idempotent-Replay: true) en vez de registrar el movimiento otra vez. Ver la guía de idempotencia.
Cuerpo de la respuesta
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/receivables/string/entries/string/void"{ "object": "receivableEntry", "id": "cmu4h7r2t0014bnw1y2e6kd9v", "accountId": "cmu4a2k9x000b7qw1h3r5tz8e", "type": "PAYMENT", "amount": 80000, "currency": "COP", "balanceAfter": 170000, "note": "Abono en efectivo, caja 2", "occurredAt": "2026-09-26T21:05:33.000Z", "createdAt": "2026-09-26T21:05:33.118Z", "source": "API", "createdBy": null, "voided": true, "voidedAt": "2026-09-26T21:09:02.340Z", "voidedBy": null, "account": { "object": "receivableAccount", "id": "cmu4a2k9x000b7qw1h3r5tz8e", "name": "Gloria Restrepo", "phone": "+573104567890", "email": null, "notes": "Mercado de la semana. Paga los viernes.", "stage": "PARTIAL", "dueDate": "2026-10-15T05:00:00.000Z", "isOverdue": false, "balance": 250000, "currency": "COP", "totalCharged": 300000, "totalPaid": 50000, "totalWrittenOff": 0, "chargesCount": 1, "paymentsCount": 1, "lastChargeAt": "2026-09-22T14:12:08.431Z", "lastPaymentAt": "2026-09-22T14:12:08.431Z", "lastActivityAt": "2026-09-26T21:09:02.340Z", "branchId": "cmt7xbfrj0002q3w1iq4ysatr", "source": "API", "createdBy": null, "createdAt": "2026-09-22T14:12:08.431Z", "updatedAt": "2026-09-26T21:09:02.340Z", "archivedAt": null }}Editar un cliente PATCH
Datos de contacto, notas, fecha acordada de pago y etapa del tablero. No toca el saldo: eso solo lo mueven los movimientos. - Pasar a `PAID` con saldo → `422 RECEIVABLE_STAGE_REQUIRES_PAYMENT`. Para darla por pagada, `POST /v1/receivables/{id}/settle`. - Mover de etapa una cuenta que ya está en cero → `422 RECEIVABLE_ALREADY_PAID`. Para reabrirla se anota un fiado nuevo. - Un cliente archivado no se edita (`404`): primero se restaura. Permiso: `receivables.write`.
Ver el negocio GET
Siguiente