Skip to main content
This is the direct mode. You name the vendor on the payment intent, and Yabetoo splits the gross between them, you and Yabetoo at the moment the customer pays, atomically.
Prefer this mode whenever you know the vendor at the time of the sale. It gives the best traceability: every charge carries the identity of its vendor and its commission.

Create the intent

Add two fields to your usual payment intent creation call.
Both go together, or neither. Supplying only one returns 422 connect.incomplete_request. With neither, the charge is an ordinary charge on your own account.
Confirming the intent is then identical to an ordinary payment: see Confirm an intent. Nothing changes for the end customer: they pay as usual.
Vocabulary collision with Stripe, worth knowing. At Stripe, on_behalf_of designates the settlement merchant and the funds stay with the platform. At Yabetoo, this field says where the money GOES. If you are coming from Stripe, do not read it backwards.
Why a rate and not an amount. The gross is converted into the currency of the chosen country at confirmation time: an intent of 100 EUR confirmed in Congo captures roughly 65,000 XAF, while a fixed amount of 20 would stay 20. A rate stays correct at any scale.
destination is the old name of on_behalf_of. It is refused with a 422, never ignored.

What happens at capture

On 10,000 XAF, with application_fee_rate: 10, in controller mode and on the standard rate card (collection 3.5% + 25, Connect 1%): Check: 8 975 + 550 + 475 = 10 000. The detail of both modes and of the refusals: Commissions and pricing.
The vendor’s net arrives as PENDING balance, not available balance. It becomes payable after the availability delay. See Balances and payouts.

Reading the shares after capture

GET /v1/payment-intents/{id} carries a connect block on any intent created with on_behalf_of. It is null on an ordinary intent.
200
These amounts describe the capture: a later refund or reversal does not change them. The block is present on the single read only, not on the intent list.

Checks performed at creation

Yabetoo refuses when the intent is created, not when the customer pays. This is deliberate: a contract refusal must reach your developer, not your buyer.
1

The vendor is indeed yours

Otherwise 403. An unknown vendor and a vendor belonging to another marketplace return the same response.
2

The commission mode is known

Otherwise 422 connect.fee_payer_unset. Activate Connect on your account.
3

Your commission covers the Yabetoo fees

In controller mode only. Otherwise 400 connect.application_fee_too_low, with the rate floor and the required minimum in the body.
4

The vendor would receive a positive amount

Otherwise 422 connect.vendor_net_not_positive.

Errors

The alternative

If you do not yet know the vendor at the time of the sale (multi-vendor cart, split computed after the fact), charge normally on your account and split afterwards: Deferred mode.