Redirect Handling
After bank authentication, the customer is redirected to the URL you specified when creating the payment request:- Success — redirected to
success_url - Failure / Cancel — redirected to
failure_url
Webhook Setup
Register and Obtain a Signing Secret
Webhook Payload
Quidkey sends a Stripe-style envelope so existing tooling can be reused.Fee information is only included for successful payments (
status: "succeeded"). Failed or cancelled payments do not include fees.HTTP Headers
| Header | Purpose |
|---|---|
X-Signature | t=<unix-ts>,v1=<hex-hmac> |
X-Timestamp | Unix epoch seconds |
X-Client-Id | Your client_id |
"${timestamp}.${raw_body}", keyed by your webhook signing secret.
Verify Signatures
TheX-Signature header lets you confirm that the webhook came from Quidkey and that the payload was not tampered with.
- Using Stripe Helper
- Custom Implementation
Process Webhook Events
Retry behavior: Quidkey retries for up to 3 days with exponential backoff until your endpoint returns any
2xx status. Events may be delivered out of order or duplicated — de-duplicate using the top-level id field.Fee Handling
Quidkey automatically calculates and applies fees for successful transactions. Fee information is included in webhook payloads for merchant accounting and billing reconciliation. Fee types:- Percentage fees — based on transaction amount (e.g., 1.5% of €100 = €1.50)
- Fixed fees — flat rate per transaction (e.g., €1.00 per transaction)
- Currency-specific — fees are calculated in the same currency as the transaction
fees_breakdown array contains:
QA Checklist Before Going Live
Security & Configuration
Security & Configuration
- Serve checkout over HTTPS (wallets such as Apple Pay require it)
- Use live Stripe keys in production mode (if using Stripe alongside)
- Ask Quidkey for your production merchant_id and iframe URL
- Store webhook secret in secure vault
User Experience
User Experience
- Verify that only one payment method can be selected at any time
- Confirm purchase button enables/disables correctly with bank selection
- Test post-purchase redirect flows for success and failure
- Verify dynamic height adjustments work smoothly
Payment Updates
Payment Updates
- Verify amount updates work before payment initiation
- Confirm updates are blocked after customer selects a bank
- Test error handling for expired tokens
- Ensure iframe refreshes correctly after updates
Webhooks & Fees
Webhooks & Fees
- Verify webhook signature validation works
- Test webhook retry and idempotency handling
- Verify successful payments include fee information
- Ensure your system correctly stores fee breakdown data