Create a reusable Pay Link
api-keyx-api-key<token>Your API key: ck_test_... for test mode, ck_live_... for live. Send it with x-api-secret (or Authorization: Bearer ).
x-api-secret?stringRecommended: API secret sent over HTTPS. You may send it as Authorization: Bearer instead. If supplied, x-timestamp and x-signature are not required.
x-timestamp?stringLegacy signed mode: Unix time in milliseconds; maximum clock skew five minutes.
x-signature?stringLegacy signed mode: HMAC-SHA256(secret, timestamp.METHOD.url.idempotencyKey.bodyHash).
x-idempotency-key*string1–128 letters/digits or ._:-. Same key and payload replay for 24 hours; conflicting, in-flight, or expired keys return 409. Never change a key to retry an uncertain payment.
application/json- body
amountMinor?stringMaximum amount for each payment in positive integer minor units. The Pay Link remains reusable while active. Omit to let each payer enter any positive amount.
currency?"NGN"pageName?stringName displayed on the Pay Link. Existing clients may continue sending description instead.
length <= 160description?stringlength <= 160linkNumber?stringMerchant-facing link number. Omit to generate the next LNK number.
length <= 80visibility?string"PUBLIC""PUBLIC""PRIVATE"imageFileId?stringREADY image/jpeg or image/png file uploaded through the business file endpoints.
customerFields?customers?array<>Allowed recipients for a PRIVATE Pay Link. Each entry needs an email address or phone number.
items <= 100customerName?stringlength <= 120customerEmail?stringemailredirectUrl?stringOptional HTTPS destination returned by the public payment-status endpoint after a successful payment.
reference?stringlength <= 80expiresAt?stringMust be in the future. Omit for no expiry.
date-timeapplication/json- response
id*stringenvironment*string"SANDBOX""LIVE"slug*stringstatus*string"ACTIVE""DISABLED""EXPIRED"amountMinor*|Null means the payer chooses an amount.
currency*stringdescription*stringpageName*stringlinkNumber*stringpayCode*stringvisibility*string"PUBLIC""PRIVATE"imageFileId*string|nullcustomerFields*customers*array<>progress*reusable*booleanTrue for standard Pay Links, which accept unlimited payments until disabled or expired. Invoice links are single-use.
customerName*string|nullcustomerEmail*string|nullredirectUrl*|urireference*string|nullexpiresAt*|date-timeviewedAt*|date-timedisabledAt*|date-timecreatedAt*stringdate-timeupdatedAt*stringdate-timecheckoutPath*stringPublic checkout metadata endpoint. A hosted payment page is not included in this backend.
curl -X POST 'https://api.creddot.com/api/v1/payment-links' \ -H 'x-idempotency-key: string' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "string", "environment": "SANDBOX", "slug": "cpl_abc123", "status": "ACTIVE", "amountMinor": "500000", "currency": "NGN", "description": "string", "pageName": "string", "linkNumber": "string", "payCode": "string", "visibility": "PUBLIC", "imageFileId": "string", "customerFields": { "customerName": true, "customerEmail": true, "customerPhone": true, "billingAddress": true, "deliveryAddress": true }, "customers": [ { "fullName": "string", "email": "user@example.com", "phoneNumber": "string" } ], "progress": { "collectedAmountMinor": "2000000", "pendingAmountMinor": "1200000", "totalAmountMinor": "3200000", "percentageCompleted": 62.5, "paymentStatus": "UNPAID", "successfulPayments": 0 }, "reusable": true, "customerName": "string", "customerEmail": "string", "redirectUrl": "http://example.com", "reference": "string", "expiresAt": "2019-08-24T14:15:22Z", "viewedAt": "2019-08-24T14:15:22Z", "disabledAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "checkoutPath": "/api/v1/checkout/payment-links/cpl_abc123"}