Conditional Payouts
Approval records for payouts. Sandbox preview.
A test-mode preview: record a payout against a condition (approval, time, webhook or milestone), collect approvals, and move it from PENDING to APPROVED or CANCELLED. Automatic expiry is not built yet. No payout rail is wired, so approving a conditional payout does not move money.
Conditions
Condition types you can record.
Time-based
Record a timeout of 1 to 720 hours. Automatic expiry is not built yet.
Approval-based
The payout moves to APPROVED once the named approvers approve it.
Webhook-triggered
Recorded as the condition type. Triggering from an inbound webhook is not built yet.
Multiple approvers
List several approvers. Every one of them must approve before the status changes.
Milestone
Recorded as the condition type. Partial, per-milestone releases are not built yet.
Current status
A record and approval trail. No money moves yet.
Conditional Payouts is a test-mode preview. It stores the payout, its condition and its approvals, and moves the status from PENDING to APPROVED or CANCELLED. It is not connected to a payout rail, so approving a payout does not release funds.
For developers
Create a conditional payout. Approve it.
# Test mode only
curl -X POST https://api.finveil.money/api/conditional-payouts \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"amountCents": 250000,
"recipientAccountId": "<CONNECT_ACCOUNT_ID>",
"condition": {
"type": "approval",
"timeoutHours": 24,
"approvers": ["<APPROVER_USER_ID>"]
}
}'
# => {
# "id": "<PAYOUT_ID>",
# "status": "PENDING",
# "timeoutAt": "..."
# }# Called by an approver's own session (test mode only)
curl -X POST https://api.finveil.money/api/conditional-payouts/<PAYOUT_ID>/approve \
-H "Authorization: Bearer <APPROVER_ACCESS_TOKEN>"
# => {
# "id": "<PAYOUT_ID>",
# "status": "APPROVED",
# "approvals": [ { "userId": "...", "approvedAt": "..." } ]
# }
# No money moves: no payout rail is wired to conditional payouts yet.Use cases
Where an approval trail helps.
Freelance platforms
Record a payout that needs the buyer’s approval before it can move forward.
Withdrawal review
Require a second person to approve a withdrawal record before it is processed.
Property deposits
Record a deposit payout that both parties must approve.
Construction payments
Record a payout against a milestone and track who approved it. Per-milestone partial releases are not built yet.
How it works
Three steps.
Create the record
Specify the connected account, amount in cents, condition type, timeout and approvers.
Collect approvals
Each named approver calls POST /api/conditional-payouts/{id}/approve, or the payout is cancelled.
Status changes
When every approver has approved, the record moves to APPROVED. Releasing funds on a rail, and automatic expiry, are not built yet.
Benefits
Why teams choose Conditional Payouts.
Four condition types
Approval, time, webhook and milestone.
No money moves
This is a state machine and approval trail. It is not connected to a payout rail.
Timeouts
Each payout carries a 1 to 720 hour timeout. The job that expires overdue payouts is not built yet.
Audit-logged
Creating, approving and cancelling a conditional payout are recorded with who did it and when.
Who it's for
Developer-friendly
Drop it into your stack.
REST API with an OpenAPI reference, and a test mode on the same API. Sign up for test API keys without a sales call. SDKs are available on request.
Read the docs# Test mode only
curl -X POST https://api.finveil.money/api/conditional-payouts \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"amountCents": 250000,
"recipientAccountId": "<CONNECT_ACCOUNT_ID>",
"condition": {
"type": "approval",
"timeoutHours": 24,
"approvers": ["<APPROVER_USER_ID>"]
}
}'
# => { "id": "...", "conditionType": "approval", "status": "PENDING", ... }