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 Checkout 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 |
redirect_urls | object | No | Custom redirect URLs after payment. See Redirect URLs. |
redirect_urls.success_url | string | Conditional | URL to redirect customer to after successful payment. Required if redirect_urls is provided. |
redirect_urls.failure_url | string | Conditional | URL to redirect customer to after failed payment. Required if redirect_urls is provided. |
Amount format: Use minor units (cents).
1000 = €10.00, 5000 = €50.00. This is the same format used by Stripe and the Embedded Flow.Redirect URLs
By default, after payment customers are redirected to a Quidkey-hosted thank you or failure page. To send customers back to your own site, provide custom redirect URLs at creation time.| Parameter | Description |
|---|---|
status | success or failed |
payment_reference | The payment reference from the link |
order_id | Your order ID (if provided at creation) |
Webhooks still fire regardless of redirect URL configuration. Custom redirects only affect where the customer’s browser is sent. Your backend still receives the webhook notification as normal. See After Payment for webhook details.
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.
Next Steps
Checkout Experience
See what your customers see when they open a payment link
After Payment
Track status, handle webhooks, and manage your links
API Reference
Full endpoint documentation with interactive playground
Overview
Hosted Checkout overview and lifecycle