Skip to content

Payment split

Payment split lets you divide the net amount of an order between a marketplace and one or more pre-registered recipients. This guide walks through the end-to-end flow and product rules. Each individual endpoint is documented on the reference pages linked at the bottom of each section.

Flow overview

The process has three blocks:

  1. Onboarding & KYC — register the recipient and complete the mandatory facematch.
  2. Order split — divide the order's net value between the marketplace and the recipients.
  3. Withdrawal — check balances and request a payout (with or without anticipation).

Rules

  • Partial refunds are not allowed on split orders. Only full refunds.
  • Split cannot be created or modified on orders with approved status. Create the split before payment approval.
  • The split is calculated on the net amount of the order (after Appmax fees), not on the gross amount. Example:
ComponentAmount
Order (gross)R$ 100.00
Net amount (after fees)R$ 90.00
Split to recipientsR$ 40.00
Marketplace balanceR$ 50.00
  • All amounts in split and withdrawal payloads are always in cents (integers).

Recipient status

Recipient onboarding goes through three possible states, returned by GET /recipient/{recipient_hash}/status:

StatusMeaning
Awaiting face match completionThe recipient still needs to complete the facematch (KYC) via SMS.
Onboarding on verificationData + facematch received, under review by Appmax.
Onboarding completedApproved. The recipient can receive splits.

A recipient_hash can only be used in a split after it reaches Onboarding completed.

For the full status reference — transitions, eligibility per state, and withdraw request (WithdrawRequest) statuses — see Payment split status.

Endpoints per stage

Onboarding & KYC

  1. Create a recipientPOST /recipient
  2. Create facematch link (KYC)POST /recipient/{recipient_hash}/facematch-link
  3. Get recipient statusGET /recipient/{recipient_hash}/status

Order split

  1. Create order splitPOST /orders/{orderId}/split-order

Withdrawal

  1. Get recipient balancesGET /recipient/{recipient_hash}/balances
  2. Simulate withdrawal anticipationGET /recipient/{recipient_hash}/withdraw-request/anticipation/simulate
  3. Request withdrawal anticipationPOST /recipient/{recipient_hash}/withdraw-request/anticipation
  4. Request withdrawal with available balancePOST /recipient/{recipient_hash}/withdraw-request/available
  5. Get withdrawal requestGET /withdraw-request/{withdrawRequestId}

Withdrawal vs anticipation

There are two balance types and two distinct endpoints to withdraw them:

Balance typeEndpointUse
availablePOST /recipient/{recipient_hash}/withdraw-request/availableAlready released balance. Direct withdrawal, no anticipation fee.
to_releasePOST /recipient/{recipient_hash}/withdraw-request/anticipationNot-yet-released balance. Anticipated payout with fee applied.

Before requesting an anticipation, use the simulation endpoint to show the recipient the net amount and applied fee — the simulation does not create any request.

Authentication

All split routes use the same authentication scheme described in Authentication: Authorization: Bearer <token> with the merchant token obtained via POST /oauth2/token. App credentials do not work on these routes.

See also

TIP

Common questions about registration, editing, deletion, KYC and SMS are grouped in FAQ — Payment split.