Zyvor Payments

Every rupee,
accounted for.

Open-source payments made for how India pays. Orchestrate your own Razorpay, Cashfree or PhonePe, or run acquire under a licensed sponsor with custody ledger, settlement batches and payout rails. Routes, records and reconciles every rupee.

Try the sandboxRead the docs

The Vayora Pay test app showing a completed payment of rupees 499 with a green tick.

The phone is a real screenshot of the open-source Vayora Pay test app. Test money; nothing here moves real money.

Made for India

Built for how India pays.

UPI first, GST on every invoice, rupees counted in paise, and a checkout your customers can read.

Rupees, exactly

Every amount is an integer in paise. Never a float, so ₹4,99,000.00 is always ₹4,99,000.00.

Scan, tap, pay

The checkout shows a QR or opens the customer's own UPI app. No UPI ID to type. A QR is never proof of payment: only a verified result is.

Invoices that file

CGST, SGST and IGST by SAC code, GSTIN-checked, with a GSTR-1 style summary. Zyvor does not file returns for you.

Six languages

The checkout speaks English, हिन्दी, मराठी, தமிழ், తెలుగు and বাংলা. Translations still await a native reader.

  • A schoolcollects term fees in instalments, with a class payment link and reminders you approve.
  • A clinicraises GST invoices by SAC code and takes a refundable deposit.
  • A factorybills a purchase order in milestones: mobilisation, delivery, commissioning.
  • A pharmacysells with GST and records returns as credit notes.
  • A shop counterprints a QR that ties every payment to that counter, then closes the day with a second person's sign-off.
  • A marketplacesplits a payment between vendors and tracks what each is owed.

Principles

Six promises the code keeps.

Never charges twice.

Every write carries an idempotency key. When a provider does not answer, the payment becomes unknown, and nothing new can start, through any provider, until it is resolved. Zyvor asks the provider. It never re-sends.

Explains every rupee.

Open a settlement and see the payments, refunds, fees and adjustments behind its net, and the bank line it matched. In acquire mode, settlement batches and escrow proof show what sits in sponsor custody before payout. Anything that does not add up becomes a case someone can own.

Books you can audit.

An append-only, double-entry ledger, balanced per currency by the code and again by a database constraint. Orchestrate posts provider receivables; acquire posts escrow and merchant payable. Nothing is edited. A correction is a new entry that reverses the old one.

Routes with receipts.

A capability matrix and your rules choose where a payment goes, and the decision records every provider it considered and why it picked one. No black box.

Runs the shop floor.

Branches and counters, each with its own QR. Cash entries, an end-of-day closing a second person signs off, and a plain-words timeline for every payment. Till cash is records only. Digital money moves through your provider (orchestrate) or the sponsor rail (acquire).

Hard to abuse.

Tenants are isolated by row-level security, tested as a non-superuser. Webhooks are guarded against SSRF and replays. The audit chain is tamper-evident. The threat model says what is defended and what is not.

  • Row-level security
  • Rate limits
  • Expiring API keys
  • SSRF-guarded webhooks
  • TOTP and roles
  • Tamper-evident audit
  • Rotatable master key
  • Supply-chain scans

Take a closer look

Two test apps. Real iPhones.

Vayora Pay is a payer. Vayora Merchant is the counter, and the place to see what is owed, what waits for approval, and why a settlement paid what it did. Together they run the whole loop against the simulator, with no real money. They are not bank-linked UPI apps: that needs NPCI TPAP approval and a sponsor bank.

Vayora Pay: review a payment and slide to pay.
Slide to paySlow to start, impossible to tap by accident.
Vayora Merchant: a counter keypad showing an amount.
Counter keypadType the amount, show the QR.
Vayora Merchant: a payment QR with an expiry ring.
The QR is the heroAn expiry ring, and a Customer view for the buyer.
Vayora Merchant: today's collections and recent payments.
Today at a glanceCollected net of refunds, and every payment's status.
Vayora Merchant: what is owed, refunds and payouts waiting for approval, a payout to record as paid, and a case to check.
What waits on youUnpaid invoices, approvals, payouts to pay and cases to check, with a badge on the tab.
Vayora Merchant: money still to come in, a chart of what falls due by week, and settlements to the bank.
CashflowWhat is owed by week, and what the bank was paid. A schedule, not a prediction.
Vayora Merchant: one settlement explained, with what was expected and what arrived.
Why it paid thatA settlement in plain words: what was taken off, and the gap to what you expected.
Vayora Merchant: a payment with a timeline of what happened to it.
What happenedEach payment's story, oldest first, in Indian time.
Vayora Pay: split a bill, with a request QR.
Split a billOne request QR for everyone. Test mode, kept on the phone.
Vayora Pay: a list of saved payees with favourites.
PayeesUPI IDs and mobile numbers, favourites first.

Screens are real renders of the open-source apps with sample data. Payments are simulated. The merchant screens have also been run against a local test server; they have not been checked by a person with VoiceOver or on every phone.

Get started

Choose your setup.

Zyvor is free and open source. Pick how you want to begin.

Sandbox

Everything runs on your machine against a simulated provider. The fastest way to see a payment settle.

    SandboxSelf-hostTalk to us
    CostFreeFree, Apache-2.0Ask us
    Where it runsYour laptopYour serversNot a hosted service today
    ProvidersSimulatedRazorpay, Cashfree, PhonePe, sponsor_upi or customWe can help you connect one
    Money modeEither, against simulatorsOrchestrate or acquire (sponsor LOI for live)Either; we help with the path
    Real moneyNoneProvider or sponsor collects; Zyvor recordsSame, after counsel and credentials
    LicencesNot neededYours, or a sponsor's, for acquireYours or a sponsor's

    Questions, answered straight.

    Is Zyvor a licensed payment service?

    No. In orchestrate mode your own provider collects and settles; Zyvor does not hold funds. In acquire mode a licensed sponsor PA / bank PSP holds escrow; Zyvor is the merchant-facing software and ledger. Live acquire needs counsel, a sponsor LOI, acquire KYC and an explicit env gate. See the regulatory position and acquire mode (not legal advice).

    What is acquire mode?

    A second money mode: custody ledger accounts (escrow:*, merchant_payable:*), captures auto-enrol into settlement batches with a T+N delay, escrow proof, payouts via a sponsor rail (send_rail), and network card tokens (charge with card_token_id). Console: Settlement page. Operator guide: ACQUIRE_MODE.md.

    What has actually been verified?

    The platform is tested against local simulators and a k3s sandbox. One capability, Cashfree UPI intent and QR, also ran against Cashfree's own sandbox. PhonePe, sponsor UPI, settle rails, card tokens and AutoPay adapters are simulator/mock only. Nothing has run against a live provider for acquire. STATUS.md lists every gap.

    Can I use my own gateway or bank API?

    Yes. Built-in adapters cover Razorpay, Cashfree, PhonePe and sponsor_upi. A generic custom adapter speaks a small JSON contract. Store plugins for Shopify, WooCommerce and Magento create payment links and mark orders paid on payment.captured (Woo/Shopify release zips via scripts/package-*-plugin.sh). Bank statements import as CSV, SWIFT MT940 or CAMT.053. See bring your own provider and plugins.

    How do I bring up Compose or debug API calls?

    scripts/compose-smoke.sh builds the stack, waits on Envoy /readyz and bootstraps a test org. The Developers page lists recent authenticated calls (GET /v1/api_requests, no bodies) and outbox deliveries. CI validates docker compose config; a full smoke needs Docker locally.

    Do the phone apps move real money?

    No. Vayora Pay and Vayora Merchant on iOS and Android are test apps against the simulator (scan/paste UPI, Collect → QR). A real consumer UPI app needs NPCI TPAP approval and a sponsor bank, which these do not have. See apps/ios and apps/android.

    Can I start over in the sandbox?

    Yes. A test environment can clear its own payments and money records from Settings, with a typed confirmation. Your setup stays. A live environment cannot do this, and the reset is written to the audit log.

    Does it file my GST returns?

    No. It issues GST tax invoices and a GSTR-1 style summary. Filing is yours.

    What does it cost?

    The software is free under Apache-2.0. Your provider, bank and any licensed partner charge their own fees; Zyvor can measure the real cost from your settlements.