FOURTH-PARTY PAYMENT PLATFORM

Every payment posts twice.

BiPay accepts cards for you and everyone underneath you, splits the fees down your agent tree, and writes both sides of every movement into a real ledger. Balances are derived from entries, never edited.

Onboarding our first merchants now.

POSTING pay_01K9F2 · 129.00 USD
AccountDebitCredit
Merchant receivable129.00
Processing cost3.53
Agent commission1.94
Platform fee2.58
Merchant payable120.95
Debits less credits balanced 0.00
01

Three ways to take the money

Same routing, same ledger, same settlement behind all three. Pick whichever fits how your merchant sells.

Payment links

Raise an invoice in the console, get a URL, send it to the payer. They pay on a page we host.

  • Amount and payee fixed server-side
  • Attempt cap enforced server-side
  • Expires when you say

Hosted checkout

Redirect from your own cart. Card details reach us, never your servers.

  • No card data in your scope
  • Returns to your success URL
  • Webhook on every state change

Direct API

Server-to-server against a versioned REST API, with idempotency keys on every write.

  • Replay-safe by key, not by luck
  • Signed outbound webhooks
  • API reference
02

Agents underneath you, priced by you

Platform, agent and merchant sit in one tree. Every query is scoped to your branch of it on the server — not by hiding menu items in a browser.

You set what your agents pay. They set what their merchants pay. Neither can price below their own cost, and the platform sees the whole chain.

Fee rules are append-only. Changing a rate writes a new one with an effective date; the old rate keeps applying to everything already settled under it. You cannot rewrite history, only add to it.

Every figure to the right is one row in the ledger, not a report computed later.

├ ProcessorYour acquirer 2.50% + 0.30 3.53
├ PlatformYou 2.00% 2.58
├ AgentPacific Payments 1.50% 1.94
└ MerchantNorthwind Retail net 120.95
Charged 129.00 USD 129.00
03

Three processors, with failover

A declined authorisation is retried on the next eligible processor automatically. We list what we actually integrate — not a logo wall.

Authorize.Net
Cards, refunds, voids, webhook verification
LIVE
Stripe
Cards, refunds, disputes, payment methods
LIVE
Square
Cards, refunds, webhook verification
LIVE
More on request
Connectors are a defined interface. Adding one is scoped work, not a rewrite.
ON REQUEST
04

The database refuses to hold an unbalanced entry

Most platforms track a balance column and hope the arithmetic held. We do not have a balance column to corrupt.

LEDGER

Balanced or rejected

A deferred constraint checks every transaction at commit. Debits must equal credits or the whole transaction fails — not a nightly job that finds the drift next morning.

AMOUNTS

Integers, end to end

Money is carried as minor units in 64-bit integers from the card network to your screen. No floating point ever touches a balance. An unknown currency raises an error rather than guessing the decimal places.

SETTLEMENT

Batches you can reopen

Settlement closes a batch and posts it. Refunds and chargebacks that land afterwards post against the period they belong to, so a closed month stays closed.

Want to see it against your own numbers?

Tell us the volumes and the split you have in mind and we will walk through what the ledger looks like for it.