Online Payments Troubleshooting
This guide covers the most common issues encountered during myPOS online payment integration — from error codes and callback failures to WooCommerce plugin problems and advanced feature activation.
Error Code Reference
| Error | Cause | Resolution |
|---|---|---|
| Error 25 | Required currency not added to store; store URL mismatch; wrong credentials for this domain | Add the currency in mypos.com → Stores → Settings; verify Approved URL matches the domain |
| Error 1 / E_MISSING_REQ_PARAMS | Required parameters missing (e.g. CartItems); test mode still enabled in plugin | Check all required fields; disable "Enable test mode" in plugin Production Options |
| Error 2 | Signature validation failure | Verify key generation process; see Signature Errors section below |
| Error 3 | Wrong Key Index | Always use the last listed Key Index in your store Integration settings |
| Error 5 / E_INVALID_PARAMS | Wrong environment (sandbox creds against production); quantity is float instead of integer | Confirm correct endpoint for your credentials; ensure quantity is an integer |
| INVALID_SIGNATURE | Special characters like & in product names; key mismatch after reinstall | Escape or remove special characters; regenerate keys if persistent |
| E_STORE_RESTRICTED | /checkout in Approved Links; store disabled | Remove path from Approved Links (root domain only); enable store in account |
| E_SIGNATURE_FAILED | Request not from HTTPS with a public IP | Ensure requests originate from HTTPS and a public-facing IP; follow authentication docs |
| E_IPC_ERROR | Wrong API endpoint (test credentials against production endpoint, or vice versa) | Use the correct endpoint for your environment — see Testing & Demo guide |
URL_Notify (Callback) Requirements
Your URL_Notify endpoint is called by myPOS after every payment attempt. It must return:
HTTP 200 OK with body exactly OKWhat happens when the callback fails:
A failed URL_Notify triggers an automatic IPCPurchaseRollback. The transaction is reversed and the customer's card is not charged — even if the checkout page showed success.
Common causes of callback failures:
Debugging steps:
- Check your server access logs for the incoming POST request from myPOS.
- Inspect the raw response body your server returns — not just the HTTP status code.
- If you suspect Cloudflare blocking, temporarily pause Cloudflare protection and retry to confirm.
- Whitelist myPOS IP address:
34.65.222.69
Amount & Parameter Formatting
Incorrect formatting of monetary values is a common cause of payment failures:
- All monetary values (unit price, shipping, discounts, fees) must be rounded to exactly 2 decimal places.
- The total amount must equal quantity × price, both rounded to 2 decimal places.
- The
Amountparameter must be a double (e.g.23.45) — not a string, not a formatted value with extra characters. - The
quantityparameter must be an integer (e.g.1,2) — not a float.
Signature Errors
If you receive INVALID_SIGNATURE or E_SIGNATURE_FAILED:
Characters like & in product or article names can break signature generation. Escape them or remove them temporarily to confirm.
Remove old keys from both the plugin settings and your myPOS account. Generate a new configuration. Enter the new keys — ensure only Store ID and Wallet Number are present in the plugin before entering new keys.
All payment requests must originate from an HTTPS endpoint with a publicly routable IP address. localhost or private IPs will fail signature verification.
WooCommerce Plugin Issues
Configuration checklist
/checkout or other pathsBlank checkout page
If the checkout page displays a blank screen, a conflicting plugin is the most likely cause. Deactivate all third-party plugins except the myPOS plugin and WooCommerce, then test. Re-enable plugins one by one to identify the conflict. Known problematic plugins include TranslatePress and some caching plugins.
Apple Pay & Google Pay
Apple Pay and Google Pay are included by default in the WooCommerce plugin — no additional configuration is required. These only work in the production environment (isSandbox=false); they cannot be tested in the sandbox.
Transaction Rollbacks & Missing Payments
If payments appear successful in the checkout UI but do not appear in your myPOS account:
- Check the URL_Notify endpoint first — a failed callback causes automatic reversal.
- Check the correct store — in the myPOS admin portal, confirm you are viewing the statement for the right store, not a different one.
- Check for PHP errors — any warning or deprecation notice in the response body will cause the callback to fail.
Customer claims funds were withdrawn but order is cancelled
When a transaction is unsuccessful (due to URL_Notify failure), the payment is automatically reversed. Funds are returned to the customer's account. The reversal may take 1–3 business days to appear on the customer's statement depending on their bank.
3DS & Card Declines
| Response Code | Meaning | Action |
|---|---|---|
| 3DS decline | Incorrect information entered during 3DS challenge, or bank declined | Customer must retry with correct details; bank-side decision |
| 57 | Transaction not permitted to issuer/cardholder | Contact card-issuing bank; bank-side restriction |
| 65 | Exceeds withdrawal count limit | Contact card-issuing bank; bank-side restriction |
These are bank-side decisions — myPOS cannot override card decline reasons.
Pre-Authorization
IPCPreAuthorization is not enabled by default. The feature must be explicitly activated on the merchant's account by the myPOS team.
To request activation: contact myPOS support with your account details.
Key rules once activated:
- Pre-authorizations made via the PHP SDK or Checkout API must be completed or cancelled through the same API. Do not mix API pre-auths with terminal pre-auths.
- The maximum period between authorization and capture depends on your business type (typically up to 30 days).
- If a
COMPLETE_PREAUTHfails, implement an automatic retry mechanism. - If a pre-authorization cannot be completed, use the
CANCEL_PREAUTHmethod to release the held funds.
Recurring Payments
Recurring payments are not enabled by default — contact myPOS support to activate them for your account.
Implementation steps once activated:
- Use
IPCPurchasewithCardTokenRequest=2to store the card and obtain a token. - Use
IPCIAPurchasefor subsequent charges using the stored token. - Use small test amounts during card tokenization to avoid unnecessary bank declines.
Split Payments & IPCSendMoney
myPOS does not support automatic split of a single payment into multiple accounts.
Workaround: Use separate myPOS accounts. After funds settle, use IPCSendMoney to transfer the partner's share. Note:
IPCSendMoneymust be activated by myPOS support — it is not available by default.- The transfer process can be automated via the myPOS API.
IPCReversal Common Mistakes
IPCReversal requires these parameters in addition to the order ID:
sid— Store IDkeyindex— Key Index
Both are commonly omitted, causing the reversal to fail with a generic error.
If the reversal fails:
- Error 113 ("Operation Already Processed") → use
IPCRefundinstead. - "Insufficient Funds" error → use
IPCRefundinstead.
EEA Restriction
myPOS payment processing is restricted to EEA (European Economic Area) countries. Transactions initiated from outside the EEA may be blocked by automated security systems.
If you are a developer testing from outside the EEA and payments are being declined without a clear error, try using a VPN set to a European country. This is a testing workaround only — production traffic should originate from within the EEA.