# Verify a payment

> Returns a payment by your reference or its GTW-… id, with its current status.

`GET https://api.paybeta.ng/api/v1/payments/{reference}`

Authentication: `P-API-KEY` header.

Use your `reference` or Paybeta's id (`GTW-…`). While the payment is still open, Paybeta checks with the processor first, so this is always the current state.

**Always verify before you deliver**: after your [webhook](/checkout-webhooks) (its signature covers only `data.reference`), after the customer is redirected back to your site, or after the popup's `onSuccess`.

| `status` | Meaning |
| --- | --- |
| `pending` | Not paid yet. |
| `successful` | Paid. `amount_paid` and `paid_at` are set. |
| `failed` | Expired after a declined attempt. See `failure_reason`. |
| `expired` | Expired without being paid. |

## Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `reference` | string | yes | Your reference, or the payment's `id` (`GTW-…`). |

## Response 200: Paid

```json
{
  "status": "successful",
  "message": "Request processed successfully.",
  "data": {
    "id": "GTW-K3J7Q2M9X4ZP8L1N5R6T0V2B3C4D",
    "reference": "ORDER-1001",
    "status": "successful",
    "amount": 5000,
    "fee": 70,
    "pass_charge": false,
    "charge_amount": 5000,
    "amount_paid": 5000,
    "merchant_amount": 4930,
    "mode": "test",
    "livemode": false,
    "currency": "NGN",
    "channel": "card",
    "description": "Pro plan · monthly",
    "customer": {
      "email": "ada@example.com",
      "name": "Ada Lovelace",
      "phone": "08012345678"
    },
    "metadata": {
      "cart_id": 9
    },
    "recurring": false,
    "authorization": null,
    "checkout_url": "https://checkout.paybeta.ng/pay/GTW-K3J7Q2M9X4ZP8L1N5R6T0V2B3C4D",
    "provider": "squad",
    "provider_reference": "PBG261030122646ABCDEF1234",
    "failure_reason": null,
    "expires_at": "2026-10-30T13:00:00+01:00",
    "paid_at": "2026-10-30T12:04:10+01:00",
    "created_at": "2026-10-30T12:00:00+01:00"
  }
}
```

## Response 404: Not found

```json
{
  "status": "failed",
  "message": "Payment not found",
  "data": null
}
```
