Ship payments like product.
One typed surface for issuing, acquiring, and money movement: a Stripe-shaped REST API, typed SDKs, sandbox networks, and webhooks you can replay from any point. Use the API when you want control; a hosted checkout is on the roadmap for going live fast. Same engine underneath.
Build-true, pre-GA — see what runs today
# 1 · authorize: Payrithm composes the scheme message itself
curl https://api.stringio.io/v1/authorize \
-H "Authorization: Bearer sk_live_••••" \
-H "Idempotency-Key: ord_8842" \
-d '{ "merchant_id":"mer_2a9f4b7c", "amount_minor":4200,
"currency":"USD", "capture":false }'
→ 201 { "status": "requires_capture", "rail":"visa_base_i", "stan":"048217" }
# 2 · capture the authorization: settles on the dual ledger
curl https://api.stringio.io/v1/captures \
-H "Authorization: Bearer sk_live_••••" \
-d '{ "authorization":"auth_4f1c…", "amount_minor":4200 }'
→ 201 { "status": "captured", "settles":"cycle_0114" }
# 3 · subscribe: HMAC-signed webhooks, replayable from any point
event: payment.captured → POST https://you.example.com/hooks
SDKs ship for TypeScript · Java · more planned
// generated & fully typed: the same call as the curl above
const auth = await stringio.authorizations.create({
merchant_id: "mer_2a9f4b7c",
amount_minor: 4200, currency: "USD",
capture: false,
}, { idempotencyKey: "ord_8842" });
// auth.status === "requires_capture" · auth.rail === "visa_base_i"
Full control, your checkout
Compose the scheme message yourself, own the UI, and reconcile against the same ledger of record. Typed SDKs, idempotency on every write, and sandbox networks to test against before you touch a rail.
One page, every method
A hosted checkout that presents cards and wallets on one page. Pick a method and pay in one place. Go live with little build, and PCI scope stays at the platform edge. On the roadmap — the API runs today.
Typed SDKs
generated from the schema
sandbox networks to test against
Idempotent by default
Idempotency-Key on every write
safe retries · exactly-once intent
Webhooks
create · test-fire · replay
from any point in the stream
Room to add rails
new methods & drop-in plugins
light up in the same integration
Build-true, pre-GA. The API refuses, never clamps: fail-closed on every guard, so a bad request errors instead of silently settling wrong.