Skip to main content
Create a payment link in one API call, then share the URL with your customer via any channel.

Prerequisites

  • A Quidkey merchant account with client_id and client_secret
  • An active access token (see Authentication)

Step 1: Authenticate

Get an access token using your credentials.
curl -X POST 'https://core.quidkey.com/api/v1/oauth2/token' \
  -H 'Content-Type: application/json' \
  -d '{
    "client_id": "your-client-id",
    "client_secret": "your-client-secret"
  }'
Call POST /api/v1/payment-links with the payment details.
curl -X POST 'https://core.quidkey.com/api/v1/payment-links' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "order": {
      "amount": 5000,
      "currency": "EUR",
      "payment_reference": "INV-2024-001"
    }
  }'

Response

{
  "success": true,
  "data": {
    "link_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "payment_link_url": "https://core.quidkey.com/payment-link/a1b2c3d4e5f6...",
    "expires_at": "2024-04-07T12:00:00.000Z",
    "status": "active"
  }
}
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.
Send the payment_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
When the customer clicks the link, they’ll see a Quidkey-hosted checkout page where they can complete the payment. See Checkout Experience for details.

Request Body Reference

FieldTypeRequiredDescription
order.amountintegerYesAmount in minor units (cents). 5000 = €50.00
order.currencystringYesISO 4217 currency code (e.g., EUR, GBP)
order.payment_referencestringYesUp to 18 characters. Appears on the customer’s bank statement.
order.order_idstringNoYour internal order identifier for reconciliation
order.localestringNoBCP-47 locale tag (e.g., en, pt, es). Default: en
merchant_idstringNoRequired for Partner authentication. UUID of the target merchant.
metadataobjectNoArbitrary 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.
By default, payment links are single-use — they transition to USED after a customer completes payment. You can also create reusable links that stay active for multiple payments.
Link type configuration (single_use vs reusable) is currently set at the system level. Contact support if you need reusable links for your use case (e.g., donation pages, recurring invoices).
Payment links expire after 7 days by default. The expiry timestamp is returned in the expires_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