Link a partner workspace
Some of your counterparties also run an Enterprise workspace. Linking connects the counterparty record in your workspace to theirs. After that, both companies follow each deal from their own dashboard, agree who pays the platform fee, and the partner delivers milestones from its side.
Two names are used in this guide:
- The payer is the workspace that creates deals and funds them. It owns the counterparty record.
- The partner is the company on the other side. It receives the payouts.
Linking is optional. A counterparty without a workspace works as before: the payer's team records everything and nobody else needs to agree anything.
Before you start
- A link serves both modes. Either workspace can link before or after its Live is unlocked. Each mode only ever shows its own deals: in Sandbox you see and act on test deals, in Live on live deals. A live deal with a partner needs the partner's Live unlocked (
409 COUNTERPARTY_LIVE_LOCKEDuntil then). - Sandbox never changes Live. While the payer has live deals with the partner, accepting the link, ending it or using the counterparty as a regular one from Sandbox answers
409 LINK_HAS_LIVE_DEALS. Switch to Live to do it there. - The payer has the partner as a counterparty. If not, add it first.
- An admin or owner sends the request, and an admin or owner of the partner accepts it. Linking is a dashboard action: an API key is refused with
403 KEY_NOT_ALLOWED.
1. Add the counterparty (payer)
In the dashboard
- Open Counterparties and choose New counterparty.
- Fill in Company name, Country code, Relationship (buyer, seller, both, vendor or client) and optionally a contact name and email.
With the API
curl -X POST https://api.rekberpay.com/v1/enterprise/counterparties \
-H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "CV Mitra Pangan Nusantara",
"country_code": "ID",
"relationship": "seller",
"contact_email": "[email protected]"
}'2. Find the Workspace ID (partner)
The partner shares its Workspace ID with the payer.
In the dashboard
- Open Settings.
- In the Profile card, find Workspace ID and choose Copy.
- Send it to the payer. It is not secret, but it only works for a link request that an admin of your workspace then accepts.
With the API
GET /v1/enterprise/me returns the workspace as data.account.id. It needs a dashboard session or a personal API key. A workspace key cannot call /me.
curl https://api.rekberpay.com/v1/enterprise/me \
-H "Authorization: Bearer $REKBERPAY_PERSONAL_KEY" \
-H "X-Enterprise-Account: $WORKSPACE_ID"3. Send the link request (payer)
In the dashboard
- On Counterparties, find the partner's row. In the RekberPay workspace column, choose Link.
- In the dialog Link CV Mitra Pangan Nusantara to its workspace, paste the partner's workspace ID under Their workspace ID.
- Choose Send link request. A message tells you an admin of that workspace needs to accept.
The column now reads Request sent. Open it again to Withdraw request at any time. Nothing changes until the partner accepts. Once accepted, the column shows the partner's workspace name.
With the API
curl -X POST https://api.rekberpay.com/v1/enterprise/counterparties/$COUNTERPARTY_ID/link \
-b cookies.txt \
-H "X-CSRF-Token: $CSRF_TOKEN" \
-H "X-Enterprise-Account: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{ "workspace_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d" }'201 Created
{
"success": true,
"data": {
"id": "6d5c4b3a-2f1e-4d0c-9b8a-7f6e5d4c3b2a",
"status": "pending",
"workspace_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"counterparty_id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f"
}
}| Status | Code | Cause |
|---|---|---|
400 | SAME_WORKSPACE | You pasted your own workspace ID |
404 | WORKSPACE_NOT_FOUND | No workspace has this ID. Ask the partner to copy it again |
409 | ALREADY_LINKED | The counterparty is already linked to a workspace |
A counterparty has one open request at a time. Sending a new one replaces the old one. To withdraw a request with the API, call DELETE /v1/enterprise/counterparties/:id/link.
4. Accept the request (partner)
The partner's admins get a notification such as "PT Maju Retail wants to work with you on RekberPay".
In the dashboard
- Open Counterparties. The Link requests card lists each request with the payer's name and the name it knows you by.
- Choose Accept, or Decline if you do not want the link.
With the API
# List the requests waiting for you
curl "https://api.rekberpay.com/v1/enterprise/counterparty-links?direction=incoming&status=pending" \
-H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY"
# Accept one (dashboard session, admin)
curl -X POST https://api.rekberpay.com/v1/enterprise/counterparty-links/$LINK_ID/accept \
-b cookies.txt \
-H "X-CSRF-Token: $CSRF_TOKEN" \
-H "X-Enterprise-Account: $WORKSPACE_ID"Use /decline instead of /accept to refuse. Link statuses are pending, accepted, declined, cancelled (withdrawn or replaced) and unlinked.
A linked partner that is a verified RekberPay workspace with Live unlocked also passes the check that stands before a live payout, so you do not need to send it a separate verification link. A partner whose Live is still locked does not pass. See Verify a counterparty.
When the partner accepts:
- The counterparty becomes linked, and the payer is notified.
- The payer's open draft deals with that counterparty turn into fee proposals that the partner has to agree before the deals can be activated. See Agree who pays the fee.
- Every deal with that counterparty is shared with the partner workspace.
- If the partner declines, the payer is told, and deals with that counterparty work as before.
Other ways to link
You do not always start from a workspace ID.
- From a deal preview. When a live deal is activated for a counterparty without a workspace, RekberPay emails its contact a read only preview. The person signs in and picks a workspace. The link is made at once when their verified email matches the contact email and the workspace legal name is the same company name as the counterparty (ignoring case, punctuation and words such as PT or CV). Otherwise an admin of the payer confirms it under Link requests.
- From an invitation. On the counterparty row, Invite to link workspaces emails the contact. You never learn whether the address has a workspace. The invited admin accepts under Counterparties, Invitations.
Both are described in Share a deal with your counterparty. A link made either way works like the one above: it serves Sandbox and Live, and the fee split is agreed before a deal is funded.
5. What each side sees and can do
| Payer | Partner | |
|---|---|---|
| Where | Deals and Counterparties | Shared deals, and Link requests and Linked workspaces cards |
| Deal terms, milestones, fee split | Yes | Yes |
| Create and edit draft deals | Yes | No |
| Agree the fee split | Accepts the partner's counter, or edits the draft to propose another | Accept split or Counter (finance role) |
| Fund and pay milestones, or the whole deal | Yes (finance) | No |
| Deliver a milestone | Yes, when it records delivery for the partner | Deliver from the shared deal (operator role) |
| Approve, reject, request revision | Yes (finance, four-eyes) | No, but sees when a revision is requested and why |
| Release and payout instructions | Yes (finance) | No. Sees each payout's amount and status |
| Open a dispute | Yes | Dispute on a funded, submitted or approved milestone |
| Shared deal room | Deals, then the deal | Shared deals, then the deal. Files, required documents, next steps and the activity line, the same room |
| Choose where the counterparty is paid | No. The payer releases with no splits once the partner chose | Where you get paid (finance role) |
| Cancel a funded deal | Alone before the partner joined, otherwise proposes a cancellation | Confirms or declines a proposal (finance role) |
| Documents | All | Only documents shared with Your workspace and the counterparty |
| History | Full | Funding, evidence, approval, release, fee split, dispute and payout events, with the other side shown only as "payer" or "You" |
On a live deal the partner can read everything at once, but its actions wait until its own business verification is approved (403 KYB_REQUIRED). Sandbox deals have no such wait.
The partner never sees the payer's other deals or counterparties, its notes on you, internal documents, approver names or approval notes (apart from a revision request it must act on), the payer's funding method or its payout instruction labels.
Shared deals follow the mode too. In Sandbox the partner sees only test deals, and in Live only live deals. A live deal is acted on from Live: agreeing the split, delivering or disputing it from Sandbox answers 409 SANDBOX_WORKSPACE.
Shared deals with the API
curl "https://api.rekberpay.com/v1/enterprise/shared-deals?state=active" \
-H "Authorization: Bearer $REKBERPAY_WORKSPACE_KEY"state is all (default), active or archived. Each deal has access (active or archived) and linked (whether the link behind it is still in place). Read one deal with GET /v1/enterprise/shared-deals/:id.
Webhooks and events
Link changes appear in the activity feed of both workspaces and can be sent to a webhook as counterparty.link_requested, counterparty.linked, counterparty.link_declined and counterparty.unlinked. When an invitation email is refused or skipped, the send is given back and counterparty.link_invite_refused is written to the activity feed only.