Skip to main content
Developer Documentation

Accept Bitcoin payments
in 15 minutes.

Coinsnap handles Bitcoin and Lightning end-to-end. Create an invoice, show a QR code, get a webhook when paid. No Bitcoin expertise required.

Hosted checkoutCoinsnap handles the payment page, QR rendering, and rate locking so your app stays focused on the order.
Lightning/BitcoinBy default, invoices can offer both payment methods while your integration still works through one API.
Webhook-first settlementYour backend confirms payment from webhook events instead of unreliable browser redirects.
1Create API key
2Create invoice
3Show QR code
4Handle webhook
QuickstartAccept your first Bitcoin payment in 15 minutes. Copy-paste ready.🏗️Accept Bitcoin PaymentsStep-by-step guide for building a custom payment integration.🔌PluginsReady-made plugins for WooCommerce, Shopify, Shopware, and more.📖API ReferenceInteractive reference for all endpoints.🪝WebhooksVerify events, update orders, and confirm payment server-side.🔗Pay LinksShareable Bitcoin payment links for async checkout and invoicing flows.
Why It Feels Simple

The integration surface stays small.

You do not need to build wallet UX, QR rendering, or exchange-rate logic yourself. Coinsnap takes over the payment surface while your app keeps ownership of order creation, fulfillment, and reconciliation.

Build

Invoice-first integration

Create a Coinsnap invoice from your backend, return the checkout URL, and let Coinsnap handle the Bitcoin payment experience.

Confirm

Deterministic payment status

Use webhook events like Processing, Settled, and Expired to drive order state in your own system.

Ship

Plugin and API paths

Start with WooCommerce or Shopify if you want speed, or use the public API when you need custom flows.

Typical Flow

One backend call in, one webhook out.

The happy path is intentionally boring: your backend creates an invoice, your frontend sends the customer to the hosted checkout, and your webhook marks the order as paid when Coinsnap confirms settlement.

Create invoice
const response = await fetch(
  `https://app.coinsnap.io/api/v1/stores/${storeId}/invoices`,
  {
    method: 'POST',
    headers: {
      'x-api-key': process.env.COINSNAP_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      amount: 49.00,
      currency: 'EUR',
      orderId: 'ORD-2026-1045',
      redirectUrl: 'https://yourapp.com/orders/1045/success',
    }),
  }
);

const invoice = await response.json();
return invoice.checkoutLink;