Reap's Payments API provides webhooks to allow you to receive real-time notifications of events that occur in your Reap account. When you subscribe to our webhooks, you can choose which event type goes to your designated URL.
Events
Event Type: Account Information
Event Name: account_status_update
Theaccount_status_update webhook is triggered whenever there has been a change to the account status of one of your Managed Accounts. It is particularly useful for determining when a Managed Account has reached the "active" status, which indicates actions like creating payments are now viable through that account (by using the BUUID in the header for API requests).
Sample Webhook
{
"eventType": "account_information",
"eventName": "account_status_update",
"data": {
"businessId": "22c60904-b90e-4557-ab84-c4af4ae976af", // Business UUID for the Managed Account
"accountStatus": "under_review | active | rejected", // Possible account statuses
"reason": "string" // Explanation for the status change
}
}Event Type: Account Balance
Event Name: balance_movement
Thebalance_movement webhook is triggered whenever Reap's system detects that there was a balance change. This webhook applies to all accounts, whether Manager or Managed.
Sample Webhook
{
"eventType": "account_balance",
"eventName": "balance_movement",
"eventDate":"2025-05-09 08:43:19",
"data": {
"action": "payment" | "refund" | "fund_in" | "withdrawal" | "adjustment" | "internal_transfer" ,
"businessID": "22c60904-b90e-4557-ab84-c4af4ae976af",
"currency": "USDC",
"amount":"2000.00000000", // negative when there is a decrease of balance
"referenceID":"pid_jsdhasjhd", // optional; can be null depending on the action
}
}Event Name: balance_update_fund_in
Thebalance_update_fund_in webhook is triggered whenever Reap's system detects that funds have been sent and attributed (after our automated Chainanalysis KYT review) to an account, increasing the balance. This webhook applies to all accounts, whether Manager or Managed.
Please note this only applies for fund-ins, and this webhook will not be triggered when the balance is reduced (whether due to funds being used for a payment or there being a withdrawal from the account).
Sample Webhook
{
"eventType": "account_balance",
"eventName": "balance_update_fund_in",
"data": {
"organisationId": "z8f738fa-4f1d-47ce-a865-130af7df5576",
"businessId": "22c60904-b90e-4557-ab84-c4af4ae976af",
"currency": "USDC",
"amountReceived": "2000.00000000",
"networkReceivedOn": "POLYGON_POS",
"networkTransactionReference": "0x7b618c262e5fb7a1a5a4651f7814b2fz59e3567b32260a0e2db5d6bdc0953efb",
"updatedBalance": [
{
"currency": "USDC",
"amount": "3000.00000000"
},
{
"currency": "USDT",
"amount": "100.00000000"
}
]
}
}Event Type: Payment
Event Name: payment_status_update
The payment_status_update webhook is triggered when the status of transaction changes (e.g. when the transaction is approved by Reap's Compliance system). This will send the transaction details along with the new status to your designated webhook URL.
Sample Webhook
{
"eventType": "payment",
"eventName": "payment_status_update",
"data": {
"paymentId": "pid_01hvr989b8ksnwvp5y8ywcdxk0",
"status": "under_review",
"statusDetails": null,
"fxInfo": {
"clientRate": 1,
"baseSenderAmount": 30
},
"feeInfo": {
"fixedFee": 25,
"totalFee": 25.48,
"specialFee": 0,
"variableFee": 0.48,
"variableFeePercentage": 0
},
"paymentInfo": {
"receivingAmount": 30,
"receivingCurrency": "USD",
"senderAmount": 55.48,
"senderCurrency": "USDC",
"description": "Goods purchased from supplier",
"purposeOfPayment": "payment_for_goods",
"sourceOfFunds": null,
"metadata": {
"payment_id": "a8f738fb-4f1d-47ce-9365-620afadf4083"
}
}
}
}The status can be one of the following:
| Status | Description |
|---|---|
awaiting_approval |
The payment is awaiting for explicit approval to continue being processed. |
awaiting_funds |
The payment is awaiting the required funds as indicated in the quote. Please note that this webhook will be provided for all payments, even if there are sufficient funds, because our system always does a "funds check" with this status. When there is sufficient funding, this webhook will be received first and then shortly thereafter the "under_review" webhook. |
under_review |
The payment has been funded and is going through compliance review. |
requires_action |
Reap's payments compliance team has indicated that additional information is needed in order to continue processing the payment. |
payout_completed |
The payment has been sent by Reap to its designated recipient. |
cancelled |
The payment has been cancelled (whether by user request or Reap admin) |
failed |
The payment has encountered a failure (Reap team will reach out to help fix the issue) |
The statusDetails field shares why the payment status has changed. Currently this field is only populated for payments where the status is cancelled. For cancelled payments, the status detail will be one of the following statuses below:
| statusDetails | Description | |
|---|---|---|
| cancelled_by_user_before_funding | This payment was cancelled while in awaiting_approval or awaiting_funds status. | |
| cancelled_by_user_after_funding | The payment was cancelled after the payment reached under_review or a later status. Currently there is no endpoint that can initiate this cancellation- this request must be communicated through communication channels with Reap Support who would initiate this cancellation. | |
| payment_request_expired | The payment has been cancelled automatically by our system as the quote has expired. Refer to payment lifecycle for details on how long Reap will hold the quote for a payment. | |
| payment_rejected | This payment cannot be processed by Reap. The funds have been returned, please refer to Reap's communication for more details. | |
| payment_returned | The payment was processed by Reap but the funds have been returned, please refer to Reap's communication for more details. |
Event Type: Tracking
Event Name: payment_tracking_update
This webhook event is triggered when Reap receives an update on the tracking status of the payment. A new webhook is triggered each time the tracking status changes, proactively keeping you updated with the latest information. This webhook will eventually cover all payments, but to start with it is being offered for payments made on SWIFT, CHATS and FPS network.
For payments with tracking enabled, the webhooks will be triggered after the payment has reached the payment status payout_completed. The webhook will contain the following:
- The network the payment was made on.
- The network identifier of the intermediary if it was specified when the payment was created.
- The unique identifier on that network (e.g. the UETR for SWIFT payments).
- Tracking Status (dynamic status that updates as the tracking status changes over time).
- The sender name and the address that is placed on the payment- and that would be seen by the recipient bank.
- The Ordering institution that was used to payout this payment.
This information is also available on the payment dashboard and is a downloadable via a Proof of Payment PDF containing additional key payment information. This information will also be included in the GET Payment and GET Payments endpoints.
Sample Webhook
{
"eventType": "tracking",
"eventName": "payment_tracking_update",
"data": {
"paymentId": "pid_01jgn629bsz5x0s4vaqqjn3gvd",
"status": "payout_completed",
"paymentTrackingInfo": {
"network": "SWIFT",
"networkIntermediateIdentifier": "CHASUS33XXX",
"networkPaymentIdentifier": "c7619029-a06e-420f-93d5-0d026a531bdb",
"trackingStatus": "Arrived at recipient",
"senderName": "Reap (Remit) Limited",
"senderAddress": "25E 23/F ONE TAIKOO PLACE 979 KING'S RD QUARRY BAY HONG KONG",
"orderingInstitution": "Reap (Remit) Limited 25E 23/F ONE TAIKOO PLACE 979 KING'S RD QUARRY BAY HONG KONG"
}
}
}The tracking status will be one of the following:
| Status | Description |
|---|---|
| En route - trackable | The payment is on the way and has reached an intermediary that has tracking capabilities (e.g. for a SWIFT payment, it means the intermediary is able to share payment info via the SWIFT GPI system). This is a temporary status. |
| En route - no longer trackable | The payment is on the way and has reached an intermediary that does not have tracking capabilities (e.g. their systems can't relay updates to the SWIFT GPI system). This does not mean there is an issue with the payment, it just means there won't be additional tracking updates. This is a final status - there won't be additional webhooks, and successful completion of payment can only be confirmed by the recipient. |
| Arrived at recipient | The payment has been received by the recipient's bank and should be credited. There is a chance that the payment is at the recipient bank but not yet credited if the bank requires documentation (e.g. invoice) from the recipient to credit the funds (e.g. not uncommon situation for exporters with China-based banks). This is a final status - there won't be additional webhooks. |

