Create a payment link
const url = 'https://api.paywithnablr.com/v1/payment-links';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"Jollof rice tray","description":"Serves 10. Delivery in Lagos only.","amount":2500000,"collect":["phone","address"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.paywithnablr.com/v1/payment-links \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "Jollof rice tray", "description": "Serves 10. Delivery in Lagos only.", "amount": 2500000, "collect": [ "phone", "address" ] }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
A fixed amount in kobo, at least ₦100 (10000). null or omitted lets the customer choose (₦100 to ₦10,000,000).
Turn the link off after its first successful payment.
Where to send the customer after paying (the payment’s callback_url).
Extra details to ask the customer for.
Example
{ "name": "Jollof rice tray", "description": "Serves 10. Delivery in Lagos only.", "amount": 2500000, "collect": [ "phone", "address" ]}Responses
Section titled “Responses”The link. Share url.
object
object
The page to share.
null: the customer chooses.
Succeeded payments through the link.
Their total, in kobo.
object
This request’s id, also in the X-Request-Id header.
Example
{ "data": { "id": "lnk_01M3XXC0D1E2F3G4H5J6K7M8N9", "object": "payment_link", "slug": "jollof-rice-tray-k3m9", "url": "https://pay.paywithnablr.com/l/jollof-rice-tray-k3m9", "name": "Jollof rice tray", "currency": "NGN", "collect": [ "phone" ], "mode": "test" }}Headers
Section titled “Headers”The link’s URL, /v1/payment-links/{id}.
VALIDATION_FAILED: a field is wrong; details says which. A value
of the wrong JSON type has detail code type and a message saying
what to send (Send a whole number., Send text., Send true or false., Send an object., Send a list.).
MALFORMED_REQUEST: the body is not valid JSON.
object
object
A sentence for a person. Safe to show to your user.
The code in words, for example Validation failed.
A quotable reference for some failures.
One entry per field that is wrong.
object
For example required, invalid, format, length, unknown, type.
Extra context, such as retry_after_seconds on RATE_LIMITED.
object
object
This request’s id, also in the X-Request-Id header.
Example
{ "error": { "message": "Send a positive amount in minor units (500000 = ₦5,000.00).", "code": "VALIDATION_FAILED", "title": "Validation failed", "details": [ { "field": "amount", "code": "invalid", "message": "Send a positive amount in minor units (500000 = ₦5,000.00)." } ] }, "meta": { "request_id": "01a0fbd4-3b18-7181-9149-8dbcae100085" }}UNAUTHENTICATED: no Authorization: Bearer header. The message
says what to send: your secret key (Bearer sk_test_… or
sk_live_…).
INVALID_API_KEY: the key is unknown, malformed or revoked.
object
object
A sentence for a person. Safe to show to your user.
The code in words, for example Validation failed.
A quotable reference for some failures.
One entry per field that is wrong.
object
For example required, invalid, format, length, unknown, type.
Extra context, such as retry_after_seconds on RATE_LIMITED.
object
object
This request’s id, also in the X-Request-Id header.
Example
{ "error": { "message": "The API key provided is not valid.", "code": "INVALID_API_KEY", "title": "Invalid API key" }, "meta": { "request_id": "01a0fbd4-3b68-75e0-bd33-0b950ddc99a5" }}SECRET_KEY_REQUIRED: you sent a publishable key.
LIVE_MODE_NOT_ENABLED: a live key before your business is verified.
ACCOUNT_RESTRICTED: the account is suspended.
object
object
A sentence for a person. Safe to show to your user.
The code in words, for example Validation failed.
A quotable reference for some failures.
One entry per field that is wrong.
object
For example required, invalid, format, length, unknown, type.
Extra context, such as retry_after_seconds on RATE_LIMITED.
object
object
This request’s id, also in the X-Request-Id header.
Example
{ "error": { "message": "This request needs your secret key. Publishable keys can only be used from a checkout.", "code": "SECRET_KEY_REQUIRED", "title": "Secret key required" }, "meta": { "request_id": "01a0fbd4-3b68-75e0-bd33-0b950ddc99a5" }}RATE_LIMITED: wait Retry-After seconds, then retry.
object
object
A sentence for a person. Safe to show to your user.
The code in words, for example Validation failed.
A quotable reference for some failures.
One entry per field that is wrong.
object
For example required, invalid, format, length, unknown, type.
Extra context, such as retry_after_seconds on RATE_LIMITED.
object
object
This request’s id, also in the X-Request-Id header.
Example
{ "error": { "message": "Too many attempts. Please wait a moment and try again.", "code": "RATE_LIMITED", "title": "Rate limited", "meta": { "retry_after_seconds": 12 } }, "meta": { "request_id": "01a0fbd4-3b68-75e0-bd33-0b950ddc99a5" }}Headers
Section titled “Headers”Seconds to wait.
Unix time when a request will be allowed again.