Stripe-like REST API for Bitcoin Lightning and USD payments. Send, receive, and exchange BTC/USD; Lightning invoices settle instantly with low fees.
- 01Lightning invoicing
- 02USD ↔ BTC programmatic exchange
- 03instant low-fee payouts
- 04creator tipping / streaming sats
- 05cash-to-Bitcoin payment rails
- # REST client; no official JS SDK — use fetch/axios
- pnpm add axios
| Variable | Scope | Description |
|---|---|---|
| STRIKE_API_KEY | Server | Strike API key from your developer dashboard. |
| STRIKE_WEBHOOK_SECRET | Server | Signing secret used to verify webhook payloads. |
Use Strike to issue Lightning invoices and move USD/BTC. All requests are REST against `https://api.strike.me/v1` with header `Authorization: Bearer {STRIKE_API_KEY}`. Create an invoice via `POST /invoices` `{ amount: { amount: '10.00', currency: 'USD' }, description, correlationId }`, then `POST /invoices/{invoiceId}/quote` to materialize a Lightning BOLT11 (`lnInvoice`) — render it as a QR. Subscribe to the `invoice.updated` webhook and verify the `X-Webhook-Signature` HMAC against `STRIKE_WEBHOOK_SECRET` before crediting the user. Send Lightning out via `POST /payment-quotes/lightning` then confirm the quote.
- ⚑Strike is custodial and KYC-gated for many products — your end-users may need Strike accounts depending on the flow; design for non-Strike-payer Lightning invoicing where possible.
- ⚑API access is geographically restricted (US + select markets); reject out-of-region users early or you'll see opaque 4xx errors.
- ⚑Lightning quotes expire fast (~60s); always re-quote before final confirmation or the BTC/USD price will move under you.
- ⚑Lightning-network success depends on routing liquidity Strike manages — large invoices can fail; handle `payment.failed` and offer retry/on-chain fallback.
- ⚑Webhook signatures are HMAC-SHA256 over the raw body — parse the request body as a buffer, not after JSON re-serialization, or signatures will mismatch.
- ⚑Sandbox keys exist but feature parity with production is partial; some flows can only be exercised against the live API.