Frequently Asked Questions

Do I need to handle currencies/countries beyond the one I sell in?

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.

What's the difference between "Create Payment (API)" and "Create Payment (H5)"?

Most merchants who want a fully branded checkout use the API option. Merchants who want the fastest integration use H5.

My payment request was rejected — what should I check first?

  1. Is your Authorization header formatted exactly as Bearer YOUR_API_KEY?
  2. Is merchantOrderId unique? Reusing an order ID will be rejected.
  3. Are all required fields present? (See the field table in the integration guide.)
  4. Has your API key been suspended or regenerated recently?

How long is a payment code/link valid for?

The expiry time is returned in paymentInfo.expiredTime on the create-payment response. After this time, the customer will need a new payment request.

I didn't receive a webhook — what do I do?

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.

Why is 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.

How do I know a webhook really came from Crownline Global and not someone else?

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.

Can I test my integration before going live?

Yes — contact us for a sandbox API key. Sandbox transactions don't move real funds.

What happens if I regenerate my API key?

The old key is invalidated immediately. Update your integration with the new key right away, or your requests will start returning 401 Unauthorized.

Is there a rate limit on API requests?

If you expect high volume, let us know in advance so we can make sure your account is configured appropriately.

Who do I contact if something isn't working?

Reach out to your Crownline Global account contact with your merchant ID, the merchantOrderId in question, and a description of what you're seeing.