Skip to main content
Create a payment request to get a payment_token that you’ll use to render the bank selection iframe on your checkout page.

Prerequisites

  • A Quidkey merchant account with client_id and client_secret
  • HTTPS enabled on your checkout page

Sign Up for Credentials

Create your merchant account to get your client_id and client_secret.

Step 1: Authenticate

Get an access token using your credentials. The token is valid for 15 minutes.
What you’ll receive:
  • access_token: include as Authorization: Bearer <token> in subsequent calls
  • refresh_token: call /oauth2/refresh to get a new access token without re-posting credentials
  • expires_in: token validity in seconds (typically 900 = 15 minutes)
See the Authentication API reference for complete details and interactive playground.

Step 2: Create a Payment Request

Use the access token to create a payment request. This should be called once the customer has confirmed the final price at checkout.
Create this request after the customer confirms price and options. The payment token has a 15-minute TTL.
You’ll receive a payment_token (valid for 15 minutes) to embed in your iframe. See the Create Payment Request API for the complete specification.

Request Body Reference

Amount format: Use minor units (cents). 1000 = €10.00, 2550 = €25.50. This matches Stripe’s format exactly.
Include a rewards object to display loyalty rewards during checkout:
  • extra_rewards: reward points for this transaction
  • total_rewards: total points customer will receive (optional)
  • description: text describing the reward (max 255 characters, optional)
Rewards are distributed only on successful payment completion via webhook.
Leave this unset for normal use. When you omit webhook_endpoints, the payment’s webhooks follow your merchant resolution order: your default webhook_url, then your default endpoint, then your single active endpoint. Most integrations never set this field.To send a payment’s webhooks to specific named endpoints instead (for platforms paying out on behalf of several businesses), add webhook_endpoints to the request body with up to 10 endpoint names:
The webhook is fanned out to every named endpoint, each signed with its own secret. A reference that is unknown, disabled, not owned by you, or whose test/live scope does not match the payment returns 400 UNKNOWN_WEBHOOK_ENDPOINT, and the payment is not created.

Update a Payment Request (Optional)

After creating a payment request, you can update the amount and/or rewards before the customer initiates payment with their bank. This is useful for dynamic shipping costs, discount codes, or cart modifications.
  • Amount updates are only allowed while payment status is pending
  • Once the customer clicks a bank and starts payment, only rewards can be updated
  • Amount updates are blocked after payment initiation

Next Steps

Embed the Checkout

Add the bank selection iframe to your checkout page

After Payment

Handle webhooks, verify signatures, and process fees

API Reference

Full endpoint documentation with interactive playground

Embedded Flow Overview

Back to the overview and integration flow diagram