HOWTO: Debug an incoming deposit (CoinPayments adapter)

You’ve installed the CoinPayments adapter, but now deposits don’t work. Here’s how to debug:

If you have installed the CoinPayments adapter, and deposits to user addresses appear in the CoinPayments interface, but not in WordPress, then this guide is for you.

① Is the adapter correctly configured?

Go to WalletsAdapters and find your coin adapter entry. The “Status” column should indicate “Responding” for this adapter. If not, check the details you entered in WalletsCoinPaymentsAccount Keys.

② Are you sending funds from an external wallet to a user deposit address?

Sending to the cold storage deposit address will not credit the deposit to any user. Only sending to a user deposit address will count as a deposit transaction in the plugin.

③ Was the user deposit address generated by the wallet that you have currently online?

If you have recently changed your wallet back-end, then go to WalletsAdapters and click on Renew deposit addresses. This will mark all existing deposit addresses as “old”. After this, when a user logins to your site, they will be assigned a new deposit address that was generated from the currently connected wallet.

④ Does the plugin know about the transaction?

Go to WalletsTransactions, and look for the deposit. If the deposit is shown, then the deposit was sent successfully from the CoinPayments server to your site.

If the transaction status is “Pending”, then the transaction has not yet been confirmed on the network. It will be confirmed in a few minutes.

If the deposit is not shown in the Transactions screen, your server has not received an IPN message from CoinPayments. There can be several reasons for this:

⑤ Is the IPN endpoint correctly configured in CoinPayments?

Login to CoinPayments, then navigate to Account SettingsMerchant Settings. The IPN Secret should be the same one that you have entered in the plugin, and the IPN URL field should be left blank.

⑥ Is the IPN endpoint blocked by your HTTP server?

Visit the API endpoint using your browser. The endpoint is at https://example.com/?wallets-cp-ipn=1, where example.com is replaced with the domain of your site. You should see the message: “IPN Mode is not HMAC”.

If you are unable to see the message, check your HTTP server settings (.htaccess rules in Apache, .conf files in nginx). The URL must be allowed by your configuration. If unsure, check your server access logs.

⑦ Is the IPN endpoint being blocked by your security or caching plugins?

Also, check any security plugins or server cache plugins that could be interfering. If unsure, deactivate these plugins and check again the URL to see if the message “IPN Mode is not HMAC” is shown. If the message is now shown, this URL must be whitelisted in your security or caching plugins. In at least one instance, a user had the CoinPayments server blocked by a Geo-IP filter.

⑧ Is the IPN endpoint being blocked by a firewall?

This is the most likely issue for most new users. Firewalls can run on a computer that you manage, or on another computer on the network.

All firewalls around your site must allow incoming HTTPS requests from the CoinPayments server at 149.56.241.110 to your server at SSL/TLS port 443. The requests carry the User Agent string “CoinPayments.net IPN Generator“, and are signed with an HMAC HTTP header that the plugin can check for authenticity.

dashed-slug.net

If you are on a managed server, then contact your hosting provider. They will be able to configure their firewall for you, if you give them the above details.

If you are on a computer that you manage yourself, such as a VPS or other unmanaged hosted server, check any local firewalls, such as ufw or iptables.

If you are on a local computer running behind a residential modem: You may be able to test IPNs by configuring your modem with NAT. How you do this will depend on your hardware, so consult its documentation. Incoming TCP ports to 443 must be forwarded to your WordPress computer.

⑨ Is the incoming IPN message received and rejected?

This is unlikely, but it is possible that IPN messages arrive to your host and are being rejected. Visit WalletsCoinPaymentsAccount Settings. (Note: Since version 1.1.2 this information has been moved to the new debugging tab: Wallets -> CoinPayments -> Debuggin’.)

CoinPayments Adapter showing last error coming from remote API

You can see here the last error message and the time it occurred. The error message is retained for 1 hour. Use it to debug IPN messages that go through your firewall but are not accepted for some other reason.

IPN Mode is not HMACUsually occurs when you visit the IPN endpoint with a browser. It means that the request did not originate from the CoinPayments server.
No HMAC signature sent.Unlikely to occur. The requester indicated that this IPN is to be signed with HMAC, but did not provide an HMAC signature.
Error reading POST dataUnlikely to occur. Would only occur if file_get_contents( 'php://input' ) did not succeed to read the POST data.
No or incorrect Merchant ID passedCheck the Merchant ID that you entered in the plugin’s settings. It should match the value given in the CoinPayments platform under Account SettingsMerchant SettingsIPN Secret.
HMAC signature does not matchUnlikely to occur. This would indicate that a fraudulent signature was sent to your server.
Unknown IPN versionThe plugin currently accepts version 1.0 IPN messages. If this message were to occur, it would mean that CoinPayments has progressed to a new version. Please contact me.

⑩ Is there any useful information in CoinPayments IPN history?

If you visit https://www.coinpayments.net/acct-ipn-history, you can check the status of IPNs for your deposits. A successful deposit will look as follows:

CoinPayments platform showing status of IPN messages

IPNs are retried up to a number of 10 times, but you can also retry them manually. You can see details on whether each IPN message was sent. Simply click on the date of each IPN to see details.

⑪ Have you passed KYC verification?

As a money transmitter, the CoinPayments platform is required by law to ask for your details. To pass verification, visit https://www.coinpayments.net/index.php?cmd=acct_kyc. CoinPayments may not give full access to your account if you are not verified.

This guide didn’t help? Maybe I can.

First please try to follow this guide. If you need help, post your issue at the support forum for the CoinPayments adapter. Let me know what you have checked and what you found. You can also contact me by email.

Comments:0

Leave a Reply

Your email address will not be published. Required fields are marked *