Payment Links
Create and manage reusable payment links.
Payment Links
Payment links are the fastest way to accept payments without writing checkout-flow code. Create a link, share the URL, and get paid.
Headers
| Header | Required | Value |
|---|---|---|
Authorization | Yes | Bearer sk_test_... (test) or Bearer sk_live_... (live) — see Authentication |
How It Works
- Create: Define a name, amount (optional), and description — via the dashboard or the API below.
- Share: Build the checkout URL from the returned
slug:https://checkout.uveruspayments.com/pay/{slug}. - Collect: Customers open the link, enter their details (and amount, if variable), and pay.
If you don't specify an amount when creating a link, the customer is prompted to enter one at checkout — useful for donations, custom invoices, or tipping.
Create a Payment Link
POST /api/v1/payment-linksRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Internal name for the link |
amount | integer | No | Fixed amount in kobo. Omit to let the customer choose. |
description | string | No | Shown to the customer at checkout |
currency | string | No | Currency code. Defaults to NGN. |
type | string | No | "payment" (default), "product", "subscription", or "donation" |
slug | string | No | Custom URL slug (3–64 chars, lowercase letters/digits/dashes). Auto-generated if omitted. |
redirectUrl | string | No | URL to redirect the customer to after payment |
expiresAt | string | No | ISO 8601 date after which the link stops accepting payments |
isOneTime | boolean | No | If true, the link deactivates itself after a single successful payment |
collectPhone | boolean | No | Require a phone number at checkout |
collectFullName | boolean | No | Require the customer's full name at checkout |
products | array | No | For type: "product" links: [{ productId, quantity }] — see Storefront Products |
vatPercent | number | No | VAT percentage to apply, overriding your account default |
Example Request
curl -X POST "https://api.uveruspayments.com/api/v1/payment-links" \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Project Alpha Payment",
"amount": 500000,
"description": "Payment for software services"
}'Example Response
{
"id": "uuid",
"merchantId": "uuid",
"slug": "project-alpha-payment",
"name": "Project Alpha Payment",
"description": "Payment for software services",
"amount": 500000,
"currency": "NGN",
"mode": "test",
"isActive": true,
"vatPercent": null,
"uses": 0,
"totalRevenue": 0,
"redirectUrl": null,
"expiresAt": null,
"type": "payment",
"isOneTime": false,
"collectPhone": false,
"collectFullName": false,
"products": [],
"createdAt": "2026-08-27T10:00:00.000Z",
"updatedAt": "2026-08-27T10:00:00.000Z"
}The checkout URL for this link is https://checkout.uveruspayments.com/pay/project-alpha-payment — it isn't returned as a separate field, build it from slug.
For a type: "product" link, products is populated with each linked product's full details (price, variants, tax, etc.) rather than being empty.
List Payment Links
GET /api/v1/payment-linksReturns every payment link for the authenticated merchant, in the same shape as above. This endpoint is not paginated.
Example Request
curl -X GET "https://api.uveruspayments.com/api/v1/payment-links" \
-H "Authorization: Bearer sk_test_..."