Outgoing transfers
Guide to testing and simulating outgoing transfers in the Bre-B sandbox environment
Successful simulation
To simulate a successful outgoing transfer in the sandbox environment, simply send a request with a valid payload structure that passes all business validations. No special field values are required.
{
"tenant_account_id": "your_tenant_account_id",
"transfers": [
{
"external_id": "transfer_001",
"payment_id": "123856456",
"amount": {
"amount": 50000,
"currency": "COP"
},
"description": "Payment for services",
"query": {
"format": "plain_key",
"value": "user@email.com"
}
}
]
}If you retrieve the outgoing transfer using this endpoint, you will see the transfer completed successfully:
{
"id": "bbot_5tgliBmzjZ6mpQPRbQjfKj",
"resolution_request_id": "bbtgr_5tgliBmzjZ6mpQPRbQjfKj",
"state": "successful",
"state_reason": null,
...
}Error simulation
You can simulate errors in the sandbox environment through special rules that apply to certain field values of the payload. The following are the rules to simulate errors for the creation of outgoing transfers:
| Condition One | Condition Two | Expected Error in State Reason |
|---|---|---|
| transfers[x].description contains "tx_unknown" | unknown | |
| transfers[x].description contains "tx_amount_exceeds_balance_limit" | amount_exceeds_balance_limit | |
| transfers[x].description contains "tx_creditor_account_not_found" | creditor_account_not_found | |
| transfers[x].description contains "tx_invalid_creditor_account" | invalid_creditor_account | |
| transfers[x].description contains "tx_risk_control" | risk_control | |
| transfers[x].description contains "tx_breb_timeout" | breb_timeout | |
| transfers[x].query.format = "plain_key" | transfers[x].query.value = "sandbox@tx_provider_unavailable.err" | provider_unavailable |
| transfers[x].query.format = "plain_key" | transfers[x].query.value = "sandbox@key_unknown.err" | unknown |
| transfers[x].query.format = "plain_key" | transfers[x].query.value = "sandbox@key_not_found.err" | key_not_found |
| transfers[x].query.format = "plain_key" | transfers[x].query.value = "sandbox@key_suspended.err" | key_suspended |
| transfers[x].query.format = "plain_key" | transfers[x].query.value = "sandbox@key_provider_unavailable.err" | provider_unavailable |
Note: These errors are related to internal communication with the Bre-B system and are different from errors related to data validation. These errors are reflected in the
state_reasonof the outgoing transfer.
Examples
Simulating a Key Not Found Error
If you want to simulate an error when the Bre-B key does not exist for the creation of outgoing transfers, you can send something like:
{
"tenant_account_id": "your_tenant_account_id",
"transfers": [
{
"external_id": "transfer_001",
"payment_id": "123856456",
"query": {
"format": "plain_key",
"value": "sandbox@key_not_found.err"
}
}
]
}The response will be successful. Then, if you retrieve the outgoing transaction using this endpoint, you will see the error reflected in the state of the outgoing transfer:
{
"id": "bbot_5tgliBmzjZ6mpQPRbQjfKj",
"resolution_request_id": "bbtgr_5tgliBmzjZ6mpQPRbQjfKj",
"state": "failed",
"state_reason": "key_not_found",
...
}