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

# Collect Payments

> Generate a one-time branded payment link for a specific amount

Instead of a standing virtual account, generate a payment link for one specific amount. It shows your customer a dedicated, one-time bank account number to transfer into — on your own branded page, not a third-party site. The account only accepts the exact amount and expires after 30 minutes.

<Note>
  Collect Payments is enabled per-merchant. If it isn't enabled on your account yet, these endpoints return `SERVICE_NOT_ENABLED` — contact support to request access.
</Note>

## Create Payment Link

**POST** `/api/v1/checkout/create`

<ParamField body="amount" type="number" required>
  Amount in Naira (minimum ₦100).
</ParamField>

<ParamField body="description" type="string">
  Shown to the customer on the payment page. Max 200 characters.
</ParamField>

<ParamField body="customer_name" type="string" />

<ParamField body="customer_email" type="string" />

<ParamField body="callback_url" type="string">
  Where your customer is redirected after paying.
</ParamField>

```bash theme={null}
curl -X POST "https://www.abcmpay.com/api/v1/checkout/create" \
  -H "X-Api-Key: your-public-key" \
  -H "X-Api-Secret: your-secret-key" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 5000,
    "description": "Invoice #123",
    "customer_email": "customer@example.com"
}'
```

```json Response theme={null}
{
    "success": true,
    "reference": "CHK_20260215120000",
    "order_no": "MI2053495351264129024",
    "payment_link": "https://www.abcmpay.com/pay/CHK_20260215120000",
    "checkout_url": "https://gateway.example.com/checkout/abc123",
    "amount": 5000,
    "currency": "NGN",
    "status": "pending"
}
```

<Tip>
  Send your customer to `payment_link` — it's our own branded page (shows your business name, the amount, and hands off to the processor). `checkout_url` is kept only for backward compatibility with older integrations and points directly at the payment processor — new integrations should use `payment_link`.
</Tip>

<Info>
  This endpoint doesn't wrap its response in a `data` object like the other endpoints — the fields are at the top level, alongside `success`.
</Info>

We notify your [webhook](/api-reference/webhooks) and credit your wallet automatically once payment succeeds — polling status below is optional, useful mainly if you want to reflect it in your own UI immediately.

***

## Check Payment Status

**GET** `/api/v1/checkout/status?reference={reference}`

Check a payment link's status using the `reference` returned when you created it.

```bash theme={null}
curl -X GET "https://www.abcmpay.com/api/v1/checkout/status?reference=CHK_20260215120000" \
  -H "X-Api-Key: your-public-key" \
  -H "X-Api-Secret: your-secret-key"
```

```json Response theme={null}
{
    "success": true,
    "reference": "CHK_20260215120000",
    "order_no": "MI2053495351264129024",
    "status": "success",
    "amount": 5000,
    "paid_at": "2026-02-15T12:14:02Z"
}
```

`paid_at` is `null` until the payment completes.
