Get Started
Sandbox-first quickstart for the Amboss Payments API. Create an environment, mint a key, receive a test payment, and listen for webhooks in minutes.
Sandbox-first onboarding for the Amboss Payments API. You'll create a sandbox environment, mint an API key, receive a test payment, and listen for the corresponding webhook — all before touching a live node.
Every step below can also be done from the dashboard at app.amboss.tech/pay. Use the UI to bootstrap; use the API for everything you want to automate.
Prefer TypeScript? The SDK quickstart walks the same flow with a typed client instead of raw GraphQL.
Using a coding agent? Paste the Prompt for Agents into it and let it wire the integration up for you.
Create an account
Sign up at app.amboss.tech. The first account on a team is the master account — the only role that can create environments and mint API keys.
Create a sandbox environment
Click "Create Sandbox Environment" on the dashboard, or call the API. Sandbox auto-provisions wallets for every available asset and supports deterministic test transitions via metadata flags.
See Environments for the API mutation and the amb_sandbox_behavior test hook.
Create a wallet (if needed)
Sandbox auto-creates wallets for every asset; in live you create them on demand. One wallet = one asset = one balance.
See Wallets for the create mutation, asset discovery, and amount precision rules.
Mint a service API key
Generate a key scoped to your sandbox environment with PAYMENTS: WRITE, WALLETS: WRITE, and WEBHOOKS: WRITE permissions. The plaintext_key is returned once — save it immediately.
All subsequent API calls use the x-api-key header:
x-api-key: amb_test_PvDaoBz6TXhuMKxk0VkckiPUTX9BTSDyCT2Pqc_vgOwSee API Keys for permissions and rotation.
These scopes cover receiving, sending in sandbox, and dashboard-style flows. They do not cover a live send from the SDK or raw API — that needs a separate wallet-scoped credentials key with WALLETS: READ + WALLET_CREDENTIALS: READ.
Receive a test payment
Call create_receive with metadata.amb_sandbox_behavior = "complete". The invoice auto-settles after a short delay and fires payment.completed:
await client.request(CREATE_RECEIVE, {
input: {
wallet_id: walletId,
amount: "100000",
metadata: JSON.stringify({ amb_sandbox_behavior: "complete" }),
},
});amb_sandbox_behavior defaults to expire when omitted, so the flag above is what makes this invoice auto-settle instead of timing out. See Receive Payments for the full input reference.
Listen for the webhook
Register an endpoint with payment.completed in event_filters. In sandbox you can point it at a temporary URL via webhook.site to inspect the payload, or use the dashboard's "Generate test URL" button.
Dedupe on the envelope id — webhooks deliver at-least-once.
See Webhooks for the payload shape, signature verification, and retry behaviour.
Try sending
Use @ambosstech/payments and call transactions.send with a password and
either a BOLT11 invoice or Lightning Address. The SDK uses the password
locally to decrypt the admin macaroon and call the node in production. It also
requires the password in sandbox, where no node RPC runs, so your test code has
the same call shape as production. Any non-empty sandbox value, such as
Password123, works because it is not used. Set metadata.amb_sandbox_behavior
to drive the sandbox terminal state.
See Send Payments for an SDK example, the complete payment flow, and network constraints.
Go live
When the sandbox flow works end-to-end, click "Go Live" in the dashboard. KYB is collected via Stripe; afterwards you can create a LIVE environment, mint amb_live_… keys, and create wallets that route real Lightning traffic.
Prefer a guided walkthrough? Request a demo.
Next Steps
Payments
GraphQL API for sending, receiving, and settling payments in USDT, USDC, and BTC over Lightning. Sub-second settlement, near-zero fees, 24/7, no chargebacks.
Environments
Environments scope wallets, API keys, and webhook endpoints in the Amboss Payments API. Use sandbox first, then promote to production.