Payment Status Updated Event

Sent when the status of a payment changes at various stages of the payment journey.

Once you have subscribed to the “PAYMENT STATUS” event type, Redpin will call your designated API endpoint with the payload described below when there is an update to one of your payment’s statuses.

Status Flow Diagram:

Status to Schema Mapping:

StatusDescription
AWAITING_FUNDSPayment created, waiting for funds to be received
RECEIVED_FUNDSFunds have been received and credited to customer’s Redpin wallet
FX_COMPLETEDForeign exchange conversion completed successfully
PAYOUT_INITIATEDPayment transfer to recipient has been initiated
PAYOUT_CREDITEDPayment has been successfully credited to recipient’s account
CANCELLEDPayment has been cancelled (with reason)
PROCESSINGPayment is being processed (with additional information)
REFUNDEDPayment has been refunded to the customer
BOUNCED_BACKPayment transfer failed and bounced back
PAYMENT_COMPLETEDAll recipients have been paid and payment is fully completed

Note: If you receive a status not listed here, log the event and contact support. Your integration should be resilient to new statuses.

Note: All top-level fields (event_id, payment_id, status, customer_id, event_timestamp, data) are always present in every event.

Difference between PAYOUT_CREDITED and PAYMENT_COMPLETED:

If a payment has only one recipient, then PAYOUT_CREDITED is functionally equivalent to PAYMENT_COMPLETED, and both events will be delivered.

If a payment has multiple recipients, PAYOUT_CREDITED will be delivered each time the amount for a recipient is credited to their account. PAYMENT_COMPLETED will be delivered only when all recipients have been credited with their expected amounts.

Example Payloads:

AWAITING_FUNDS

1{
2 "event_id": "1",
3 "payment_id": "123456",
4 "status": "AWAITING_FUNDS",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {}
9}

RECEIVED_FUNDS

1{
2 "event_id": "2",
3 "payment_id": "123456",
4 "status": "RECEIVED_FUNDS",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "amount": {
10 "currency": "GBP",
11 "value": 1000
12 }
13 }
14}

FX_COMPLETED

1{
2 "event_id": "3",
3 "payment_id": "123456",
4 "status": "FX_COMPLETED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "sell_amount": {
10 "currency": "GBP",
11 "value": 1000
12 },
13 "buy_amount": {
14 "currency": "AED",
15 "value": 4982.70
16 },
17 "quote_rate": 4.9827
18 }
19}

PAYOUT_INITIATED

1{
2 "event_id": "4",
3 "payment_id": "123456",
4 "status": "PAYOUT_INITIATED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "amount": {
10 "currency": "AED",
11 "value": 4982.70
12 },
13 "recipient_id": "162345"
14 }
15}

PAYOUT_CREDITED

1{
2 "event_id": "5",
3 "payment_id": "123456",
4 "status": "PAYOUT_CREDITED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "amount": {
10 "currency": "AED",
11 "value": 4982.70
12 },
13 "recipient_id": "162345"
14 }
15}

CANCELLED

1{
2 "event_id": "6",
3 "payment_id": "123456",
4 "status": "CANCELLED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "reason_description": "Customer cancelled the payment"
10 }
11}

PROCESSING

1{
2 "event_id": "7",
3 "payment_id": "123456",
4 "status": "PROCESSING",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "additional_info": "Recieved partial funds"
10 }
11}

REFUNDED

1{
2 "event_id": "8",
3 "payment_id": "123456",
4 "status": "REFUNDED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "refund_amount": {
10 "currency": "GBP",
11 "value": 1000
12 },
13 "refund_reason": "Customer overpaid"
14 }
15}

PAYMENT_COMPLETED

1{
2 "event_id": "9",
3 "payment_id": "123456",
4 "status": "PAYMENT_COMPLETED",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "recipient_details": [
10 {
11 "amount": {
12 "currency": "AED",
13 "value": 4982.70
14 },
15 "recipient_id": "162345"
16 },
17 {
18 "amount": {
19 "currency": "AED",
20 "value": 400.00
21 },
22 "recipient_id": "162346"
23 }
24 ]
25 }
26}

BOUNCED_BACK

1{
2 "event_id": "10",
3 "payment_id": "123456",
4 "status": "BOUNCED_BACK",
5 "customer_id": "0201001008132685",
6 "client_customer_ref": "CUST_001",
7 "event_timestamp": "2025-01-01T00:00:00Z",
8 "data": {
9 "amount": {
10 "currency": "AED",
11 "value": 4982.70
12 },
13 "recipient_id": "162345",
14 "bounce_reason": "Invalid account number"
15 }
16}

Payload

The payload of this webhook request is an object.
event_idstringRequired
Unique identifier for the event.
payment_idstringRequired

Unique identifier for the payment. This is the same as the payment_id in the Create a Payment operation.

statusenumRequired
Status of the payment.
customer_idstringRequired
Unique identifier for the customer associated with the payment.
datamap from strings to anyRequired

The structure of the data object varies depending on the payment status. See the documentation below for the specific data object schema associated with each status value.

  • (empty object)
  • amount (object, required):
    • currency (string, required): Currency code (ISO 4217).
    • value (number, required): Amount credited to the customer’s Redpin wallet.
  • sell_amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency being sold.
    • value (number, required): Amount of currency being sold as part of the FX transaction.
  • buy_amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency being bought.
    • value (number, required): Amount of currency being bought as part of the FX transaction.
  • quote_rate (number, required): Exchange rate used for the FX transaction.

Clarification: This status means the payment transfer to the recipient has been initiated by Redpin, but the funds may not yet have reached the recipient’s account.

  • amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency being paid out.
    • value (number, required): Amount of currency being paid out to the recipient.
  • recipient_id (string, required): Unique identifier for the recipient to whom the payout is being made.

Clarification: This status means the payment has been successfully credited to the recipient’s account. This is a confirmation that the funds have reached the recipient.

  • amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency being paid out.
    • value (number, required): Amount of currency credited to the recipient.
  • recipient_id (string, required): Unique identifier for the recipient to whom the payout is being made.
  • reason_description (string, required): Reason for the cancellation.
  • additional_info (string, required): Additional information about the processing status.
  • refund_amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency being refunded.
    • value (number, required): Amount of currency being refunded.
  • refund_reason (string, required): Reason for the refund.
  • recipient_details (array, required): Details of the recipients of the payment.
    • Each item (object, required):
      • amount (object, required):
        • currency (string, required): Currency code (ISO 4217) of the currency credited to the recipient.
        • value (number, required): Amount of currency credited to the recipient.
      • recipient_id (string, required): Unique identifier for the recipient to whom the payment is being made.
  • amount (object, required):
    • currency (string, required): Currency code (ISO 4217) of the currency that bounced back.
    • value (number, required): Amount of currency that bounced back from the recipient.
  • recipient_id (string, required): Unique identifier for the recipient from whom the payment bounced back.
  • bounce_reason (string, required): Reason why the payment transfer failed and bounced back.
event_timestampstringRequired

Timestamp of the event in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ).

client_customer_refstringOptional
The unique reference identifier of the third party client for whom the third party payment was made.

Response

200
any
Return a 200 status to indicate that the data was received successfully.