No. You only need to use the countryCode, currency, and paymentMethodCode values relevant to the market you're selling in. We'll tell you which ones apply to you.
Most merchants who want a fully branded checkout use the API option. Merchants who want the fastest integration use H5.
Authorization header formatted exactly as Bearer YOUR_API_KEY?merchantOrderId unique? Reusing an order ID will be rejected.The expiry time is returned in paymentInfo.expiredTime on the create-payment response. After this time, the customer will need a new payment request.
Webhooks are usually near-instant but can occasionally be delayed. As a fallback, poll GET /api/payments/status?merchantOrderId=... a few minutes after creating the payment. If the status is still PENDING after an extended period, treat the order as unpaid and follow up with your customer.
paidAmount sometimes different from amount?amount is what you requested. paidAmount is what the customer actually sent — some payment methods allow the customer to send a slightly different amount, so always confirm order completion using paidAmount, not amount.
Every webhook includes an X-Payfac-Signature header — an HMAC-SHA256 signature computed using your own API key. Recompute it yourself and compare. See the "Verifying the signature" section of the integration guide for code examples.
Yes — contact us for a sandbox API key. Sandbox transactions don't move real funds.
The old key is invalidated immediately. Update your integration with the new key right away, or your requests will start returning 401 Unauthorized.
If you expect high volume, let us know in advance so we can make sure your account is configured appropriately.
Reach out to your Crownline Global account contact with your merchant ID, the merchantOrderId in question, and a description of what you're seeing.