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

# Verify virtual account status

> Check the payment status of a virtual account collection.

Use this endpoint to confirm whether a customer has completed payment for a virtual account collection.

<Info>
  Webhooks should be your primary source of truth. Use this endpoint for manual checks, retries, and dashboard reconciliation.
</Info>

## Endpoint

```http theme={null}
GET /v1/collections/virtual-accounts/{reference}/status
```

## Headers

```http theme={null}
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxx
Content-Type: application/json
```

## Path parameters

| Parameter   | Type   | Required | Description                             |
| ----------- | ------ | -------- | --------------------------------------- |
| `reference` | string | Yes      | The Pasteaza virtual account reference. |

## Example request

```bash theme={null}
curl https://api.oyapasteaza.com/v1/collections/virtual-accounts/pstv_01JABCXYZ/status \
  -X GET \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json"
```

## Successful response

```json theme={null}
{
  "status": true,
  "message": "Virtual account status retrieved successfully.",
  "data": {
    "reference": "pstv_01JABCXYZ",
    "merchantReference": "ORDER_12345",
    "accountNumber": "6020009141",
    "accountName": "John Doe",
    "bankCode": "999240",
    "bankName": "SafeHaven MFB",
    "amount": 500000,
    "amountPaid": 500000,
    "currency": "NGN",
    "status": "PAID",
    "expiresAt": "2026-06-11T14:30:00.000Z",
    "paidAt": "2026-06-11T14:12:09.000Z",
    "createdAt": "2026-06-11T13:45:00.000Z",
    "updatedAt": "2026-06-11T14:12:09.000Z",
    "payments": []
  }
}
```

## Possible statuses

| Status      | Description                                                                                                  |
| ----------- | ------------------------------------------------------------------------------------------------------------ |
| `PENDING`   | Virtual account record has been initialized.                                                                 |
| `ACTIVE`    | Virtual account has been created and can receive payment. Newly created accounts usually return this status. |
| `PAID`      | Payment has been received and confirmed.                                                                     |
| `EXPIRED`   | Virtual account expired before payment was received.                                                         |
| `CANCELLED` | Virtual account was cancelled.                                                                               |
| `FAILED`    | Payment could not be completed or confirmed.                                                                 |

## How to use this endpoint

<Steps>
  <Step title="Find the reference">
    Store the virtual account reference when you create the account.
  </Step>

  <Step title="Send the request">
    Call the status endpoint with the reference in the URL path.
  </Step>

  <Step title="Inspect the response">
    Check `data.status` and the payment timestamps in the response body.
  </Step>

  <Step title="Sync your records">
    Update your dashboard or order state after you confirm the payment.
  </Step>
</Steps>

## Best practices

* Use webhooks as your primary confirmation method.
* Use this endpoint for manual verification or dashboard syncing.
* Check `data.status` before treating a payment as successful.
* Store the `reference` and `merchantReference` in your database.

## Related guides

<CardGroup cols={2}>
  <Card title="Create virtual account" icon="plus" href="/collections/virtual-accounts/create-virtual-account">
    Create a temporary virtual account for collecting a bank transfer.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/getting-started/webhooks">
    Receive real-time payment notifications from Pasteaza.
  </Card>
</CardGroup>
