Skip to main content

CoinGate

This plugin adds cryptocurrency payments with CoinGate to your HikaShop store. At the end of the checkout your customer is sent to the CoinGate invoice, pays with Bitcoin, Ethereum, Litecoin, USDC or another coin, and comes back to your shop. CoinGate, a payment institution licensed in the EU under the MiCA regulation, converts the payment at once and pays you in euros, dollars or pounds: you never hold a coin unless you want to, and the price of the coin can't move against you.

What your customers see
  • A "Cryptocurrencies (CoinGate)" payment method at the checkout (you can rename it).
  • The CoinGate invoice, priced in the currency of the order, where they choose their coin and network, pay from their wallet or exchange, and return to your shop.
  • CoinGate's billing details form, which the EU Travel Rule requires before a crypto payment: with the plugin it comes already filled in with their name, country and email.
Before you start, on CoinGate
  • 1) Open a merchant account at coingate.com. To be paid in euros, dollars or pounds, CoinGate has to verify your business first (its "KYB" check); until then you can only keep the coins.
  • 2) In your CoinGate dashboard, Integrations, API Management, create an API app. Leave its IP whitelist empty. Its callback format can be JSON or form: the plugin reads both.
  • 3) Copy the app's Auth Token: it is the only key the plugin needs.
  • Nothing else to set on CoinGate: the plugin sends the address of your shop with each order, so there is no notification URL to paste in the dashboard.
  • To test first, do the same on sandbox.coingate.com, CoinGate's separate test site with its own account and token.
Installation
  • 1) Download the CoinGate plugin from our website, install it on your Joomla or WordPress website and enable it.
  • 2) Go to HikaShop > System > Payment methods, click New and choose CoinGate.
  • 3) Paste the auth token, choose the settlement currency, publish the method and save. Saving checks the token with CoinGate and tells you at once if it is wrong.
The settings, one by one
  • Auth token: the token of your CoinGate API app. A token made on coingate.com takes real payments; one made on sandbox.coingate.com only works with Use Sandbox set to Yes. If you paste a token of the wrong site, saving says which site it belongs to.
  • Use Sandbox: Yes to test on sandbox.coingate.com, where an invoice is paid or refused with a "Mark as Paid" or "Mark as Invalid" button instead of real coins. Set it back to No, with your live token, to take real payments.
  • Callback URL: shown for information, nothing to type. It is the address of your shop that CoinGate calls when an order is paid, expires or is refunded. It must answer without a redirection, as CoinGate does not follow them: if your site redirects http to https, or to another domain, make sure the address shown is the final one.
  • Settlement currency: what CoinGate pays you.
    • Order currency (recommended): the currency of the order when CoinGate pays out in it (EUR, USD, GBP), the fallback currency below for the others.
    • EUR, USD or GBP: always that currency, whatever the currency of the order.
    • Keep the coin paid, or one coin (BTC, ETH, LTC, BCH, USDC, EURC, USDT): you receive crypto. The price risk and its tax treatment are then yours.
  • Fallback settlement currency: with Order currency, what you are paid in for an order in a currency CoinGate does not pay out in. A shop selling in złoty or Swiss francs gets invoices in PLN or CHF and is paid in the fallback currency (EUR by default).
  • Send the customer's details to CoinGate: Yes sends the name, email, country and company of the billing address with the order, so CoinGate's Travel Rule form is filled in for the customer. With No, the customer types it all on the invoice. Mention this sharing in your privacy policy.
  • Birth date field: CoinGate's form also asks a private customer's date of birth, and HikaShop has no such field of its own. If your checkout asks for it with a custom field (a date picker or text field of the address or of the user), choose it here and it is sent too. Leave None otherwise: the customer types it on the invoice.
  • Debug: Yes writes every exchange with CoinGate in the payment log of HikaShop (its file is set in System > Configuration, Main, Files, Payment log file). Useful when something goes wrong; leave it off otherwise.
  • Confirming status: the status of an order once the customer has sent the coins and the network is confirming the transaction, usually a few minutes. Pending by default.
  • Invalid status: the status of an order whose invoice expired (after 20 minutes without payment), was cancelled by the customer, or whose payment the network or CoinGate's checks refused. Cancelled by default.
  • Verified status: the status of a paid order, the one that sends the confirmation email to the customer. Confirmed by default.
  • Refunded status: the status an order moves to when CoinGate tells it was fully refunded. Moving an order to this status yourself does not refund it on CoinGate: see Refunds below.
  • In the generic settings, the Currency restriction can limit the method to some currencies. Without it, the method shows for every currency CoinGate prices in (about 40, from EUR, USD and GBP to PLN, CHF, CAD, AUD, JPY and more).
How an order moves
  • The customer pays: the order goes to the confirming status, then to the verified status when the network has confirmed the payment, with the coin and amount paid and the amount you receive in its history.
  • The order is updated both by CoinGate's callback and when the customer comes back to your shop, whichever comes first, and only once. A customer who closes the invoice without coming back still gets the order confirmed.
  • Every update is read back from CoinGate itself and checked against the order (its number, amount and currency): a forged callback or a tampered return URL changes nothing.
  • A payment that reaches CoinGate after the invoice expired still confirms the order, and its history says so.
Refunds
  • A crypto refund needs the customer's wallet address, which only CoinGate asks for. So refunds are made from the order in your CoinGate dashboard (Sales, Orders): CoinGate asks the customer by email to confirm the address, then sends the coins.
  • The order in HikaShop follows by itself: a partial refund is written in its history with the amount refunded so far, a full refund moves it to the refunded status.
Testing
  • Make an account on sandbox.coingate.com, an API app there, paste its token and set Use Sandbox to Yes.
  • Place an order with the CoinGate method, choose a coin on the invoice, fill in the billing form with a real-looking email (CoinGate refuses test domains such as example.test), then click "Mark as Paid" or "Mark as Invalid" under the payment address.
  • Your test site must be reachable from the internet for CoinGate's callbacks; on a local site, coming back to the shop from the invoice updates the order too.
Use
  • This plugin is compatible with all the editions of HikaShop
  • Requires a CoinGate merchant account, verified by CoinGate to be paid in euros, dollars or pounds
  • Requires the PHP cURL extension
  • Requires a website reachable from the internet so CoinGate can send it its callbacks
  • In English and French
  • Compatible with PHP 7.4 minimum
  • Compatible with Joomla and WordPress
  • No limit of time
  • No limit of use
Changelog

1.0.0

  • Initial release with cryptocurrency payments on the CoinGate invoice, settlement in the order currency, euros, dollars, pounds or coins, the EU Travel Rule details prefilled, the confirmation of the order by the callback of CoinGate and by the return of the customer, refunds made in CoinGate followed by the order, and CoinGate's sandbox.
€ 40,00
CoinGate
The add to cart button will appear once you select the values above
Type
Payment plugin

Access to updates included for 4 years

A tax rate (between 17% and 27% based on your country) will be added if your address is in the European Union and that you don't provide a valid VAT number or if your address is in France as per the European Union law.