Create a new payment intent with QR code for customer to scan and pay. merchant_id is taken from the JWT. POS terminals have a counter_id claim which will be associated with the intent.
Keycloak JWT. Roles: admin (platform admin — can register merchants, act on behalf of any merchant), merchant (dashboard user — scoped to their own merchant_id via user attribute mapper), POS terminals use client credentials flow with merchant_id injected via protocol mapper.
x >= 0.0199.99
"USD"
"Coffee and pastry"
Seconds until expiration (default: 1800)
x >= 601800
POS terminal (counter) that created this intent. When set, the counter's webhook_url is used for delivery if no callback_url is provided.
"c1d2e3f4-a5b6-7890-abcd-ef1234567890"
Merchant's own order or invoice ID. Stored for correlation and returned in webhook payload.
"ORD-12345"
Per-intent webhook override. Takes priority over counter and merchant-level webhooks. Useful for ecommerce flows where each order has its own callback.
"https://shop.example.com/orders/ORD-12345/payment-callback"
Arbitrary JSON object stored with the intent and forwarded verbatim in the webhook payload.
{
"customer_email": "alice@example.com",
"cart_id": "cart-abc123"
}