Store plugins

Install, paste your private key and webhook secret, done. The customer picks a chain on a hosted checkout page and the order completes from a signed webhook. No code.

Your store currency must be USD. BuxAPI prices invoices in USD and does no currency conversion, so a store selling in euros would charge the euro figure as dollars. All three plugins hide themselves at checkout on any other currency rather than take a payment for the wrong amount.

WooCommerce

WordPress 6.0+, WooCommerce 7.0+

Download

Install

  1. Plugins, Add New, Upload Plugin, choose the zip, activate.
  2. WooCommerce, Settings, Payments, BuxAPI.
  3. Paste your private key and webhook secret, enable, save.

Notes

  • Verifies the key against the API as you save and names the wallet it connected to.
  • Compatible with High-Performance Order Storage.
  • Falls back to asking the API directly on the order-received page if a webhook never arrives.
Size
39 kB
SHA-256
0f29851d9cb58a3dda06e19c1117da4994cb92c4da6f0f4056d579139f208c77

PrestaShop

PrestaShop 1.7 and 8.x

Download

Install

  1. Modules, Module Manager, Upload a module, choose the zip.
  2. Configure, then paste your private key and webhook secret.
  3. Save. The module checks the key immediately.

Notes

  • Adds an "Awaiting crypto payment" order state on install, so a payment in progress does not display to the customer as a failure.
  • The order is created before the customer leaves, so a closed tab after paying is still a reconcilable order.
Size
41 kB
SHA-256
63ca48363a9534616cf725849b3e6d55b98bf97ca6e452397d28bbc94a885c8c

OpenCart

OpenCart 4.x only

Download

Install

  1. Extensions, Installer, Upload, choose the zip.
  2. Extensions, choose Payments, find BuxAPI, install, then edit.
  3. Paste your private key and webhook secret, set the order statuses, enable.

Notes

  • OpenCart 3.x uses an incompatible extension layout and is not supported. A 3.x port is separate work.
  • Creates its own table mapping an invoice to an order, so a webhook resolves to exactly one order.
Size
47 kB
SHA-256
124af3223c01bcf5e9cfd9af8aab5d39cfeb8f915a06dece0eb4ad6c9c81cf34

Before you take a real payment

Put one payment through for the smallest amount the API allows, on a real store, and watch the order move from awaiting payment to paid. That single test exercises the whole path: invoice creation, the checkout page, the on-chain deposit, the webhook and its signature check, and the order transition. Anything broken in that chain shows up in the one place it matters, before a customer finds it.

Check that your webhook URL is reachable from outside. A staging site behind HTTP auth, an IP allowlist, or a security plugin that blocks unknown POSTs will all accept the invoice and then never confirm the order.

Writing your own

The plugins are GPL, so one that is close to what you need is a starting point rather than a dead end. If you are integrating a platform these do not cover, the whole contract is four steps: create an invoice, redirect to checkout_url, verify the webhook signature, move the order. The two apps we run do exactly that, and you can open either one to see the shape before you write anything.

POST /your/webhook
X-Buxapi-Event: invoice.paid
X-Buxapi-Delivery: 90218
X-Buxapi-Signature: t=1786012800,v1=7d3a...

signature = HMAC-SHA256(webhook_secret, "{t}.{raw body}")

Three things to get right, in every language: sign over the raw body, because re-serialising parsed JSON changes the bytes; compare with a constant-time function, because a short-circuiting comparison leaks how much of the signature was correct; and reject timestamps older than a few minutes, because otherwise a captured delivery replays forever. The webhook reference has the rest.

Something else

Magento, Shopify, OpenCart 3.x and custom carts are not covered yet. Tell us what you are on and we will say whether it is on the list or quote you for it.