KYB
- Your business is verified before Live unlocks. We review in 1 to 3 business days.
- RekberPay operations reviews every counterparty and payout account.
- A live release after a dispute needs the counterparty's business verification done.
Milestone escrow for Indonesian companies. Fund a purchase order or a project milestone by milestone: RekberPay holds each payment until your approvers sign off on the evidence, then pays a verified account.
Start in Sandbox today
Your workspace opens in Sandbox with test money. Live unlocks once we verify your business, which takes 1 to 3 business days.
Your supplier does not need an account
A company without RekberPay is a plain counterparty. If it runs RekberPay Enterprise too, link the two workspaces and share the deal.
20 tonnes of rice
PT Sumber Pangan pays CV Tani MakmurSample deal with made-up names, from the supplier and distributor scenario in our docs.
Any company in Indonesia that pays another in stages and wants the money held until the work is proven. Six setups from our B2B escrow use cases, each with its own guide.
A website and brand refresh in three milestones. The client's approver can send design work back for revision.
A purchase order paid as deposit, shipment and goods received. Short delivery goes to a dispute with the inspection report.
One milestone per weekly batch, released after finance reconciles the sales report, split to a main and a tax account.
Down payment through retention, each with a due date and a consultant's inspection as evidence.
Discovery, sprints and UAT as milestones. Blocking bugs go back as a revision with a note listing them.
A deal per vendor, due dates on the event days, and one release split between a vendor and its crew account.
Your users pay each other, not you? When shoppers pay sellers on your marketplace, the Platform API is the better fit. Both run in the same workspace.
See the escrow API for marketplacesEach milestone is funded, proven, approved and released on its own. Every step is timestamped, tied to a person and sent as a signed webhook.
Add the counterparty, up to 20 milestones, their amounts and the evidence each one needs.
Operatordeal.createdThe draft becomes live and its milestones wait for funding.
Operatordeal.activatedIn Live the payer pays by bank transfer, QRIS or a gateway. RekberPay holds it.
Financemilestone.fundedYour operator, or a linked counterparty, uploads what the milestone asked for.
Operator or partnermilestone. evidence_submittedFrom Rp 100M two different approvers decide, never the person who submitted.
Financemilestone.approvedFinance releases to verified payout instructions, up to five per release.
Financedisbursement.settledThe approver sends the milestone back with a note. The counterparty delivers again and a new review round starts. milestone.revision_requested
The money stays held while RekberPay decides: back to funded, released, or cancelled. You get an alert when it passes your SLA. dispute.opened
Made-up names and amounts from the construction scenario in our docs. The retention milestone is due 30 days after handover.
The dashboard and the REST API do the same jobs, so your team can work by hand while your systems integrate.
Up to 20 milestones per deal, each naming the evidence it needs. Save plans your team reuses as templates.
Two different approvers on milestones from Rp 100M by default. Set your own threshold in Settings.
Send work back with a note, or open a dispute that holds the money until RekberPay decides.
RekberPay verifies every payout account before money moves. Split one release across up to five.
Link by Workspace ID. Your partner sees the deal under Shared deals and uploads evidence from its side.
The payer pays, the partner pays, or you split it. A linked partner can accept or counter before funding.
A summary report plus deals and payouts as CSV, up to 10,000 rows and 366 days per export.
Viewer, operator, finance, admin and owner. Each role includes everything the roles below it can do.
Workspace keys per mode, Idempotency-Key on writes, and HMAC-signed deliveries for every event.
Who can move money is decided by verification, by two people and by a log you can export. None of it depends on trusting one login.
viewerRead deals, approvals, payouts, documents and the activity feed. Change nothing.operatorCreate and edit deals, milestones, counterparties and templates. Submit evidence. Open disputes.financeFund or pay milestones, approve or reject evidence, release money, manage payout instructions, export reports.adminInvite members, set the approval policy, submit business verification, manage API keys and webhooks, link partners.ownerEverything an admin can, plus granting the owner role and setting the default fee split.Release an approved milestone to two payout accounts in one call, then hear about it on your webhook. Both samples come from a real sandbox run in our docs. Read the milestone deal guide.
# BASE=https://api.rekberpay.com/v1/enterprise
curl -X POST "$BASE/deals/$DEAL_ID/milestones/$MILESTONE_ID/release" \
-H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
-H "Idempotency-Key: 33333336-3333-4333-8333-333333333333" \
-H "Content-Type: application/json" \
-d '{
"splits": [
{ "payout_instruction_id": "fffffff3-…", "amount": 25000000 },
{ "payout_instruction_id": "22222224-…", "amount": 5000000 }
]
}'{
"success": true,
"data": {
"status": "released",
"deal_status": "in_progress",
"disbursements": [
{ "amount": 25000000, "currency": "IDR", "status": "queued" },
{ "amount": 5000000, "currency": "IDR", "status": "queued" }
]
}
}X-RekberPay-Event: milestone.released
X-RekberPay-Delivery: <delivery id>
X-RekberPay-Signature: t=<unix seconds>,v1=<hex>
{
"event": "milestone.released",
"amount": 30000000,
"summary": "Released DEAL-2026-0009 / Tooling
and proof approval in 2 payouts",
"livemode": false,
"data": { "next": { "status": "released" } }
}const expected = createHmac('sha256', secret)
.update(`${t}.${rawBody}`).digest();
return signatures.some((sig) =>
timingSafeEqual(expected, Buffer.from(sig, 'hex')));More answers live in the Enterprise getting started guide. To compare both products, see the RekberPay Enterprise overview.
No. A company that does not use RekberPay is a plain counterparty and your team records its deliveries. If it runs RekberPay Enterprise, link the workspaces so it can see the deal and upload evidence itself.
The fee is a share of the deal total, set in your terms; the examples in our docs use the default of 2 percent. By default the payer pays all of it. You can let the partner pay or split it, and a linked partner can accept or counter before funding. The fee is shown before anything is charged.
On milestones from Rp 100.000.000 by default. Admins can change the threshold in Settings. Below it, one finance approver decides. Whoever submitted the evidence can never approve it.
By bank transfer that RekberPay checks, by QRIS, or through a payment gateway. The milestone turns funded only when RekberPay has the money. The paying workspace bears the small payment method fee.
The money stays held. RekberPay looks at the evidence from both sides and decides: the milestone goes back to funded so the work carries on, it is released to the counterparty, or it is cancelled.
Yes. Every workspace starts in Sandbox, where you record funding yourself and releases settle as test data. Sandbox stays open after Live unlocks, with its own rpe_test_ keys and webhook endpoints.
Our projects get paid in stages, so we split each deal into milestones and two of us have to sign off before anything goes out. Finance finally stopped asking me for a spreadsheet every Friday.
Create a workspace and rehearse the whole deal in Sandbox today. Send your business documents when you are ready, and Live unlocks next to your sandbox.