> ## Documentation Index
> Fetch the complete documentation index at: https://docs.centryos.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Transaction Webhook Payload

> Fetch the current webhook payload for a withdrawal transaction by its ID. Use this to manually sync your system if a webhook delivery was missed.

## Endpoint

* **Method**: `GET`
* **URL**: `{{LIQUIDITY_URL}}/v1/transactions/:transactionId/webhook-payload`
* **Auth**: Bearer `{{accessToken}}` (merchant token)

## Path Parameters

| Parameter       | Type   | Required | Description                        |
| --------------- | ------ | -------- | ---------------------------------- |
| `transactionId` | string | Yes      | UUID of the transaction to look up |

## Headers

| Header          | Required | Description                      |
| --------------- | -------- | -------------------------------- |
| `Authorization` | Yes      | `Bearer <merchant access token>` |

## Request

```bash theme={null}
curl -X GET "{{LIQUIDITY_URL}}/v1/transactions/7794112b-094e-443d-8454-7192aee10557/webhook-payload" \
  -H "Authorization: Bearer {{accessToken}}"
```

## Response (200)

Returns the same payload structure that is sent to your registered webhook URL, reflecting the current state of the transaction.

```json theme={null}
{
  "success": true,
  "data": {
    "eventType": "WITHDRAWAL",
    "status": "SUCCESS",
    "payload": {
      "description": "Payment sent",
      "method": "BANK_TRANSFER",
      "transactionId": "7794112b-094e-443d-8454-7192aee10557",
      "walletId": "44805633-c437-4140-a312-0e626c6feb19",
      "entityId": "9b5e1e96-5796-4648-94d4-62253728291e",
      "entityType": "USER",
      "summary": "Payment sent",
      "entry": "DEBIT",
      "amount": 20.87,
      "currency": "USD",
      "timestamp": 1771347650000,
      "feeCharged": "2.04174",
      "reason": ""
    }
  }
}
```

### Response Fields

| Field            | Type   | Description                                                                     |
| ---------------- | ------ | ------------------------------------------------------------------------------- |
| `data.eventType` | string | Always `WITHDRAWAL`                                                             |
| `data.status`    | string | Current transaction status. See [statuses](#transaction-statuses) below.        |
| `data.payload`   | object | Full webhook payload identical to what would be sent to your registered webhook |

### Transaction Statuses

| Status               | Meaning                                                             |
| -------------------- | ------------------------------------------------------------------- |
| `PENDING`            | Withdrawal initiated, not yet submitted to payment network          |
| `PROCESSING_PAY_OUT` | ACH or RTP accepted by the network; awaiting final settlement       |
| `SUCCESS`            | Payout settled; funds delivered to recipient                        |
| `FAILED`             | Payout failed; see `payload.reason` for a merchant-safe explanation |

### Reason Values (on FAILED)

| `payload.reason`                                                    | Scenario                                      |
| ------------------------------------------------------------------- | --------------------------------------------- |
| `Recipient account not found.`                                      | Recipient's bank account could not be located |
| `Duplicate transaction detected.`                                   | Duplicate payout was submitted                |
| `Transaction declined for compliance reasons.`                      | Declined due to compliance or business rules  |
| `Payment could not be processed.`                                   | General processing failure                    |
| `Your payment could not be processed. Please try a different card.` | Card-specific failure                         |
| `Payment was cancelled.`                                            | Payout was cancelled                          |

## Error Responses

```json theme={null}
{
  "success": false,
  "message": "<error detail>",
  "fatal": true
}
```

| Situation                                            | HTTP | Message                                                   |
| ---------------------------------------------------- | ---- | --------------------------------------------------------- |
| Missing or invalid token                             | 401  | `Unauthorized`                                            |
| Transaction not found or belongs to another merchant | 404  | `Transaction not found`                                   |
| Transaction is not a withdrawal/payout               | 422  | `Webhook payload not available for this transaction type` |

## Notes

* Only returns transactions belonging to the authenticated merchant. Requesting another merchant's transaction returns `404`.
* The `timestamp` in the response is the time the request was made, not when the original webhook fired.
* Only supported for withdrawal/payout transactions (`WITHDRAWAL`, `PAYMENT`, `PAYOUT` flow types).
