Multi-tenant regulated money movement infrastructure

Move money on every rail from one integration.

Zenoz is multi-tenant regulated money movement infrastructure with deep integrations into tier-1 processors and banks. Push to a card in seconds, settle cross-border over XRP Ledger or SWIFT, run ACH, RTP and FedNow, deliver cash for pickup, and board merchant accounts — all from one API, one ledger, one dashboard, operating under a PCI-certified card processing environment.

Visa Direct Mastercard Send Visa VPC Ripple · XRPL SWIFT ACH Same-Day ACH Next-Day RTP FedNow Card Cash Pickup Merchant boarding API PCI-certified processing
For developerssandbox · no card required

Watch a payout settle from your terminal in under three minutes.

Coming September 15, 2026

$curl -fsSL https://cloud.zenoz.ai/install.sh | sh

Then zenoz login and zenoz init. Nothing issued here can move real money. See the whole flow ↓

For executives & partners30 minutes

See the rails, the tenancy model and the controls — with your own numbers.

A walkthrough for banks, program managers and platform partners evaluating Zenoz as the gateway under their portfolio.

Live sandbox payout pyt_01JQ8K2 CREATED
RailVisa DirectTenantten_9f3a2c
Visa Direct Mastercard Send Visa VPC Ripple · XRPL SWIFT ACH Same-Day ACH Next-Day Cash Pickup Merchant mer_acme · Acme Zenoz quote · preflight ledger · idempotent screening · limits Recipient rcp_7c21 · •••4242 $25.00
Two-phase by design. Every payout is quoted, then committed with an idempotency key. Re-checked at commit. Limits, screening and balance run again under lock, not just at parse time. One ledger. Card rails settle in about a second in sandbox, Ripple in a few; SWIFT and ACH settle in their network windows; cash pickup is ready for collection at once and cancellable until claimed.
Developer path

Three commands. One settled transaction.

The shell script is a bootstrapper, not a wizard. The browser owns identity. The terminal never sees a password, and it ends in money moving — not in "you have an account."

  1. 01
    Install

    curl -fsSL https://cloud.zenoz.ai/install.sh | sh — verifies SHA-256 against a signed manifest, installs to ~/.local/bin, never uses sudo, never edits your dotfiles. Under 250 readable lines, because you'll open it first.

  2. 02
    Log in

    zenoz login opens a browser tab. OAuth device flow (RFC 8628), the same mechanism behind gh and stripe. Your sandbox tenant links to this machine; credentials land in ~/.zenoz/credentials.toml, mode 0600.

  3. 03
    Init

    zenoz init asks two things — rail and language — then sends a $25.00 sandbox payout, renders every status transition, and writes a quickstart containing the exact request that just settled, with your key already in it.

zsh — zenoz

        
Executive path

One gateway under your whole portfolio.

Zenoz is built for the partner who sits above merchants: a bank, a program manager, a platform. Every tenant gets its own merchants, keys, limits and ledger — and you see all of it.

Multi-tenant from the ground up

Tenants own merchants; merchants own recipients and keys. Every transaction row carries merchant and tenant attribution, so portfolio questions narrow to one merchant without switching context.

Tier-1 rails, one contract

Visa Direct, Mastercard Send and Visa VPC for push-to-card; Ripple over XRPL and SWIFT wires for cross-border; ACH same-day and next-day, RTP and FedNow for domestic. Rail mix is a query, not a re-integration.

Controls that live server-side

Capability flags per merchant, per-transaction and velocity limits per rail, sanctions screening on every recipient, and a two-phase quote/commit so nothing moves on a single call.

Merchant account boarding by API

Submit a merchant application from your own onboarding flow — MCC, average ticket, expected volume, owners, settlement account — and get back an application ID, an auto-approve or manual-review decision, and a MID when approved. Webhooks tell you when the status changes.

Cash pickup management

Send a payout to be collected in cash at an agent location. Track it from ready to claimed, extend or cancel before collection, and let unclaimed funds return to the merchant ledger automatically on expiry.

PCI-certified card processing

Zenoz operates under a PCI DSS–certified card processing environment. Card data for push-to-card payouts and acquiring stays inside that boundary, so merchants and partners integrate without taking on the cardholder-data scope themselves.

Sandbox that can't hurt you

Self-serve credentials are sandbox-scoped and enforced by the token itself. Production keys are minted in the dashboard, behind KYB and an owner-role check.

Ask it in plain English

The Zenoz MCP server answers "what's stuck in manual review?" and "what's our effective rate on RTP?" straight from the API. Read-only, tenant-scoped, no CSV export.

Rails

Pick the rail per payout, not per integration.

Nine rails and cash pickup, one request shape. Recipient, amount and idempotency key stay the same; Zenoz handles the processor, the bank, the agent network and the settlement path — push-to-card, XRPL and SWIFT cross-border, same-day and next-day ACH, the two instant networks, and cash collected in person.

Push to card

Visa Direct

Push to a debit card. Settles in seconds. The default first rail in zenoz init.

rail: visa_directUSD
Push to card

Mastercard Send

Push to a debit card across the Mastercard network. Seconds to settle, same request shape.

rail: mc_sendUSD
Push to card

Visa VPC

Push to a card via Visa Payout Connect for programs that need the VPC path.

rail: visa_vpcUSD
Cross-border

Ripple

Cross-border settlement over the XRP Ledger. Test XRPL addresses in sandbox; a few seconds to settle.

rail: rippleXRPL
Cross-border

SWIFT

International wires over the SWIFT network for correspondent-bank payouts where the recipient isn't on XRPL. Multi-currency, with tracking on the same ledger.

rail: SWIFTMulti-ccy
Bank transfer

ACH Same-Day

Same-day ACH credits and debits through the Nacha same-day windows. Returns land on the same ledger as the original item.

rail: ACH_SDUSD
Bank transfer

ACH Next-Day

Standard next-day ACH for scheduled payouts and lower-cost volume where speed isn't the point.

rail: ACH_NDUSD
Instant

RTP

Real-time payments over The Clearing House network. Final and irrevocable, 24/7/365, with request-for-payment on the roadmap.

rail: RTPUSD
Instant

FedNow

The Federal Reserve's instant rail, for banks and credit unions on FedNow rather than RTP. Same request shape as everything else.

rail: FEDNOWUSD
Cash

Cash Pickup

For recipients without a card or bank account. The payout becomes a pickup code delivered to the recipient; the funds are held on the merchant ledger until an agent location confirms collection. Manage the whole lifecycle from the API — ready, claimed, extended, cancelled, expired — with unclaimed funds returning to the merchant automatically.

rail: cash_pickupUSD · agent network

Card acquiring (CARD) runs on the same ledger, with refunds, voids, chargebacks and ACH returns tracked as first-class transaction types.

Platform APIs

Board the merchant. Move the money. Manage the pickup.

Two capabilities that usually mean a second vendor live on the same API, the same key and the same ledger as your payouts: merchant account boarding and cash pickup management.

Merchant account boarding

Board merchant accounts from your own onboarding flow.

Submit the application, get a decision, receive the MID. Auto-approval handles the clean cases; anything else lands in a manual-review queue your team can see the age of. KYB, MCC and risk tier are on the record from day one.

// POST /v1/merchants/applications
const app = await zenoz.merchants.applications.create({
  legalName: "Acme Retail LLC",
  dba: "Acme",
  mcc: "5812",
  averageTicket: { value: 32800, currency: "USD" },
  expectedMonthlyVolume: { value: 1174500, currency: "USD" },
  owners: [{ name: "Jordan Lee", ownershipPct: 100 }],
  settlementAccount: { routing: "•••••", account: "•••••" },
  services: ["card_acquiring", "payouts"]
}, { idempotencyKey });

// → { id: "app_4d1f", status: "MANUAL_REVIEW" }
// webhook application.approved → { mid: "830387595323273", riskTier: "medium" }
  • POST/v1/merchants/applications
  • GET/v1/merchants/applications/{id}
  • POST/v1/merchants/applications/{id}/documents
  • GET/v1/merchants/{id}
  • HOOKapplication.approved · application.review_required · application.rejected
Cash pickup management

Pay people who don't have a card or an account.

A cash pickup is just another rail on the payout request. Zenoz issues the pickup code, holds the funds on the merchant ledger, and reports every state change until an agent confirms collection — or the pickup expires and the money comes back.

// POST /v1/payouts — same call, rail: cash_pickup
const payout = await zenoz.payouts.create({
  rail: "cash_pickup",
  recipient: "rcp_7c21",
  amount: { value: 2500, currency: "USD" },
  pickup: { expiresIn: "P7D", notify: "sms" }
}, { idempotencyKey });

// → { id: "pyt_01JQ9M4", status: "READY_FOR_PICKUP", pickup: { expiresAt } }

await zenoz.pickups.extend(payout.id, { expiresIn: "P3D" });
await zenoz.pickups.cancel(payout.id);   // funds return to the merchant ledger
  • POST/v1/payouts rail=cash_pickup
  • GET/v1/pickups/{id}
  • POST/v1/pickups/{id}/extend
  • POST/v1/pickups/{id}/cancel
  • HOOKpickup.ready · pickup.claimed · pickup.expired · pickup.cancelled

Pickup codes are never returned to the merchant in the API response — they go to the recipient only, so the merchant can't become the phishing vector. Both APIs are available in sandbox through the same zenoz login credentials.

Ask Zenoz · MCP server

Your payments, answered in a sentence.

Connect the Zenoz MCP server to Claude and ask about volume, fees, rail mix, stuck money and your onboarding queue the way you'd ask a colleague. Every answer comes straight from the API, scoped to what your key can see.

  • "How much have we processed month-to-date, by rail?"
  • "What failed this week, and what did it cost us in fees?"
  • "Which merchant is driving the most volume?"
  • "What's sitting in manual review, and for how long?"
  • "How many merchant applications did we board through the API this week, and how many are in manual review?"
  • "Which cash pickups are still unclaimed and expire in the next 48 hours?"
  • "Are any of our service-account keys already expired?"
  • "Build me a month-end summary I can send to accounting."

Read-only today. Nothing you ask can move money or change state — the money-moving payout.quote / payout.commit tools ship with their own key class and step-up confirmation.

What's failed on our account?
4 failed transactions · $1,279.79. Small in count, but you were still charged $21.98 in fees against them — worth a look.
How much of our volume went over RTP?
9 transactions · $19,928.52 · $6.15 in fees. RTP is roughly 5% of your volume but a rounding error on fees — $0.68 average per transaction versus the blended $3.97.
What's stuck in manual review?
5 of 41 applications are in MANUAL_REVIEW. Oldest: Torp - Wiza Co., a Canadian restaurant (MCC 5812) submitted July 14 — unreviewed for 33 days.
Security posture

An unauthenticated path to free credentials on a payments platform is a target. We built it like one.

The browser owns identity

Account creation, terms, email verification and tenant creation happen on cloud.zenoz.ai, where consent records, bot defenses and KYB live. The CLI never collects a password.

PCI-certified card processing environment

Card processing runs inside a PCI DSS–certified environment. Test PANs in sandbox, tokenized card references in production, and no raw card data in your systems or in API responses.

Boarding is underwriting, not a form

Applications submitted by API go through the same KYB, MCC and risk-tier checks as the dashboard. Production processing for a boarded merchant starts only on approval, and the decision is on the record.

Sandbox only, enforced by the token

Self-serve tokens carry a sandbox environment claim that cannot be exchanged for production scopes — enforced server-side, not by the client.

Token hygiene

Access tokens live one hour; refresh tokens rotate on use and a reused one revokes the whole family. Every device approval writes an audit event with one-click revoke.

Signed, verified installer

SHA-256 against a manifest signed in CI. No sudo, no dotfile edits, atomic writes, and a main() wrapper so a truncated download runs nothing.

The model is never the authorization boundary

Natural-language intents extract to a rigid schema; anything ambiguous is a refusal. Policy runs server-side and re-runs at commit, bound to the quote the merchant actually read.

Cash is held, tracked, and returned

A pickup holds funds on the merchant ledger until an agent confirms collection. Codes are single-use, delivered to the recipient only, and unclaimed funds return automatically at expiry.

Audit chain on every intent

The literal request, the extracted schema, the quote hash, every preflight result and the confirmation evidence are logged — because "the merchant said send it" is not a defense.

Book a walkthrough

Thirty minutes, your portfolio, real rails.

We'll run a payout on each rail from the sandbox, walk the tenancy and control model, and show what your team could ask the MCP server on day one. Bring a merchant list if you have one.

Book a walkthrough Or try the sandbox first
Agenda
  1. Rails and settlement: push-to-card, XRPL, SWIFT, ACH/RTP/FedNow, cash pickup
  2. Tenancy: tenants, merchants, keys, limits, ledger
  3. Controls: quote/commit, screening, velocity, audit, PCI-certified processing
  4. Boarding: merchant applications by API, review queue, KYB to production
  5. Cash pickup: issue, track, extend, cancel, expiry returns
  6. Ask Zenoz: what your ops and finance teams can query