AR
Hosting billing

Crypto payments for Paymenter

A gateway extension for Paymenter, the open-source hosting billing panel. The client picks SnapEX Pay on an unpaid invoice and pays in USDT on TRC20, ERC20 or BEP20, or other coins offered on the SnapEX Pay page. A signed webhook records the payment and the Paymenter invoice becomes Paid.

Download the module

Free. Version 1.0.0.

What it does

  • A native Paymenter v1 gateway extension that shows up under Admin → Gateways.
  • Webhooks are verified with HMAC-SHA256 and a 5-minute window, and the invoice is read back from the SnapEX Pay API before any payment is recorded.
  • Payments are recorded once: a repeated webhook does not add a second transaction. The amount credited is exactly what was billed, in the invoice currency.
  • Several Paymenter sites can share one SnapEX Pay account; each site only settles its own invoices.
  • Test mode with test invoices confirmed without real money; test payments are ignored while the gateway is live. A fixed USD rate for shops that do not bill in USD.

Install

  1. Unpack the archive and put its folder into Paymenter as extensions/Gateways/SnapexPay/ (so that SnapexPay.php and routes.php are inside; the name must match the class). With the Docker image use /app/extensions/Gateways/SnapexPay.
  2. If the gateway does not show up, run composer dump-autoload -o and php artisan optimize:clear.
  3. In Paymenter go to Admin → Gateways → New, pick SnapEX Pay and paste the API key (scopes invoices.read, invoices.write) from the SnapEX Pay cabinet.
  4. In the cabinet add a webhook endpoint https://<your-paymenter>/extensions/snapexpay/webhook subscribed to invoice.* (at least invoice.paid), and paste the whsec_… secret into Webhook secret.
  5. Set Environment to test, pay an invoice and confirm the test payment on the SnapEX Pay page; the invoice should become Paid. Then switch back to live.

Settings

API keyFrom the SnapEX Pay cabinet → API keys, scopes invoices.read and invoices.write.
Webhook secretThe whsec_… secret of the webhook endpoint. Unsigned or wrongly signed webhooks are rejected.
Network fee paid bymerchant: the client pays the invoice amount. customer: the network fee is added on top.
Payment window, minutes1–1440, default 60.
USD per 1 invoice currency1 if Paymenter bills in USD; for EUR at 1.08 USD enter 1.08.
Environmentlive or test.

Questions

The gateway is not listed in Admin → Gateways.

Check the path extensions/Gateways/SnapexPay/SnapexPay.php (case-sensitive) and that the web server can read it, then run composer dump-autoload -o && php artisan optimize:clear.

The client paid but the invoice is still unpaid.

Check the webhook deliveries in the SnapEX Pay cabinet. 400 invalid signature means the secret does not match or the server clock is off; not_paid means the payment is not confirmed yet and the webhook will come again.

The client paid less than the invoice amount.

Partially paid invoices are not credited automatically. Check the payment in the SnapEX Pay cabinet and add the transaction in Paymenter by hand.

Can several Paymenter sites use one SnapEX Pay account?

Yes. Each site only settles its own invoices (they are tagged with a hash of APP_URL).

Ready to accept crypto?

Create a merchant account, get an API key and connect the module. 1% per payment, no monthly fee.