# B2B Escrow Indonesia: Milestone Escrow | RekberPay

> B2B escrow for Indonesian companies: fund deals milestone by milestone, approve releases with two people and pay only verified accounts. Start in sandbox.

URL: https://rekberpay.com/enterprise/b2b-escrow

## B2B escrow for milestone deals

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.

[Create your workspace](https://rekberpay.com/enterprise/register)[Talk to our team](https://rekberpay.com/contact?topic=enterprise)

- 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.

Sample deal

20 tonnes of rice

PT Sumber Pangan pays CV Tani Makmur

**Rp 450.000.000** 3 milestones

- Released **Rp 135M**
- In review **Rp 180M**
- Awaiting funding **Rp 135M**

1. 1. Deposit Signed purchase order Rp 135.000.000 Released
2. 2 2. Goods shipped Bill of lading and loading photos **1 of 2 approvers.** The finance director approved. A second approver decides next. Rp 180.000.000 Waiting on you
3. 3 3. Goods received Goods received note and quality inspection Rp 135.000.000 Awaiting funding

Fee Rp 9.000.000, paid by the distributor Two approvers from **Rp 100M**

Sample deal with made-up names, from the supplier and distributor scenario in our docs.

- Agency and client A website and brand refresh in three milestones. The client's approver can send design work back for revision. Fee Split 50 / 50 Key feature Request revision
- Supplier and distributor A purchase order paid as deposit, shipment and goods received. Short delivery goes to a dispute with the inspection report. Fee Payer pays Key feature Four-eyes, disputes
- Marketplace partner payouts One milestone per weekly batch, released after finance reconciles the sales report, split to a main and a tax account. Fee Partner pays Key feature API, split payouts, webhooks
- Construction progress payments Down payment through retention, each with a due date and a consultant's inspection as evidence. Fee Split 50 / 50 Key feature Retention milestone
- Software outsourcing Discovery, sprints and UAT as milestones. Blocking bugs go back as a revision with a note listing them. Fee Software house pays Key feature Sprint milestones
- Event organizer and vendors A deal per vendor, due dates on the event days, and one release split between a vendor and its crew account. Fee Payer pays Key feature Split payout

**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 marketplaces](https://rekberpay.com/enterprise/platform-api)

1. 01 Create the deal Add the counterparty, up to 20 milestones, their amounts and the evidence each one needs. Operator deal.created
2. 02 Activate The draft becomes live and its milestones wait for funding. Operator deal.activated
3. 03 Fund In Live the payer pays by bank transfer, QRIS or a gateway. RekberPay holds it. Finance milestone.funded
4. 04 Submit evidence Your operator, or a linked counterparty, uploads what the milestone asked for. Operator or partner milestone. evidence_submitted
5. 05 Approve From Rp 100M two different approvers decide, never the person who submitted. Finance milestone.approved
6. 06 Release Finance releases to verified payout instructions, up to five per release. Finance disbursement.settled

#### Request revision

The approver sends the milestone back with a note. The counterparty delivers again and a new review round starts. milestone.revision_requested

#### Open a dispute

The money stays held while RekberPay decides: back to funded, released, or cancelled. You get an alert when it passes your SLA. dispute.opened

#### A whole deal, in order

Sample: a Rp 2.000.000.000 warehouse build, paid in five milestones

1. **1. Down payment** Rp 400.000.000 Released
2. **2. Foundation** Rp 500.000.000 Released
3. **3. Structure** Rp 500.000.000 1 of 2 approved
4. **4. Finishing** Rp 400.000.000 Funded
5. **5. Retention** Rp 200.000.000 Awaiting funding

Made-up names and amounts from the construction scenario in our docs. The retention milestone is due 30 days after handover.

- Milestones and evidence Up to 20 milestones per deal, each naming the evidence it needs. Save plans your team reuses as templates.
- Four-eyes approvals Two different approvers on milestones from Rp 100M by default. Set your own threshold in Settings.
- Revisions and disputes Send work back with a note, or open a dispute that holds the money until RekberPay decides.
- Verified payout instructions RekberPay verifies every payout account before money moves. Split one release across up to five.
- Linked partner workspaces Link by Workspace ID. Your partner sees the deal under Shared deals and uploads evidence from its side.
- Fee split you agree The payer pays, the partner pays, or you split it. A linked partner can accept or counter before funding.
- Reports and CSV A summary report plus deals and payouts as CSV, up to 10,000 rows and 366 days per export.
- Roles for every job Viewer, operator, finance, admin and owner. Each role includes everything the roles below it can do.
- REST API and signed webhooks Workspace keys per mode, Idempotency-Key on writes, and HMAC-signed deliveries for every event.

#### 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.

#### Four-eyes

- Two different approvers on milestones from Rp 100M by default.
- The person who submitted the evidence can never approve it.
- A workspace API key acts as one person, so each approver needs their own login.

#### Audit

- Actor, IP, before and after on every state change, exportable as CSV.
- Bank numbers masked everywhere. Unmasking is superadmin-only and logged.
- Idempotency keys on payouts and compare-and-swap guards against double release.

Role Can do viewer Read deals, approvals, payouts, documents and the activity feed. Change nothing. operator Create and edit deals, milestones, counterparties and templates. Submit evidence. Open disputes. finance Fund or pay milestones, approve or reject evidence, release money, manage payout instructions, export reports. admin Invite members, set the approval policy, submit business verification, manage API keys and webhooks, link partners. owner Everything an admin can, plus granting the owner role and setting the default fee split.

**POST** /v1/enterprise/deals/:id/milestones/:mid/release # 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 } ] }' 200 OK response { "success" : true , "data" : { "status" : "released" , "deal_status" : "in_progress" , "disbursements" : [ { "amount" : 25000000 , "currency" : "IDR" , "status" : "queued" }, { "amount" : 5000000 , "currency" : "IDR" , "status" : "queued" } ] } } **Webhook** milestone.released 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" } } } **verify.js** HMAC-SHA256 over t.body const expected = createHmac( 'sha256' , secret) .update( `${t}.${rawBody}` ).digest(); return signatures.some((sig) => timingSafeEqual(expected, Buffer.from(sig, 'hex' )));

### B2B escrow FAQ

More answers live in the [Enterprise getting started guide](https://docs.rekberpay.com/guides/enterprise-get-started). To compare both products, see the [RekberPay Enterprise overview](https://rekberpay.com/enterprise#products).

#### Does my counterparty need a RekberPay account?

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.

#### Who pays the fee?

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.

#### When do two approvers kick in?

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.

#### How does the payer fund a milestone in Live?

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.

#### What happens in a dispute?

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.

#### Can we try it without real money?

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. **Brama Diwangkara** SolusiNegeri

### Run your next purchase order through escrow

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.

[Create your workspace](https://rekberpay.com/enterprise/register)[Talk to our team](https://rekberpay.com/contact?topic=enterprise)

- KYB-verified onboarding
- Dedicated account manager
- Custom integration support
