Skip to main content

Release a payout

A payout instruction is a request to a licensed provider to send money to a registered destination. Pehmen writes the instruction, decides about it, and hands it over. The money never passes through Pehmen.

Click any step to read what happens there and what can refuse it.

The dual-control threshold​

TRUST_DUAL_CONTROL_THRESHOLD_MINOR, SGD 10,000.00 by default. At or above it, one approval opens a request and a second person must complete it. The demo's SGD 24,000.00 payout to Cassia Ticketing exists to show exactly this.

Approving with the dashboard​

  1. Open the instruction from Payouts → Waiting on someone.
  2. Read Why it is held and What the Gate decided. If the reasons include FULFILLMENT_EVIDENCE_TIER_TOO_LOW, look for fulfillment evidence on the orders named in Release conditions before approving.
  3. Press Approve. Answer the second-factor prompt if it appears.
  4. If the page says waiting for a second approver, send the approval id to a colleague with payouts:approve. They open the same page, paste it into Approval id (second approver only), and press Approve.
  5. Someone with payouts:release presses Release.

Fulfillment evidence​

The protective template holds a large payout unless fulfillment evidence of tier 2 or better exists for the orders in its release condition:

TierWhat it isWho can supply it
1A source-authenticated system event (ticketing gate scan, carrier API)A platform-operated SYSTEM_API source. Not yet available to tenants.
2A signed event from your platform, with replay protectionYou: POST /v1/fulfillment-sources (kind PLATFORM_SIGNED) gets a signing secret shown once; then POST /v1/fulfillment-events with the signature.
3Buyer confirmationYou: a BUYER_CONFIRMATION source. Supporting evidence only; never the sole basis for release.

Reversal events (reversal_of) cancel the evidence they name. A held payout re-evaluates on release, so evidence attached after the hold counts.

What refuses​

RefusalWhy
step_up_requiredYour second factor is older than five minutes.
approver_must_differThe same person tried to be both approvers.
approval_staleThe instruction changed between approval and release. Approve again.
connection_not_active / connection_kind_invalidThe payout connection is not ACTIVE, or is a pooled demo connection.
cooling_off_activeThe beneficiary has a change still cooling off.