Quickstart
Sign up, get a key, send a test payment, wire a webhook. About five minutes.
This page takes you from zero to a confirmed test transaction in your dashboard. Every command here works as written. No placeholders.
Prerequisites
- Node.js 18+ or Bun 1.0+ (or any HTTP client) - A wallet with Arc-testnet USDC. See Modes for the faucet.
Create your account
Go to app.strimz.finance/signup. You can sign in with email, an existing wallet, or Google. Strimz uses Privy under the hood. If you sign in with email, Privy creates an embedded Arc wallet for you in the background.
You don't need to do anything with the embedded wallet right now. It's useful later if you want to receive payouts without connecting an external wallet.
Issue a test API key
In the dashboard, open API keys and click Issue key. Pick Test
mode for now. You'll get a string that starts with sk_test_. Copy it
straight away. The full key is only shown once. If you lose it, revoke it
and issue a new one.
Test mode is fully isolated
Test-mode keys can never charge a live customer. Each Strimz deployment runs in one mode, on its own chain and contracts, and refuses keys of the other mode. See Modes.
Install the SDK
If you'd rather not add a Node dependency, skip ahead to step 4 and use plain HTTPS. Every endpoint is documented in the API reference.
Create your first payment session
A payment session is a hosted checkout. You create one on the server
and send your customer to the checkoutUrl it returns. They connect a
wallet, sign the payment, and Strimz fires a webhook once it confirms
on-chain.
Open the printed checkoutUrl in a browser, connect any test-mode wallet
that has Arc-testnet USDC, and complete the payment. Now refresh the
Payment sessions page in your dashboard. You'll see the new session,
and within a few seconds its status moves from created to confirmed.
Where do I get test USDC?
Visit Circle's faucet and choose Arc testnet. You'll need an Arc-testnet RPC in your wallet. See Modes for the URL.
Receive your first webhook
Polling for state changes works but it gets old fast. A webhook
endpoint is the right shape. Register it from your server with the same
StrimzClient. Your secret key never belongs in browser code:
Now wire the receiver. It runs on your server and must verify the raw
request body, exactly as received, before anything parses it. This
Express example uses express.raw so req.body is the unparsed bytes:
verifyWebhookSignature(payload, signatureHeader, secret) is async. It
resolves to { valid: true } or { valid: false, reason }, so always
await it and check result.valid: the unawaited Promise is always
truthy. It does a timing-safe equality check and rejects anything older
than 300 seconds. The signature format and the algorithm
itself are documented on Verifying webhooks.
What you just did
You signed up, issued an API key, created a hosted checkout, took a
real test payment, and wired a webhook to react to it. The production
version of this code is identical. Swap sk_test_ for sk_live_ and
point the webhook at your real URL.

