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

# Introduction

> Collect card and bank transfer payments in Nigeria with the Vestrapay API.

Vestrapay is a payments API. You initialize a transaction on your server, send the customer to checkout, then confirm the payment with a webhook and a verify call.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="zap" href="/quickstart">
    Initialize a payment and open hosted checkout.
  </Card>

  <Card title="API keys" icon="key" href="/keys">
    Test vs live keys, hosts, and how to authenticate.
  </Card>

  <Card title="Pay with card" icon="credit-card" href="/payments/card">
    Hosted fields for the card number, with 3-D Secure when the issuer requires it.
  </Card>

  <Card title="Pay with transfer" icon="building-2" href="/payments/transfer">
    Show a dedicated virtual account and confirm when the transfer lands.
  </Card>
</CardGroup>

## Integration checklist

1. Create a merchant account and copy a test secret key from **Settings → Developers**.
2. Initialize from your backend. Store the reference on the order.
3. Redirect the customer to the checkout URL (or build a custom pay screen with the access code).
4. Register a webhook for `payment.completed`, `payment.failed`, and `payment.abandoned`.
5. On webhook and on your callback URL, call verify. Fulfill when status is `success` and the amount matches.
6. Repeat on live keys after KYB. See [Go live](/payments/go-live).

## How a payment works

<Steps>
  <Step title="Initialize on your server">
    POST `/v1/payment/initialize` with your secret key. You get a reference, an access code, and a checkout URL.
  </Step>

  <Step title="Customer pays">
    Redirect them to the checkout URL, or drive card / transfer yourself with the access code.
  </Step>

  <Step title="Confirm">
    We POST `payment.completed` to your webhook and send the browser to your callback URL. Then [verify](/payments/verify).
  </Step>
</Steps>

## Amounts

Amounts are naira as strings. One hundred naira is `"100.00"`. Currency defaults to NGN.
