Build
Build payment flows in under 30 lines.
Issue invoices, verify receipts, and trigger cashouts from your backend. The SDK handles auth, retries, and BigInt serialization. The sandbox boots without credentials.
Quickstart
Create your first invoice.
Install the SDK or call the REST endpoint directly. Either way you get back a hosted payment URL you can send to your customer. The response shape is the same.
invoices.createreturnshostedUrlin < 200ms.- Customer pays in USDC on Arc. We mint a Stenn-Proof receipt and POST
invoice.paidto your webhook URL. - Verify the signature with
verifyKlaroSignatureand you’re done.
import { Klaro } from "@klaro/sdk";
const klaro = new Klaro({
apiKey: process.env.KLARO_KEY,
network: "arc-testnet",
});
const invoice = await klaro.invoices.create({
amount: 4_200_00, // cents
currency: "USD",
receiveAs: "USDC", // settled in USDC on Arc
customer: { email: "client@example.com" },
lineItems: [
{ description: "Week 17 sprint", amount: 4_200_00 },
],
}, { idempotencyKey: crypto.randomUUID() });
console.log(invoice.hostedUrl);
// → https://i.klaro.so/cl7-d3-m0Show cURL equivalent
curl -X POST https://api.klaro.so/v1/invoices \
-H "Authorization: Bearer $KLARO_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": 420000,
"currency": "USD",
"receiveAs": "USDC",
"customer": { "email": "client@example.com" },
"lineItems": [
{ "description": "Week 17 sprint", "amount": 420000 }
]
}'Everything you need
REST, webhooks, SDK, sandbox.
REST API
Create invoices, trigger cashouts, verify receipts. JSON in, JSON out. Versioned, idempotent, rate-limited. OpenAPI 3.1 spec at /api/openapi.
Webhooks
Real-time delivery with HMAC signatures, automatic retries with exponential back-off, and a dead-letter queue you can replay from the dashboard.
TypeScript SDK
@klaro/sdk wraps every endpoint with typed responses, automatic retry on idempotent calls, and BigInt-safe serialization for USDC amounts.
Sandbox
The app boots without environment variables. Every external surface (Circle, Resend, MoonPay, Sumsub) falls back to a labelled simulated mode.
Boring infrastructure
Auth, idempotency, retries — handled.
Auth, per request.
API keys are scoped per environment. Rotate without downtime. Every key carries an audit trail of every call it made.
Idempotency, by default.
Pass an idempotency key on any POST. We dedupe for 24 hours and return the original response. Safe to retry on network failure.
Retries, with budget.
Webhook deliveries retry on a 1m / 5m / 30m / 4h / 24h schedule. After 5 failures the event lands in the DLQ and surfaces in your dashboard.
Read the reference
Three places to dig deeper.
Ready to build
Open a workspace, mint a key, ship an invoice.
Sign in with Google or email. Generate a testnet API key from the settings screen. Send your first invoice in the next ten minutes.
Issue your first
invoice in 90 seconds.
No credit check. No US bank required. No waitlist. Klaro testnet is free for everyone. Sign up with Google or email, plug in your ERP, issue your first invoice in 90 seconds.
- Testnet simulation clearly labelled
- Security audit planned
- WCAG 2.1 AA target