Developers
One REST API for the whole money flow: create a payment, split it across sellers, onboard connected accounts and pay them out same-day. Idempotent, signed webhooks, and SDKs in the language you already ship.
Quickstart
Send a single request describing the charge and how it should be divided. Pabopay captures the buyer's payment, books each seller's share and your platform fee on the ledger, and returns the splits ready for payout.
Idempotency-Key so retries never double-chargecurl https://api.pabopay.com/v1/payments \ -H "Authorization: Bearer sk_live_2f9a..." \ -H "Idempotency-Key: pay_80432" \ -d amount=100000 \ -d currency=eur \ -d source=tok_visa \ -d "splits[0][account]=acct_atelier_mora" \ -d "splits[0][amount]=61200" \ -d "splits[1][account]=acct_loomwork" \ -d "splits[1][amount]=32700" \ -d "fee_amount=6100" # 200 OK # { "id": "pay_80432", "status": "captured", # "amount": 100000, "currency": "eur", # "splits": [ … ], "balanced": true }
import Pabopay from "pabopay"; const pabo = new Pabopay(process.env.PABO_SECRET_KEY); const payment = await pabo.payments.create( { amount: 100000, // €1,000.00 in cents currency: "eur", source: "tok_visa", splits: [ { account: "acct_atelier_mora", amount: 61200 }, { account: "acct_loomwork", amount: 32700 } ], fee_amount: 6100 // your platform fee }, { idempotencyKey: "pay_80432" } ); console.log(payment.status); // "captured"
import pabopay pabo = pabopay.Client(api_key="sk_live_2f9a...") payment = pabo.payments.create( amount=100000, # €1,000.00 in cents currency="eur", source="tok_visa", splits=[ {"account": "acct_atelier_mora", "amount": 61200}, {"account": "acct_loomwork", "amount": 32700}, ], fee_amount=6100, # your platform fee idempotency_key="pay_80432", ) print(payment.status) # "captured"
API reference
Every endpoint is REST over HTTPS, returns JSON, and accepts an idempotency key. Resources reference each other by id so a payment, its splits and the resulting payouts always reconcile.
Create, capture, refund and retrieve buyer payments. Attach a splits array to divide funds at capture, or capture first and split later once an order ships.
Define how a payment is divided across sellers and your platform fee — by percentage, fixed amount or per line item. Splits are atomic: they balance to the cent or they don't apply.
Onboard sellers as connected accounts, kick off embedded KYC, and check verification status. Returns a hosted onboarding link and a clean verified / pending / rejected state.
Move a seller's balance to their bank, card or wallet in 58 currencies. Choose instant where the rail supports it, or schedule daily runs — FX is applied at interbank rates.
Read available and pending balances per connected account, transfer between wallets, top up and place reserves — all backed by a real double-entry ledger with full history.
Register endpoints, choose the events you care about and verify the signature on every delivery. Pabopay retries with exponential backoff until you return a 2xx.
Webhooks
Subscribe to the lifecycle of every payment, account and payout. Each event is signed with your endpoint secret and delivered at least once, with automatic retries for up to three days.
payment.captured — a buyer's payment cleared and is ready to splitsplit.settled — each seller's share is booked on the ledgeraccount.verified — a seller passed KYC and can receive fundspayout.paid — funds landed in a seller's bank, card or walletpayout.failed — a payout bounced and was queued for retryreserve.released — a risk hold expired and funds freed up{
"id": "evt_9b2f71c4a0",
"type": "payout.paid",
"created": 1771072800,
"data": {
"object": {
"id": "po_4Kd02Lm",
"account": "acct_atelier_mora",
"amount": 61200,
"currency": "eur",
"rail": "sepa_instant",
"status": "paid",
"arrival": "instant",
"source_payment": "pay_80432"
}
}
}
# Verify: Pabopay-Signature header
# t=1771072800,v1=4f8d… (HMAC-SHA256)
SDKs
Typed, versioned and idempotent by default. Install from your usual package manager and you're making test payments in minutes.
npm install pabopay
pip install pabopay
gem install pabopay
composer require pabopay/pabopay-php
go get github.com/pabopay/pabopay-go
com.pabopay:pabopay-java
Sandbox keys are free and unmetered. Create a payment, split it across test sellers and watch the payouts land — no contract, no sales call.