Skip to content

Agree who pays the fee ​

Every enterprise deal pays one platform fee to RekberPay. The two companies decide who carries it. This guide explains the fee, the default your workspace owner sets, and how a payer and a linked partner agree the split deal by deal.

How the fee works ​

The fee is charged once per deal, on the deal total:

  • Rate. 2 percent of the total, unless RekberPay agreed another rate with your workspace. Workspaces with volume pricing get a lower rate when they release enough in a rolling 30 days.
  • Minimum. At least Rp 5.000 per deal on rupiah deals.
  • Cap. The fee never takes more than the total minus one unit per milestone, so every milestone keeps a payout above zero.
  • Pricing is yours to read, not to change. It belongs to the workspace that creates the deal. Read it in Settings, Platform fee, or with GET /v1/enterprise/fees. RekberPay sets it per workspace.
  • Frozen on create. The rate, minimum and volume tier are fixed when the deal is created. Later pricing changes never reach that deal.

The split decides who pays. It is stored as the payer's percentage, a whole number from 0 to 100, and the partner pays the rest. There are no decimals, so 60 and 61 are possible and 60.5 is not:

Choice in the dashboardfee_allocationPayer paysPartner pays
Your workspacebuyer100%0%
Counterpartyseller0%100%
Splitsplit with fee_buyer_percent0 to 100%the rest

How the two shares are charged:

  • The payer's share is added to what the payer funds. It is spread over the milestones in proportion to their amounts.
  • The partner's share is held back from each payout, in the same proportion.

Example. A deal of Rp 100.000.000 in three milestones of Rp 30.000.000, Rp 40.000.000 and Rp 30.000.000 has a fee of Rp 2.000.000. With a 60 / 40 split the payer's share is Rp 1.200.000 and the partner's is Rp 800.000.

MilestonePayer fundsPartner receives
1 (Rp 30.000.000)Rp 30.360.000Rp 29.760.000
2 (Rp 40.000.000)Rp 40.480.000Rp 39.680.000
3 (Rp 30.000.000)Rp 30.360.000Rp 29.760.000
TotalRp 101.200.000Rp 99.200.000

The payment method fee for a live payment is separate and is always paid by the payer. See Fund a live deal.

1. Set the default split (owner) ​

The default only pre-fills the New deal form. Each deal still carries its own split. If nobody ever sets it, the default is that the payer pays the whole fee.

In the dashboard

  1. As the workspace owner, open Settings.
  2. In Platform fee, under Default split for new deals, choose Your workspace, Counterparty or Split. For a split, type your workspace's share as a whole percent from 0 to 100, for example 60. The Counterparty line beside it shows the rest, 40 in this example.
  3. Choose Save default split.

Other roles see the default but cannot change it.

With the API

Only an owner can change it, and only from a dashboard session. An API key is refused with 403 KEY_NOT_ALLOWED.

bash
curl -X PUT https://api.rekberpay.com/v1/enterprise/fees/default-allocation \
  -b cookies.txt \
  -H "X-CSRF-Token: $CSRF_TOKEN" \
  -H "X-Enterprise-Account: $WORKSPACE_ID" \
  -H "Idempotency-Key: $(uuidgen | tr 'A-Z' 'a-z')" \
  -H "Content-Type: application/json" \
  -d '{ "fee_allocation": "split", "fee_buyer_percent": 60 }'

2. Preview the fee ​

Before you create a deal, see what it will cost.

In the dashboard, the Platform fee card on New deal updates as you type the milestones. With the API:

bash
curl -X POST https://api.rekberpay.com/v1/enterprise/fees/preview \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "milestones": [{ "amount": 30000000 }, { "amount": 40000000 }, { "amount": 30000000 }],
    "fee_allocation": "split",
    "fee_buyer_percent": 60
  }'

The answer has the platform fee, each side's share, what the payer funds in total and what the partner receives.

3. Propose the split on the deal (payer) ​

In the dashboard

  1. Open Deals, then New deal, or Edit deal on a draft.
  2. In the Platform fee card, under Who pays the fee, choose who pays. It starts from your default. For Split, type your workspace's share as a whole percent from 0 to 100. The field keeps you inside that range: it drops the digits after a decimal point (5.5 becomes 5) and anything above 100 becomes 100. A split of 100 is the same as Your workspace, and 0 is the same as Counterparty.
  3. Save the draft.

With the API, send the split when you create or edit the draft:

bash
curl -X POST https://api.rekberpay.com/v1/enterprise/deals \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Packaging order, Q4",
    "counterparty_id": "'"$COUNTERPARTY_ID"'",
    "fee_allocation": "split",
    "fee_buyer_percent": 60,
    "milestones": [
      { "title": "Deposit", "amount": 30000000 },
      { "title": "Production", "amount": 40000000 },
      { "title": "Delivery", "amount": 30000000 }
    ]
  }'

Send fee_allocation as buyer or seller (with no percent, or 100 or 0), or as split with fee_buyer_percent. Sending only fee_buyer_percent works too. fee_buyer_percent must be a whole number from 0 to 100. A decimal such as 60.5, or a number outside the range, answers 400 INVALID_BODY. A mix that contradicts itself, such as buyer with 60, or split with no percent, answers 400 INVALID_FEE_ALLOCATION.

What happens next depends on the counterparty:

  • No linked workspace. There is nobody to agree with. Your split stands and the deal can be activated.
  • Linked partner workspace. Your split is a proposal. The deal shows "Waiting for CV Mitra Pangan to agree the fee split", and the partner is notified.

Editing the split or the counterparty on a draft is a new proposal from you and replaces any earlier one.

4. Answer the proposal (partner) ​

In the dashboard

  1. Open Shared deals. A deal that needs you shows Split to agree.
  2. Open it. The Platform fee card shows the fee and the split in words, for example "a 60 / 40 split (Sinar Laut / you)", and a line saying whose turn it is.
  3. Choose Accept split to agree. Or choose Counter, set the payer's share in Counter the fee split, and choose Send counter-offer.

You need the finance role. A sandbox partner cannot answer on a live deal.

With the API

bash
# Accept
curl -X POST https://api.rekberpay.com/v1/enterprise/shared-deals/$DEAL_ID/fee-agreement \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "decision": "accept" }'

# Counter: the percent is the payer's share
curl -X POST https://api.rekberpay.com/v1/enterprise/shared-deals/$DEAL_ID/fee-agreement \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "decision": "counter", "fee_allocation": "split", "fee_buyer_percent": 50 }'
StatusCodeCause
409NOTHING_TO_ACCEPTThere is no proposal from the payer waiting for you
409ALREADY_AGREEDThe split is settled. Ask the payer to change the draft
409NOT_DRAFTThe deal is active. The split is frozen

5. Answer a counter-offer (payer) ​

When the partner counters, the draft shows "CV Mitra Pangan proposed a fee split" with the new numbers.

In the dashboard, choose Accept split, or edit the draft to propose something else.

With the API

bash
# Accept the partner's counter
curl -X POST https://api.rekberpay.com/v1/enterprise/deals/$DEAL_ID/fee-agreement \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "decision": "accept" }'

# Or propose another split
curl -X PATCH https://api.rekberpay.com/v1/enterprise/deals/$DEAL_ID \
  -H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "fee_allocation": "split", "fee_buyer_percent": 55 }'

Accepting needs the finance role. Only the side that did not make the latest proposal can accept it. The two sides can go back and forth as many times as needed while the deal is a draft.

What blocks funding ​

A deal with a linked partner cannot be activated, and so cannot be funded, while a proposal is open. These all answer 409 FEE_NOT_AGREED:

  • activating the deal while the split is proposed
  • recording sandbox funding, or starting a live payment, on a milestone of such a deal
  • activating a draft whose link ended. It waits until a new link is accepted and the split is agreed again. See End a partner link

The deal's fee_agreement field tells you where things stand:

statusproposed_byMeaning
proposedworkspaceThe payer proposed. The partner must answer
proposedcounterpartyThe partner countered. The payer must answer
agreedeitherSettled. The deal can be activated
not_requirednoneThe counterparty has no linked workspace

blocks_funding is true while a proposal is open, and relink_required is true for a draft that lost its link.

Once the deal is activated, the split freezes with the other terms. The fee amounts change with milestone edits only while the deal is a draft.

RekberPay can override a split in exceptional cases. The override settles the agreement and shows in the history as "RekberPay set the fee split".

Webhooks ​

deal.fee_proposed and deal.fee_agreed are sent for deals with a linked partner. Both workspaces see the events in their own activity feed.

Next steps ​

Escrow, payment services and B2B deals for Indonesian businesses.