Skip to content

Platform mode (PaaS) ​

Platform mode lets a marketplace run RekberPay escrow behind its own product. Your buyers and sellers meet on your site. RekberPay holds the money, runs the checkout, decides disputes and pays out. Your server talks to RekberPay through /v1/enterprise/platform and gets signed webhooks back.

Platform mode is part of Enterprise and is on for every Enterprise workspace, so the team, roles, API keys, webhooks, sandbox and event feed you know from Enterprise all apply. Business to business deals keep working next to it.

Which part do I use? ​

RekberPay has two API parts under Enterprise. Pick by who pays whom.

Your jobUseStart with
Pay your own suppliers or contractors, or run deals between two businesses, with approvals and milestone payoutsEnterprise deals (B2B)Milestone deal
Run a marketplace where your users pay each other and stay on your sitePlatform mode (this section)Run a marketplace order
Give buyers and sellers accounts, or link ones who have onePlatform modeCreate and link users
Take the buyer's payment, ship, confirm and releasePlatform modeCheckout, Shipping and release
Handle a problem orderPlatform modeDisputes
Show balances and pay sellers outPlatform modeBalances and withdrawals
Verify a seller, or rate a finished orderPlatform modeKYC, Ratings
Create a key that is safe to useBothKeep your keys safe

Both parts share one workspace, one set of keys, webhooks and a sandbox, so you can use them side by side. The call-by-call list is further down.

Who it is for ​

  • Marketplaces and platforms where one user pays another for goods or services, and you want the money held until the buyer is happy.
  • You want your users to stay on your site. They never sign up with RekberPay first, yet each of them is a real RekberPay user who can claim the account later and use RekberPay directly.

It is not for paying your own suppliers. For that, use a normal Enterprise milestone deal.

Before you write code ​

  • Call RekberPay only from your server, never from a browser or an app (403 KEY_IN_BROWSER).
  • Send an Idempotency-Key with every write (400 IDEMPOTENCY_KEY_REQUIRED).
  • Use one key per job, with only the scopes it needs. The full rules are below and in Keep your keys safe.

How to get it ​

  1. Create an Enterprise workspace (Get started with Enterprise). It works in Sandbox from the first day, and Platform is already on with the standard terms: a 2% fee with a Rp5.000 minimum per order, paid by the buyer, a 6 hour confirm delay, no daily cap, and every scope but orders:confirm. There is nothing to request.
  2. Create a Sandbox workspace API key (rpe_test_) with the Platform scopes you need (Keep your keys safe). It works at once, from any IP.
  3. Build and test everything in Sandbox.
  4. To go live you need two things: your business verification (KYB) approved, which unlocks Live and turns Platform on there, and a Live key (rpe_live_) with an IP allowlist that RekberPay approved. Enter your server IPs on the key in the dashboard (Developers) and send them; RekberPay reviews them. Until then a live call answers 403 IP_ALLOWLIST_REQUIRED (going live).

Your account manager can change your terms (fee, daily cap, scopes). Read them at any time with

GET /v1/enterprise/platform/settings.

Which call do I use? ​

Paths are under https://api.rekberpay.com/v1/enterprise/platform. The scope is what your key needs besides read, plus write for any change. Each call links to its reference section.

I want toCallScopeGuide
Read your fee, cap and allowed scopesGET /settingsnone
Give a buyer or seller a RekberPay accountPOST /usersusersCreate and link users
Link someone who already has an account (they confirm by email)POST /usersusersExisting users
Read a user: link, claim and KYC status, limitsGET /users/:refusers
Change an unclaimed user's name, phone or emailPATCH /users/:refusersChange details
Unlink a userDELETE /users/:refusersUnlink, and link again
Let a user take over their accountPOST /users/:ref/claim-linkusersClaim
Verify a seller's identityPOST /users/:ref/kyckycKYC through the API
Read the KYC resultGET /users/:ref/kyckycRead the result
Sandbox: approve or reject a KYC yourselfPOST /users/:ref/kyc/simulatekycKYC in the sandbox
Create an orderPOST /dealsordersRun an order end to end
Check one order, for example to see paid without webhooksGET /deals/:idordersStatuses
List orders, by user or statusGET /dealsorders
Cancel an order before paymentPOST /deals/:id/cancelorders
Take the buyer's paymentPOST /deals/:id/milestones/:mid/checkoutordersCheckout for buyers
Sandbox: pay with test moneyPOST /v1/platform/checkout/:token/simulatenone, the checkout token is the keyCheckout in the sandbox
Tell RekberPay the seller shippedPOST /deals/:id/milestones/:mid/shipordersShipping and auto release
Give the buyer more timePOST /deals/:id/milestones/:mid/extendordersExtend
Confirm receipt for the buyer (the release waits 6 h)POST /deals/:id/milestones/:mid/confirmorders:confirmYour confirm
Sandbox: release a shipped or pending milestone nowPOST /deals/:id/milestones/:mid/simulate/advance-timeordersRelease now
Report a problem with an orderPOST /deals/:id/milestones/:mid/disputeordersDisputes
Add evidence to a disputePOST /deals/:id/milestones/:mid/dispute/evidenceordersAdd evidence
Show a user's balanceGET /users/:ref/balancebalance:readBalances and withdrawals
Add a payout bank account (24 h cooling-off)POST /users/:ref/bank-accountswithdrawBank accounts
List a user's payout bank accountsGET /users/:ref/bank-accountswithdraw
Sandbox: end a bank account's cooling-off nowPOST /users/:ref/bank-accounts/:id/simulate/skip-cooling-offwithdrawSkip the cooling-off
Pay a user outPOST /users/:ref/withdrawalswithdrawWithdrawals
Follow a withdrawalGET /users/:ref/withdrawals/:idwithdrawStatuses
Rate a finished order for the buyer or the sellerPOST /deals/:id/ratingsratingsRatings
Read who rated an orderGET /deals/:id/ratingsratingsPublication
Read a user's reputationGET /users/:ref/reputationusersReputation
Show unclaimed accounts on public profilesPUT /settings/profile-visibilitydashboard, adminUnclaimed accounts
Hear about changes without pollingWebhooksnoneReceiving webhooks

One order, from user to payout ​

text
 Your server                      RekberPay                         Buyer / seller
 -----------                      ---------                         --------------
 1. POST /users (buyer)    --->   account + link (active)
    POST /users (seller)   --->   account + link (active)
 2. POST /deals            --->   deal, milestones awaiting_payment
 3. POST .../checkout      --->   checkout URL (30 min)  ---------> buyer pays on
                                                                    rekberpay.com/checkout/p/...
                           <---   milestone.paid (webhook)
 4. POST .../ship          --->   shipped, auto release clock starts
                           <---   milestone.shipped
 5. Buyer confirms on RekberPay, or you confirm (waits 6 h),
    or nobody acts and the clock runs out
                           <---   milestone.released / milestone.auto_released
                                  seller's partner balance += amount - seller fee
 6. POST /users/:ref/bank-accounts (name check, 24 h cooling-off)
    POST /users/:ref/withdrawals  ---> payout to the seller's bank
                           <---   withdrawal.requested, withdrawal.settled

A dispute can stop the order at any point after payment. RekberPay's mediation team then releases, refunds, splits or resumes it (Disputes on marketplace orders).

What RekberPay staff do ​

RekberPay runs the parts that need a human or a trusted clock, so you do not build them.

  • Terms and switch-off. A superadmin sets your fee, daily cap, confirm delay and key scopes, can freeze or unfreeze you, and can switch Platform off for your workspace (every Platform call then answers 404 NOT_FOUND).
  • IP allowlists. A superadmin approves or rejects each IP list you send for a Platform key, with a reason when rejected. Your approved list keeps working while a newer request waits.
  • Disputes. The mediation team decides release, refund, split or resume. A large decision needs a second approver.
  • Withdrawals. A live withdrawal at or above the approval threshold waits for a second approver (pending_review). Fraud screening comes first.
  • Frozen partners. While you are frozen every call answers 423 PLATFORM_FROZEN, and no automatic release, pending confirm or new withdrawal goes through. A buyer can still confirm or dispute on RekberPay, and a person can still withdraw their own balance (with two approvers). Unfreezing lets the held releases run on the next sweep.
  • Watching for abuse. Staff are alerted when a partner confirms many of its orders itself, hits its daily cap, or sees a jump in withdrawals. They may call you or freeze you.

When things happen ​

WhatWhen
Automatic release at auto_release_atRekberPay checks every 5 minutes, so it lands within about 5 minutes after the time
Your confirm (orders:confirm)After 6 hours by default (confirm_delay_hours), then within about 5 minutes
A webhookWithin about 30 seconds of the event
Overview numbers on your dashboardCan be up to about 15 seconds behind after an automatic release
A bank account's cooling-off24 hours

Rules that apply everywhere ​

  • Your users are your refs. You name every user with your own partner_user_ref (1 to 128 letters, digits or _ . : @ + = -). RekberPay never returns its internal user ids.
  • Server side only. Workspace keys work only from your server. A request with a browser Origin or Sec-Fetch-Site header is refused (403 KEY_IN_BROWSER).
  • Every write needs an Idempotency-Key. A key write without one answers 400 IDEMPOTENCY_KEY_REQUIRED. Reuse the same key when you retry.
  • Out of scope is 404. Another partner's users, deals or withdrawals, a RekberPay staff account, and a user who has not linked to you all answer 404 NOT_FOUND, never 403.
  • Sandbox first. In Sandbox no email leaves RekberPay, no gateway is charged and every deal and balance is test data. The links an email would carry come back in the API answer instead.
  • Money stays with the user. Seller money lands in the seller's partner balance at RekberPay. You see and move only the money that came from your own orders, unless the user allowed you to manage their whole balance.

Next steps ​

  1. Create and link users
  2. Run a marketplace order end to end
  3. Rate finished orders
  4. Keep your keys safe

Escrow, payment services and B2B deals for Indonesian businesses.