A Stripe-powered payments platform for Paypolli
A multi-tenant Stripe Connect platform that takes card payments across terminals, tap-to-pay, e-commerce and payment links — calculating fees, reclaiming interchange and settling funds automatically.
Payments is unforgiving — a rounding error or a double charge is a real problem for a real merchant. We built Paypolli around idempotency, a single shared fee engine and server-side money movement so the numbers always add up.
Paypolli — first built for the taxi and private-hire trade as 'Monily Taxi Pay' — is a multi-tenant payments platform that lets merchant organisations take card payments across four channels: physical terminals, tap-to-pay on iPhone, e-commerce checkout and payment links. The platform sits in the middle as a Stripe Connect facilitator, taking a configurable margin and reclaiming interchange automatically.
We designed and built the whole thing in .NET — a merchant and admin portal, two documented payments APIs, and a reverse proxy that keeps Stripe keys and fee logic on the server. The hard, correctness-critical parts of fintech — fee calculation, settlement, refunds, idempotency and reconciliation — are handled server-side, so client apps stay thin and platform secrets never leave the platform.
63Digital built the engine room of our payments product — the parts our customers never see but absolutely depend on. It just works, and it's kept working as we've grown.
A multi-stage approach.
Discovery & fee modelling
We mapped how money should move — from a card tap in a taxi to the merchant's payout — and designed a fee engine shared by every channel, so the numbers always agree no matter where a payment starts.
Payments proxy
We built a reverse proxy that sits between client apps and Stripe, authenticating each app by API key, calculating the application fee in flight and routing funds to the right connected account — so no client app ever holds a platform secret.
Four channels, one platform
Card terminals, tap-to-pay on iPhone, e-commerce checkout and payment links all run through the same core, each transaction tagged so it can be reconciled cleanly later.
Billing & settlement
A background job reclaims interchange every fifteen minutes with idempotent, deduplicated charges, alongside automated reconciliation reporting, full refund handling and self-service onboarding.
What changed.
One fee engine
A single calculator, shared by the portal and the payments proxy, means the fee shown, charged and reconciled is always the same — the correctness that fintech lives or dies on.
Funds route themselves
Stripe Connect destination charges send each payment to the right merchant automatically, with the platform's margin taken on the way through — no manual transfers, no reconciliation guesswork.
Interchange, reclaimed automatically
A fifteen-minute background job builds per-merchant interchange bills and charges them with idempotency keys that make double-billing impossible.
Built to onboard itself
Merchants sign up, connect their Stripe account and go live without a human in the loop — and can be suspended or offboarded just as cleanly.
Guides from this project
How to build a Stripe Connect marketplace in .NET
Let Stripe host merchant sign-up, and treat a merchant as ready only when Stripe confirms payments and payouts are both switched on with nothing outstanding. Your platform creates each payment, passes the merchant their share and keeps its fee as the money moves. Refunds come back out of the merchant's share, while your fee stays with you.
How to keep Stripe keys off mobile apps and plugins with a reverse proxy
Put a gateway between your apps and Stripe so the apps never hold your platform's Stripe secret key. Each app or plugin gets its own key that you can withdraw. The gateway works out which merchant it belongs to, adds the merchant's account and your fee on the server, and only passes on the Stripe requests you've approved.
How to recover Stripe interchange fees from connected accounts automatically
Stripe reports the card network costs behind every payment on your merchants' accounts. Import that report daily, count each fee once, and total what each merchant owes. Then collect it from their Stripe balance on a schedule, labelling each bill by merchant and period so that a retry can never bill anyone twice.
How to take payments with Tap to Pay on iPhone using Stripe Terminal
Tap to Pay turns a merchant's iPhone, or an NFC Android phone, into a contactless card reader through Stripe Terminal. Your app needs Apple's approval, each merchant needs their own Stripe location so payments land with the right business, and payments are created on your server with your fee. Most of the work is handling phones that can't tap.
Platforms: Stripe
Thinking about payments or fintech?
If you're building a payments product or wiring Stripe Connect into your platform, we'll help you get the money movement right the first time.