Documentation

API Partners can use webhooks to receive automated notifications about all the events of their programs in real time. Rather than requiring to pull information via our API, this will push information to your URL when important events occur. Webhooks are delivered via HTTPS POST to a configured URL on your server and your server should return HTTP status code 200 OK to acknowledge the receipt of the notification.

When sending a webhook to both the vendor and the processor, it involves transmitting relevant data payloads tailored to each recipient's specific needs. Moreover, the source API or financing type is incorporated into the payload, specifying whether the transaction involves credit, debit, or alternative financial arrangements, thereby ensuring accurate processing and comprehensive record-keeping for both vendor and processor.


Request Header

Verifying the origin of webhooks from GrailPay guarantees the authenticity of a webhook notification. Each request sent to your webhook URL will carry a header named X-Caller-Auth, containing the SHA256 encryption of your API key. It is of utmost importance to authenticate this key in order to ascertain that the webhook request indeed originates from GrailPay.


Transaction Started Event

GrailPay offers a webhook that executes each time when a transaction has been successfully created and ACH has not been processed yet.

The webhook payload structure is:

{
    "event": "TransactionStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_PENDING",
    "capture_status": "CAPTURE_PENDING",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "TransactionStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_PENDING",
    "capture_status": "CAPTURE_PENDING",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Transaction Capture Started Event

GrailPay offers a webhook that executes each time when ACH has been processed

The webhook payload structure is:

{
    "event": "TransactionCaptureStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_ACH_PENDING",
    "capture_status": "CAPTURE_ACH_PENDING",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "TransactionCaptureStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_ACH_PENDING",
    "capture_status": "CAPTURE_ACH_PENDING",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Transaction Completed Event

GrailPay offers a webhook that executes each time when transaction has been completed.

The webhook payload structure is:

{
    "event": "TransactionCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_PENDING_ACH",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "TransactionCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_PENDING_ACH",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Transaction Canceled Event

GrailPay offers a webhook that executes each time when transaction has been canceled.

The webhook payload structure is:

{
    "event": "TransactionCanceled",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CANCELED",
    "capture_status": "CANCELED",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "cancel_reason": null,
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "TransactionCanceled",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CANCELED",
    "capture_status": "CANCELED",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "cancel_reason": null,
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Transaction Failed Event

GrailPay offers a webhook that executes each time the transaction has failed due to some reason.

The webhook payload structure is:

{
    "event": "TransactionFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_ACH_FAILED",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failed_reason": "Insufficient funds",
    "ach_return_code": "R01",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "TransactionFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CAPTURE_ACH_FAILED",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": null,
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failed_reason": "Insufficient funds",
    "ach_return_code": "R01",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

If for some reason the payment cannot be successfully processed the error details will be sent in the payload through a variable called failed_reason along with the corresponding R code in 'ach_return_code'.

CodeDescription
R01Insufficient funds
R02Account closed
R03No account or unable to locate account
R04Invalid account number structure
R05Unauthorized debit to consumer account using a corporate SEC code
R08Payment stopped
R10Customer advises originator is not known to receiver and/or originator is not authorized by receiver to debit receiver’s account
R20Failed deposit

Payout On Hold

GrailPay offers a webhook that executes each time the payout (transfer money to payee) has failed due to some reason.

This event has been deprecated.

The webhook payload structure is:

{
    "event": "PayoutOnHold",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "PayoutOnHold",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Payout Failed

GrailPay offers a webhook that executes each time the payout (transfer money to payee) has failed due to some reason.

The webhook payload structure is:

{
    "event": "PayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_PENDING",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "PayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "reverse_payout_status": "REVERSE_PAYOUT_PENDING",
    "clawback_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Payout Completed

GrailPay offers a webhook that executes each time the payout (transfer money to payee) has been completed.

  • Please note that this event indicates that the payout has been sent on GrailPay's end. It does not indicate that the money has been successfully delivered by the bank yet.

The webhook payload structure is:

{
    "event": "PayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_COMPLETE",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_COMPLETE",
    "reverse_payout_status": null,
    "clawback_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "PayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_COMPLETE",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": null,
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Clawback Started Event

GrailPay offers a webhook that execute each time when payout return has been initiated. A payout return occurs when a transaction fails (with a specific reason code) after the payout has already been initiated.

The webhook payload structure is:

{
    "event": "ClawbackStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_ACH_PENDING",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_ACH_PENDING",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ClawbackStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_ACH_PENDING",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_ACH_PENDING",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Clawback Completed Event

GrailPay offers a webhook that execute each time when payout return has been completed.

  • Please note that this event indicates that the payout return has been sent on GrailPay's end. It does not indicate that the money has been successfully delivered by the bank yet.

The webhook payload structure is:

{
    "event": "ClawbackCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_COMPLETE",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_COMPLETE",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ClawbackCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_COMPLETE",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_COMPLETE",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Clawback Failed Event

GrailPay offers a webhook that execute each time when payout return has been failed.

The webhook payload structure is:

{
    "event": "ClawbackFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_ACH_FAILED",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_ACH_FAILED",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ClawbackFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "CLAWBACK_ACH_FAILED",
    "capture_status": "CAPTURE_ACH_FAILED",
    "payout_status": "PAYOUT_COMPLETE",
    "clawback_status": "CLAWBACK_ACH_FAILED",
    "reverse_payout_status": null,
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "failure_reason": "Insufficient funds",
    "failure_code": "R01",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Reverse Payout Started Event

GrailPay offers a webhook that execute each time when reverse payout has been processed.

The webhook payload structure is:

{
    "event": "ReversePayoutStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_ACH_PENDING",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ReversePayoutStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_ACH_PENDING",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Reverse Payout Completed Event

GrailPay offers a webhook that execute each time when reverse payout has been completed.

The webhook payload structure is:

{
    "event": "ReversePayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_COMPLETE",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ReversePayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_COMPLETE",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Reverse Payout Failed Event

GrailPay offers a webhook that execute each time when reverse payout has been failed due to some reason.

The webhook payload structure is:

{
    "event": "ReversePayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_FAILED",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "ReversePayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "status": "PAYOUT_ACH_FAILED",
    "capture_status": "CAPTURE_COMPLETE",
    "payout_status": "PAYOUT_ACH_FAILED",
    "clawback_status": null,
    "reverse_payout_status": "REVERSE_PAYOUT_FAILED",
    "currency": "USD",
    "amount": 12000,
    "transaction_fee": 300,
    "client_reference_id": "",
    "payout_delay_days": 2,
    "type": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Batch Payout Event

GrailPay offers a webhook that execute each time when batch payout has been initiated to processor.

The webhook payload structure is:

{
    "event": "BatchPayout",
    "uuid": "9bd53fe1-ac74-4e81-b6f2-be88b7c86a68",
    "amount": 10100,
    "created_at": "2024-04-18 01:00:20",
    "updated_at": "2024-04-18 01:00:20"
}

Bank Link Successfully

GrailPay offers a webhook that executes each time when a bank account has been linked successfully.

The webhook payload structure is:

{
    "event": "BankLinkedSuccessfully",
    "account_uuid": "becdf333-53cc-4db1-a6bd-a01b1ba9585c",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "aggregator_type": "bank_link",
    "source": "api",
    "account_id": "acc_9Dw8QmdZtcXrEMDuZWLyfi",
    "account_number": "45287159",
    "routing_number": "011401533",
    "provider_name": "chase",
    "vendor_id": "12345",
    "ui_notified": true|false
}
{
    "event": "BankLinkedSuccessfully",
    "account_uuid": "becdf333-53cc-4db1-a6bd-a01b1ba9585c",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "aggregator_type": "bank_link",
    "source": "financing",
    "account_id": "acc_9Dw8QmdZtcXrEMDuZWLyfi",
    "account_number": "45287159",
    "routing_number": "011401533",
    "provider_name": "chase",
    "vendor_id": "12345",
    "ui_notified": true|false
}
{
    "event": "BankLinkedSuccessfully",
    "account_uuid": "becdf333-53cc-4db1-a6bd-a01b1ba9585c",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "aggregator_type": "bank_link",
    "source": "api",
    "account_id": "acc_9Dw8QmdZtcXrEMDuZWLyfi",
    "account_number": "45287159",
    "routing_number": "011401533",
    "provider_name": "chase",
    "vendor_id": "12345",
    "ui_notified": true|false,
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd"
}
{
    "event": "BankLinkedSuccessfully",
    "account_uuid": "becdf333-53cc-4db1-a6bd-a01b1ba9585c",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "aggregator_type": "bank_link",
    "source": "financing",
    "account_id": "acc_9Dw8QmdZtcXrEMDuZWLyfi",
    "account_number": "45287159",
    "routing_number": "011401533",
    "provider_name": "chase",
    "vendor_id": "12345",
    "ui_notified": true|false,
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd"
}

Bank Link Failed

GrailPay offers a webhook that executes each time when a bank account has not linked due to some reason.

The webhook payload structure is:

{
    "event": "BankLinkFailed",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
  	"aggregator_type": "bank_link",
    "vendor_id": "123456",
    "failed_reason": ".....",
    "source": "api",
    "ui_notified": true|false
}
{
    "event": "BankLinkFailed",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
  	"aggregator_type": "bank_link",
    "vendor_id": "123456",
    "failed_reason": ".....",
    "source": "financing",
    "ui_notified": true|false
}
{
    "event": "BankLinkFailed",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
  	"aggregator_type": "bank_link",
    "vendor_id": "123456",
    "failed_reason": ".....",
    "source": "api",
    "ui_notified": true|false,
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd"
}
{
    "event": "BankLinkFailed",
    "user_uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
  	"aggregator_type": "bank_link",
    "vendor_id": "123456",
    "failed_reason": ".....",
    "source": "financing",
    "ui_notified": true|false,
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd"
}

Business Created

GrailPay offers a webhook that executes each time when a business account has created.

The webhook payload structure is:

{
    "event": "BusinessCreated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "api",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessCreated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "financing",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessCreated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessCreated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "financing",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}

Business Updated

GrailPay offers a webhook that execute each time when a business has updated

The webhook payload structure is:

{
    "event": "BusinessUpdated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessUpdated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "financing",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessUpdated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "api",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}
{
    "event": "BusinessUpdated",
    "uuid": "401c79dd-d38c-4c3a-8edf-1afac5914d2d",
    "first_name": "Jack",
    "last_name": "Jones",
    "name": "Jack Inc.",
    "tin": "961862955",
    "user_status": "Approved|On Hold|Rejected",
    "kyb_status": "Approved|In Review|Failed|null",
    "email": "[email protected]",
    "phone": "2541234567",                    
    "address": {
        "street_address": "20 Elmora Ave",
        "additional_address": "",
        "city": "Elizabeth",
        "state": "NJ",
        "country": "US",
        "zip": "07202"
    },
    "business_owners": [],
    "financing_credit_balance": null,
    "source": "financing",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-06-10 14:15:54",
    "updated_at": "2023-06-10 14:15:54"
}

Refund Pending

GrailPay offers a webhook that execute each time when refund request has been created.

The webhook payload structure is:

{
    "event": "RefundPending",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundPending",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Capture Started

GrailPay offers a webhook that execute each time when refund request has been started and Debit ACH has been initiated from payee's or processor's bank account.

Note:

  • For individual payouts, GrailPay will create a debit ACH from the payee or processor for each refund request.
  • For batch payouts, GrailPay will create a debit ACH from the processor for all refund requests of the day.
  • In both cases, this webhook will be initiated for each refund request.

The webhook payload structure is:

{
    "event": "RefundCaptureStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_CAPTURE_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundCaptureStarted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_CAPTURE_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Capture Completed

GrailPay offers a webhook that execute each time when Debit ACH has been completed from payee's or processor's bank account.

The webhook payload structure is:

{
    "event": "RefundCaptureCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundCaptureCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Capture Failed

GrailPay offers a webhook that execute each time when Debit ACH has been failed from payee's or processor's bank account.

The webhook payload structure is:

{
    "event": "RefundCaptureFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_FAILED",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "failure_reason": "Account closed",
    "failure_code": "R02",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundCaptureFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_FAILED",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "failure_reason": "Account closed",
    "failure_code": "R02",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Payout Pending

GrailPay offers a webhook that execute each time when Credit ACH has been initiated to payer's bank account.

The webhook payload structure is:

{
    "event": "RefundPayoutPending",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundPayoutPending",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_ACH_PENDING",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Payout Completed

GrailPay offers a webhook that execute each time when refund has been completed and fund has been sent to payer's bank account.

The webhook payload structure is:

{
    "event": "RefundPayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_COMPLETE",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundPayoutCompleted",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_COMPLETE",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Refund Payout Failed

GrailPay offers a webhook that execute each time when Credit ACH has been failed to payer's bank account.

The webhook payload structure is:

{
    "event": "RefundPayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_FAILED",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "failure_reason": "Account closed",
    "failure_code": "R02",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}
{
    "event": "RefundPayoutFailed",
    "uuid": "b5c337d8-d886-11ed-afa1-0242ac120002",
    "transaction_uuid": "7049f46f-8502-402e-952b-b29ad5ec8a55",
    "amount": 12000,
    "status": "REFUND_FAILED",
    "payer_uuid": "aae3664b-db18-428c-9a2f-a876f259a7c3",
    "payee_uuid": "54f964d4-7ade-4cd1-a278-4f21cad18a2b",
    "client_reference_id": "",
    "failure_reason": "Account closed",
    "failure_code": "R02",
    "vendor_uuid": "93a0fc84-20e5-4baf-8cde-e32130f535cd",
    "created_at": "2023-04-11 14:25:26",
    "updated_at": "2023-04-11 18:25:26"
}

Batch Refund

GrailPay offers a webhook that execute each time when Debit ACH has been created from processor's bank account.

Note:

  • This webhook will initiated only when processor has been configured to batch payouts.
  • GrailPay will create a debit ACH from the processor for all refund requests of the day.

The webhook payload structure is:

{
    "event": "BatchRefund",
    "uuid": "9bd53fe1-ac74-4e81-b6f2-be88b7c86a68",
    "amount": 10100,
    "created_at": "2024-04-18 01:00:20",
    "updated_at": "2024-04-18 01:00:20"
}

Security

HTTPS

Your webhook URL in the GrailPay sandbox and production environment must be HTTPS or the webhook event will not be sent.

Response and Retry Logic

You must respond with HTTP status code 200 OK to confirm that you have received and successfully processed the webhook request.