Reversals and reapplications
Simulate the reverse and reapply reconciliation outcomes on your Bre-B transfers in the sandbox environment
After a transfer settles, the Banco de la República (BanRep) end-of-cycle reconciliation can still adjust it. There are two outcomes:
- Reverse — an operation that looked successful did not actually settle at
the destination (or was returned), so it is reversed. A reversed incoming
payment that belongs to a collection is rolled back: its attempt goes from
successfultoreversed, the collection'spaid_amountand counters are recomputed, and the collection may reopen. - Reapply — an operation that was marked
failedactually settled late, so it is reapplied. A reapplied incoming payment settles the attempt that was finalized as failed: it goes fromfailedtosuccessfuland is credited to the collection.
In production these come from the daily reconciliation file. The sandbox lets you replay either outcome on one of your own transfers so you can verify that your integration handles the resulting webhooks. These endpoints are only available in the sandbox environment.
Prerequisites
You need an existing transfer and its end_to_end_id:
- To reverse, the transfer must be in a reversible state (
successfulorreapplied). For a collection, first simulate a successful collection payment. - To reapply, the transfer must be in the
failedstate. For a collection, first simulate a payment with anerrorso the attempt is finalized as failed.
The end_to_end_id is returned in the
collection attempt simulation
response and is present in every collection.attempt_* and
incoming_transfer.* webhook payload.
Simulating a reversal
Send a POST to reverse the transfer matching the end_to_end_id:
curl -X POST \
https://breb-participant.sandbox.mono.la/api/v1/sandbox/transfers/{end_to_end_id}/reverse \
-H "Authorization: Bearer <access_token>"You receive a 202 Accepted response describing the applied outcome:
{
"end_to_end_id": "20260527345544001ENT177994036665555",
"direction": "incoming",
"state": "reversed",
"state_reason": "reversed_by_banrep",
"result": "applied"
}A few seconds later, the webhooks are delivered to your configured URL. For a reversed incoming payment that belongs to a collection you receive:
collection.attempt_reversed— the attempt that wassuccessfulis nowreversed.collection.updated— the collection'spaid_amount, counters and state were recomputed.
Simulating a reapplication
Send a POST to reapply the failed transfer matching the end_to_end_id:
curl -X POST \
https://breb-participant.sandbox.mono.la/api/v1/sandbox/transfers/{end_to_end_id}/reapply \
-H "Authorization: Bearer <access_token>"You receive a 202 Accepted response:
{
"end_to_end_id": "20260527345544001ENT177994036665555",
"direction": "incoming",
"state": "reapplied",
"state_reason": "reapplied_by_banrep",
"result": "applied"
}For a reapplied incoming payment that belongs to a collection you receive:
collection.attempt_successful— the attempt that wasfailedis nowsuccessful.collection.updated— the collection'spaid_amount, counters and state were recomputed.
See the collection webhooks reference for the full payloads.
Response fields
| Field | Description |
|---|---|
end_to_end_id | The transfer the outcome was applied to. |
direction | incoming (settles a collection) or outgoing. |
state | The resulting transfer state: reversed or reapplied. |
state_reason | The reason recorded for the change. |
result | applied when the transfer transitioned now, or already_applied when it was already in the target state. |
Idempotent
Calling reverse on an already-reversed transfer (or reapply on an already-reapplied one)
returns 200-style success with "result": "already_applied" and does not emit a new
webhook.
Errors
| Status | Code | When |
|---|---|---|
404 | transfer_not_found | No transfer matches the end_to_end_id. |
409 | transfer_invalid_state | The transfer cannot be reversed/reapplied from its current state. |
Expected flow
- Create a transfer to act on (e.g. simulate a collection payment).
- Take its
end_to_end_idfrom the simulation response or a webhook. - Call the reverse or reapply sandbox endpoint with that
end_to_end_id. - The API responds with
202 Acceptedand the applied outcome. - After a short delay, the
collection.*webhooks are delivered to your configured URL.