Settle campaign participant
Changed onRecords a payout of the participant's payable balance and fires campaign_payout.settled.
Omit amountCents to settle the whole payable balance. An amount above it answers 400, and nothing payable answers 409. Send an Idempotency-Key so a retry never records the payout twice.
Settlement modes
- none settlement: records a payout you made elsewhere.
- external settlement: pay from your own rails when campaign_payout.payable fires, then call this with your payout id in externalReference (required in this mode).
- treasury settlement: transfers the amount from your Zernio balance to the creator's connected Stripe account, then records it with the Stripe transfer id as externalReference.
Treasury payouts
The transfer fee (4%, $0.50 minimum) is added on top: the creator receives the full amount and your balance is debited totalCents.
- The creator must have finished payout setup from their campaign page (409 otherwise).
- A balance that does not cover the amount plus the fee answers 402.
- Money from a card top-up charged under 7 days ago cannot be paid out yet: a payout that needs it answers 409 payout_funds_locked with the day it can be sent.
Set recordOnly: true to record a payout you made yourself instead of moving money through the treasury (the webhook then carries recorded: true).
A treasury payout needs an owner, admin or billing admin, signed in or through a full-access key they created (403 otherwise). Recording with recordOnly does not.
While Stripe confirms the transfer
The amount sits in the participant's settling balance; a reject in that window cannot reverse it.
- If Stripe refuses the transfer, the amount returns to payable.
- If Stripe does not answer, the amount stays in settling. The next settle call for this participant finishes that payout first (even with nothing payable left).
Conflicts (409)
- A retry asking for a different amountCents than the payout in progress answers 409 with the amount in progress.
- A settle while another request is still waiting on Stripe for the same payout answers 409 ("This payout is being sent to Stripe right now. Try again in a minute.").
- A payout Stripe has not confirmed after 24 hours answers 409 ("This payout is being confirmed with Stripe. Try again after the next reconciliation (within 24 hours).") until the daily reconciliation finishes it: settled if Stripe made the transfer, returned to payable if it did not.
- A creator held by an unfinished payout batch answers 409 ("This creator is in a card payout that is not finished yet.").
Request
- Base URLhttps://zernio.com/api
- URLhttps://zernio.com/api/v1/creator-campaigns/{campaignId}/participants/{participantId}/settle
- AuthHTTP bearer
Path parameters
Campaign ID.
Participant ID.
Headers
Optional client-generated unique key (e.g. a UUID) that makes retries safe.
- Same key + same body: replays the original response.
- Same key + different body: 422.
- Key still processing: 409.
A request cut off mid-handler (e.g. by a function timeout) can leave its key in progress, answering 409 until the key expires after 24 hours.
Request body
Response
Settlement recorded
Changes
- info
endpoint added
- info