Every dirham,accounted for.
A double-entry ledger, three-way reconciliation, and finalizable settlement statements — so you always know exactly what you're owed, and every dirham is traceable.
The ledger
Nine accounts. One invariant.
Every movement is a balanced double-entry posting — Σ debits = Σ credits after every write. Balances are derived, never stored.
Money in your own PSP account, mirrored in the ledger.
Captured, awaiting provider settlement (reserved).
Gross customer funds, as reported by your PSP.
Collected funds cleared and ready for your PSP to settle.
Amount your PSP holds back against reversals and chargebacks.
Your PSP fees, mirrored in the ledger.
Cumulative amount already settled to the tenant.
Closed-loop customer balance (OtoParking model) — held by the merchant, tracked by CorpoPay.
Tax collected on fees, owed to the tax authority.
Settlement
Gross in. Net out.
Your PSP applies its own fee and reserve, then settles the net to your bank. CorpoPay mirrors the PSP report in a balanced ledger — gross in, net out.
Gross
G
Fee
− fee
Reserve
− reserve
Available
net
The fee and reserve are set by your PSP, never by CorpoPay — you always see exactly what the provider reports.
The postings
Reconciliation
Three sources. One truth.
Provider report, ledger, and payouts are matched. A difference is surfaced as a flag — never silently passed through.
Provider report
The PSP's version of what settled.
Ledger
CorpoPay's double-entry record.
Payouts
What actually left the platform.
EXACT
All three agree
AMOUNT_DIFF
A figure differs
UNMATCHED
No matching entry
Settlement statement
Opening → closing, itemized by category.
{
openingBalance: MAD 0.00,
closingBalance: MAD 84,117.09,
netAmount: MAD 84,117.09, // closing − opening
items: [
{ category: "CAPTURE", volume: 412, count: 18 },
{ category: "FEE", volume: 2,438, count: 18 },
],
status: "FINALIZED" // ready to invoice the tenant
}Finalize a statement to lock the period and hand it to a tenant as an invoice — every number is backed by a ledger entry.
Settlement status
Your PSP settles; CorpoPay mirrors the status.
Fee engine — Phase 3
Per-transaction fees and rolling reserves — unlocked with Stripe Connect.
FLAT
Fixed amount per capture
PERCENTAGE
Basis points — default 2.9% (290 bps)
PER_METHOD
Different fee per payment method
TIERED
Volume-based bands
Disputes & chargebacks
Handled by your PSP — CorpoPay mirrors every one.
Your PSP recovers a lost dispute from your balance, and CorpoPay mirrors the chargeback in your ledger.
Immutable audit trail
Every write — capture, settle, payout, reversal, refund — is audit-logged. Combined with a derived ledger and three-way reconciliation, the whole money path is provably consistent.