Crypto payments — how it works
Driftstack accepts crypto for every paid tier via NowPayments. This page walks through the full lifecycle of a crypto order so you know what to expect, what state your order is in at each step, and where to turn if something looks stuck.
Supported coins
NowPayments converts your incoming payment to a stable settlement currency on our side. From your end, the supported coins for the customer-facing checkout are:
- Bitcoin (BTC) — main-net only
- Ethereum (ETH) — main-net only
- USDC / USDT — ERC-20, TRC-20, and BEP-20 networks
- Litecoin (LTC), Bitcoin Cash (BCH), Dogecoin (DOGE), Polygon (MATIC)
The full live list is available in the checkout dropdown; the enumeration there is the source of truth.
The order lifecycle
Every crypto order moves through this state machine. The same states surface in the Billing → Crypto orders view in the dashboard.
| State | What it means | What you can do |
|---|---|---|
pending | Order minted. We're waiting to see any payment activity on-chain. | Pay the address, or cancel the order if you've changed your mind. |
confirming | Payment seen on the network. Awaiting block confirmations. | Wait. Cancellation now requires support so we can reconcile your funds. |
partial | An on-chain payment arrived but the amount is below the invoice. Common when the exchange rate moved between quote + payment. | Contact support — we'll arrange a top-up. Crypto payments are non-refundable, so partials are resolved by completing the payment, not by sending it back. |
paid | All confirmations received. Your tier is upgraded. | Download the receipt (JSON / text / PDF formats — see below). |
failed | Payment timed out, was refunded by NowPayments, or otherwise won't settle. | Open a fresh order from the pricing page. Contact support if funds left your wallet. |
cancelled | You cancelled before any on-chain activity. Terminal. | Open a fresh order whenever you're ready. |
Step-by-step
1. Pick a tier
Either from the /pricing page or from the
dashboard's billing view. Click "Pay with crypto" instead of
the Stripe Checkout button. We mint an order in
pending state immediately.
2. Pay the address
You'll be shown a deposit address + an exact amount in the coin
you picked. The address is single-use — only send the exact
amount, and only on the displayed network (sending USDC-ERC20
to a USDC-TRC20 address loses funds). The dashboard's order
view polls every five seconds so you'll see the transition to
confirming within seconds of the network seeing
your transaction.
3. Wait for confirmations
Required confirmations vary by coin: Bitcoin needs 2 blocks
(about 20 minutes), Ethereum needs 12 blocks (about 3 minutes),
USDC / USDT on Tron is a few seconds. The order stays in
confirming until the threshold is reached.
4. Order moves to paid
Your tier upgrade is applied the moment the order transitions
to paid. A receipt email is sent to the account
address. A server-side crypto.order.paid event is
emitted but is not yet on the subscribable webhook event list —
see
/docs/webhooks-crypto-events
and poll
GET /v1/billing/crypto-orders/<order_id> in
the meantime.
5. Download a receipt
Three formats are available for every paid order via the API:
# JSON envelope — programmatic consumers
GET /v1/billing/crypto-orders/:id/receipt
# Plain-text — cron jobs / curl pipelines
GET /v1/billing/crypto-orders/:id/receipt.txt
# PDF — for accounting / archival
GET /v1/billing/crypto-orders/:id/receipt.pdf If something looks stuck
The most common "stuck" cases:
- You see a pending order but nothing on-chain yet. Confirm the transaction broadcast went out from your wallet. Network mempool latency can be a few minutes on busy chains.
- The block explorer shows your payment but the
order is still
pending. NowPayments is waiting for the confirmation threshold. Wait the documented block count. partialstate. Open a support ticket; we'll arrange a top-up. Crypto payments are non-refundable, so partials are resolved by completing the payment, not by sending the existing crypto back.- Stuck more than 24 hours. The order will
auto-transition to
failed; open a new order or contact support for reconciliation.
Refunds + cancellation
Crypto payments at Driftstack are non-refundable. You may cancel your subscription at any time — cancellation stops future billing periods — but the current billing period is not refunded. See /legal/refunds for the full policy. If you specifically need a cash-refund mechanism, the card-billing path (Stripe) is the right channel.
Tax + invoicing
The PDF receipt is the canonical artefact for your accountant. For VAT-registered EU customers we issue a separate VAT invoice on request — include your VAT id when you contact billing@.
Related docs
- Crypto payments — integration guide — end-to-end walkthrough for an engineer integrating against the API.
- Pricing — tier comparison.
- Billing FAQ — proration, trial → paid, card-vs-crypto.
- Crypto webhook
events — payload reference for
crypto.order.paidandcrypto.order.failed. - Polling vs webhooks — choosing between push and pull for state changes, plus the recommended hybrid pattern.
- Idempotency keys — safe retries on checkout.
- API quickstart — get an API key once your order is paid.
Need help?
[email protected]. For payment-status questions, include the order_id we minted at checkout — that's what we look up first.