Prerequisites
- A Quidkey merchant account with
client_idandclient_secret - An active access token (see Authentication)
Step 1: Authenticate
Get an access token using your credentials.Step 2: Create the Payment Link
CallPOST /api/v1/payment-links with the payment details.
Response
Save the
payment_link_url — this is the URL you’ll share with your customer. The token in the URL is only returned once at creation time.Step 3: Share the Link
Send thepayment_link_url to your customer through any channel:
- Email — Include in invoice emails or payment reminders
- SMS — Send a short message with the link
- Messaging apps — WhatsApp, Telegram, or any chat platform
- In-person — Display as text or generate a QR code
Request Body Reference
| Field | Type | Required | Description |
|---|---|---|---|
order.amount | integer | Yes | Amount in minor units (cents). 5000 = €50.00 |
order.currency | string | Yes | ISO 4217 currency code (e.g., EUR, GBP) |
order.payment_reference | string | Yes | Up to 18 characters. Appears on the customer’s bank statement. |
order.order_id | string | No | Your internal order identifier for reconciliation |
order.locale | string | No | BCP-47 locale tag (e.g., en, pt, es). Default: en |
merchant_id | string | No | Required for Partner authentication. UUID of the target merchant. |
metadata | object | No | Arbitrary key-value pairs to attach to the link |
Amount format: Use minor units (cents).
1000 = €10.00, 5000 = €50.00. This is the same format used by Stripe and the Embedded Flow.Link Types
By default, payment links are single-use — they transition toUSED after a customer completes payment. You can also create reusable links that stay active for multiple payments.
Link Expiry
Payment links expire after 7 days by default. The expiry timestamp is returned in theexpires_at field of the creation response.
When a customer opens an expired link, the checkout page displays an expiry message instead of the payment form. See Link Lifecycle for all status transitions.