Conditional Payouts

Pay when conditions are met. Not before.

Hold funds until delivery is confirmed. Release on milestone. Auto-pay after 24-hour review window. Programmable payout rules for marketplaces, freelance platforms, and regulated industries.

Conditions

Payout conditions you can set.

Time-based

"Hold for 24 hours, then auto-release if no dispute is raised."

Approval-based

"Release the moment the buyer marks delivery as confirmed."

Webhook-triggered

"Pay out when the courier API confirms package delivery."

Multi-signature

"Require finance lead + project owner approval before release."

Milestone

"Release 30% on signature, 40% on hand-off, 30% on sign-off."

Not escrow

Not escrow. No license needed.

FinVeil Conditional Payouts is a programmable timer and trigger layer — not a vault. Funds remain at the licensed payment operator until the condition fires, at which point FinVeil instructs the operator to release. We never custody, hold, or settle funds — we orchestrate when the operator does. That keeps you out of trust-account and escrow-license territory while still giving you the control buyers expect.

For developers

Create a conditional payout. Approve and release.

create.bashbash
curl -X POST https://api.finveil.io/api/payouts/conditional \
  -H "Authorization: Bearer $FINVEIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount":      2500.00,
    "currency":    "ZAR",
    "recipient":   { "bankAccount": "62812345678", "name": "Acme Studio" },
    "condition":   {
      "type":      "TIME_OR_APPROVAL",
      "releaseAt": "2026-04-19T18:00:00Z",
      "approverEmails": ["buyer@acme.co.za"]
    }
  }'

# => {
#      "payoutId":  "po_cond_4f1a...",
#      "status":    "HELD",
#      "releaseAt": "2026-04-19T18:00:00Z"
#    }
approve.bashbash
curl -X POST https://api.finveil.io/api/payouts/po_cond_4f1a.../approve \
  -H "Authorization: Bearer $FINVEIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "approverEmail": "buyer@acme.co.za" }'

# => {
#      "payoutId":   "po_cond_4f1a...",
#      "status":     "RELEASED",
#      "releasedAt": "2026-04-18T20:14:02Z",
#      "rail":       "OZOW",
#      "receiptId":  "rcpt_dis_9f3a..."
#    }

Use cases

Where conditional payouts change the game.

Freelance platforms

Hold payment until the buyer confirms delivery — or auto-release after a 24-hour review window.

Gaming anti-fraud

Delay withdrawals until KYC clears and anti-fraud rules pass. Release automatically once they do.

Property deposits

Hold rental deposits until the lease is signed by both parties. Release to the correct account on trigger.

Construction payments

Pay per milestone — 30% on signature, 40% on hand-off, 30% on sign-off. All rules enforced by FinVeil.

How it works

Three steps.

1

Create the payout

Specify the recipient, amount, and the condition that releases the funds.

2

FinVeil holds the trigger

Funds stay at the licensed operator until the timer, approval, webhook or milestone fires.

3

Release on condition

Auto-pay the instant the condition is met — with a receipt anchored to a Merkle root.

Benefits

Why teams choose Conditional Payouts.

Five condition types

Time-based, approval, webhook, multi-signature, milestone — mix and match per payout.

Not escrow. No license needed.

FinVeil is a programmable timer and trigger — not a vault. Funds stay at the licensed operator.

Auto-release

Set a 24-hour review window, or release the moment an approver taps a button. Your choice per payout.

Receipt on trigger

Every release generates a SHA-256 receipt — buyer, seller and regulator can independently verify the trigger fired.

Who it's for

Marketplace opsFreelance platformsConstruction & propertyRegulated fintechs

Developer-friendly

Drop it into your stack.

REST API, typed SDKs in 9 languages, and a sandbox environment you can explore in 30 seconds. No calls with sales to get keys.

Read the docs
conditional-payouts.bashbash
curl -X POST https://api.finveil.money/api/payouts/conditional \
  -H "Authorization: Bearer $FINVEIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount":      2500.00,
    "currency":    "ZAR",
    "recipient":   { "bankAccount": "62812345678", "name": "Acme Studio" },
    "condition":   {
      "type":      "TIME_OR_APPROVAL",
      "releaseAt": "2026-04-19T18:00:00Z",
      "approverEmails": ["buyer@acme.co.za"]
    }
  }'

# => { "payoutId": "po_cond_4f1a...", "status": "HELD" }

Ready to try Conditional Payouts?