All work

Own productPayments platform

Rezana

grey-market top-upsa payment with a receipt

Payments and subscriptions for Russian games, with a receipt and the money in your own account.

In short

Payments and subscriptions infrastructure for Russian mobile games plus a top-up storefront for players: 5% instead of the stores’ 30%, a legal receipt, and a refund if the item never arrives.

  • Problem: Russian cards do not work in Google Play or the App Store, studios have no way to take payments, and players top up through grey-market Telegram bots.
  • Two sides: a developer cabinet (set up “in an evening”, payouts reconciled to the kopeck, webhooks) and a player storefront (you see who gets the money, a receipt and a refund).
  • Double-entry money ledger, amounts in kopecks, row-level security on 41 tables, 116 operations in the OpenAPI contract, 1,289 tests.
  • Naming checked against 160+ domains: “Rezana” is an Old Russian coin, literally a cut piece of silver.
  • 30%5%

    platform fee versus the stores

  • 1,289

    automated tests: backend, frontend, contract

  • 116

    operations in the OpenAPI contract

Problem

Russian cards do not work in Google Play or the App Store. Studios have no legal way to take in-game payments, and players top up through grey-market Telegram bots: no receipt, no refund, no guarantee the money arrives. The real competitor is not Codashop but the grey market.

Solution

For whomWhat they get
DeveloperSet up in 4 steps “in an evening”, a dashboard, transactions with a timeline, refunds, payouts broken down to the kopeck, zero-downtime API key rotation, webhooks with a delivery log, a sandbox, team roles
Player“Top up games in roubles. With a receipt, with refunds, without bots”: a catalogue with typo-tolerant search, the recipient’s in-game name shown before paying, fast bank transfers, one-click subscription cancel

The model is a flat 5% of each payment, with the bank’s acquiring fee as a separate line. Try it: the calculator below uses the same algorithm as the backend, rounding fees down to the kopeck and sending the remainder to the partner.

Try it

Decisions

  • ADR-0001

    The product is a full B2C marketplace

    Why. The analysis recommended a middle option, a storefront without paid traffic. I chose the full marketplace and rebuilt the plan around its main risk, the cold start: public launch is the second-to-last stage, after the first partners.

    Rejected: B2B infrastructure only, with no storefront of our own.

  • ADR-0006

    Money is kept in a double-entry ledger

    Why. Every movement is two entries that sum to zero. A partner payout reconciles to the kopeck not because a report says so but because the balance would not close otherwise.

  • ADR-0004

    Money is stored as integer minor units

    Why. No floats: 99 roubles is 9,900 kopecks. Rounding is an explicit rule, not a property of the CPU.

  • ADR-0010

    A flat 5%, acquiring passed through

    Why. No pricing matrix in the MVP: one number is easier to sell and to verify. The answer to “why more than RevenueCat?” is ready: we process payments, it only tracks them.

How it is built

A modular monolith in C# on .NET 10 with PostgreSQL as the source of truth: double entry, row-level security on 41 tables, 157 check constraints. The API contract comes first: 116 operations in OpenAPI. The web is Next.js 16 and React 19. T-Bank acquiring with one terminal for the whole platform: fast bank transfers, Mir cards, SberPay, T-Pay; fiscal receipts under law 54-FZ; signed webhooks; OpenTelemetry and Prometheus.

Before development I reviewed my own plan like a hostile reviewer: 17 pages and 140 tasks, with findings ranked by how expensive they get to fix late.

Status

The prototype runs on staging. Everything that depended on code is done; what remains depends on people and the bank: the acquiring sandbox, the first partner, the contract text. Launch targets: one hour from partner sign-up to the first test payment, and zero reconciliation mismatches.

Want more? Switch the reading depth to 30 min.

NextLad Deloperational chaos → a system in 60 days