Checkout Problems
| Message / Symptom | Check |
|---|---|
| Secret API Key is missing | Save the intended Test or Live Secret Key in the activated gateway. |
| IDR invoices only | Use an IDR invoice; this gateway does not convert unsupported currencies. |
| Return URL must use HTTPS | Review the WHMCS System URL, reverse proxy and certificate. |
| Unable to start the Xendit payment | Inspect the Payment Session API Error log for the HTTP code and provider error. Check credentials, permissions, card eligibility and connectivity. |
| Invalid payment session response | The module did not receive the expected session ID or payment URL. Retain a sanitized response and contact support. |
| Gateway absent from checkout | Check activation, Show on Order Form, module paths and applicable WHMCS settings. |
Payment Succeeded But Invoice Is Unpaid
- Compare the invoice number with the Payment Session reference and payment ID.
- Check whether the Payment Session completed webhook reached the exact callback URL for this installation.
- Review WHMCS’s Gateway Log and Xendit’s delivery record. A browser return is insufficient.
- Look for verification failures, identity mismatch, currency mismatch or amount mismatch. Check whether the invoice balance changed after checkout began.
- Reconcile the provider’s verified payment against WHMCS before replaying an event or recording a manual payment. Avoid crediting the same payment twice.
Callback Responses
| Status / Log | Meaning And Action |
|---|---|
| 405 Method Not Allowed | GET is rejected; callbacks must use POST. |
| 400 Invalid JSON / reference / mismatch | Check the event format and real session reference. A fabricated dashboard sample may not map to an invoice. |
| 500 Gateway not configured | Activate and configure the gateway before accepting notifications. |
| 500 Verification failed | Check API credentials, network access and the provider response; do not disable verification to force acceptance. |
| Amount Mismatch | Compare the verified amount with the current invoice balance, including fractional amounts or other payments. |
| Invoice Already Paid / duplicate transaction | Inspect the transaction record before taking action; do not add another payment. |
| 200 Ignored / Not completed | Acknowledged event without a payment update. Review the event and verified state. |
Collect Useful Evidence
Send HERZA the module version, WHMCS/PHP versions, test/live environment, time and timezone, sanitized error and relevant invoice/session/payment identifiers through a private support channel. Remove API keys, card details, customer personal data and unrelated log entries. Logs can contain payment and customer details; never publish them unredacted.