How a payment moves
Follow one payment down the wire.
One API call, traced from your app to a settled account. Everything on this wire is the part you don't have to build.
01 — Your app
One call. Any rail.
Send an amount, two accounts and rail: "fastest". The request looks the same for ACH, wire, RTP, USDC and cards.
SDKs for Node, Python, Ruby, PHP and Java
pay.tsconst payment = await ow.payments.create({ amount: 1840000, // $18,400.00 currency: "usd", from: "acct_ops_4410", to: "cpty_contractor_7702", rail: "fastest", idempotency_key: "inv_2291", });201 Created02 — Compliance
Checked before it moves.
KYC and KYB, sanctions screening, AML rules and limits run inline on every payment. Our compliance team runs the program; you keep the audit trail.
SOC 2 · Built-in KYC and AML
Pre-flight checkspay_9Hk2vQx7Lm- Sender KYBBusiness verified6ms
- Recipient KYCIdentity verified5ms
- Sanctions screenOFAC and watchlists clear11ms
- AML rulesVelocity and pattern, 0 flags9ms
- LimitsWithin daily limit2ms
Cleared to move5 of 5 passed · 33ms03 — Routing
Routed to the fastest open rail.
Omniwire picks RTP when the receiving bank supports it and falls back to wire or same-day ACH when it doesn't. You never write rail logic.
- ACHSame-day or standardFallback 2
- WireFedwire, same dayFallback 1
- RTPSelectedSeconds, 24/7/365Receiving bank supports RTP
- USDCStablecoin, 24/7When you set currency: usdc
- CardsAccepted worldwideFor card spend and payouts
04 — Settlement
Settled at an insured partner bank.
Funds move through our FDIC-insured sponsor banks, and your ledger updates the moment they land. No bank agreement to negotiate.
Omniwire is not a bank · FDIC-insured partner banks
TransferRTPSettled in 1.8s$18,400.00
FromOperating accountacct_ops_4410−$18,400.00ToContractor payoutcpty_contractor_7702+$18,400.00Created14:02:05.600Cleared14:02:05.633Settled14:02:07.41205 — Back to you
One webhook. Every rail, same shape.
payment.settled arrives with the rail, timing and trace IDs attached, so reconciliation is a join, not a project.
Same event for ACH, wire, RTP, USDC and cards
POST/webhooks/omniwire200 OK{ "type": "payment.settled", "id": "evt_2Pq8sLx4Hd", "data": { "payment": "pay_9Hk2vQx7Lm", "amount": 1840000, "rail": "rtp", "fallbacks_used": 0, "settled_in_ms": 1812, "trace_id": "rtp_20260929_7Qm1" } }Settled
1.8 seconds on the wire.
About three weeks to wire in.That's the whole trip. Everything between your app and the bank is ours to run, audit and keep up.