Gig Economy
PerfectPay solves the gig economy payout problem: workers want their money now, platforms want low cost and reliability, and the payment rail that works best varies per worker. PerfectPay's multi-rail payout routing picks the right rail for each disbursement automatically.
Worker Payout Integration
The basic flow for paying a gig worker:
- Worker completes work and earnings are calculated on your platform
- Your platform calls the PerfectPay payouts API with the worker's payout details
- PerfectPay selects the optimal rail based on speed, cost, and worker eligibility
- Funds are disbursed to the worker's account
- Webhook confirms delivery
POST /payouts/create
curl https://sandbox.perfectpay.ai/payouts/create \
-X POST \
-H "api-key: YOUR_SECRET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 15750,
"currency": "USD",
"payout_type": "bank",
"customer_id": "cus_worker_042",
"payout_method_data": {
"bank": {
"bank_account_number": "000123456789",
"bank_routing_number": "110000000",
"bank_name": "Worker Credit Union",
"bank_account_holder_name": "Alex Worker"
}
},
"metadata": {
"platform_earnings_id": "earn_20260323_042",
"work_type": "delivery"
}
}'
See the payouts guide for the full API reference.
Multi-Rail Payout Routing
Not every worker can receive funds on every rail. PerfectPay evaluates the available options and picks the best one:
| Rail | Speed | Typical Cost | Availability |
|---|---|---|---|
| Push-to-Card | Minutes | ~$0.25-0.50 | Most Visa/Mastercard debit cards |
| RTP | Seconds | ~$0.25 | Banks on the RTP network |
| FedNow | Seconds | ~$0.25 | Banks on the FedNow network |
| ACH Same-Day | Same business day | ~$0.05-0.25 | All US bank accounts |
| ACH Standard | 1-2 business days | ~$0.02-0.10 | All US bank accounts |
How Rail Selection Works
When you send a payout without specifying a rail, PerfectPay's smart routing evaluates:
- Worker's payment method -- card vs bank account determines eligible rails
- Speed preference -- instant payouts prefer RTP/FedNow/Push-to-Card
- Receiving bank eligibility -- not all banks support all rails
- Cost optimization -- if the worker's bank supports both RTP and FedNow, pick the cheaper option
- Fallback -- if the preferred rail fails, retry on the next available rail
You can also specify the rail explicitly if your platform logic requires it:
curl https://sandbox.perfectpay.ai/payouts/create \
-X POST \
-H "api-key: YOUR_SECRET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 15750,
"currency": "USD",
"payout_type": "bank",
"customer_id": "cus_worker_042",
"priority": "instant",
"payout_method_data": {
"bank": {
"bank_account_number": "000123456789",
"bank_routing_number": "110000000",
"bank_name": "Worker Credit Union",
"bank_account_holder_name": "Alex Worker"
}
}
}'
Setting "priority": "instant" tells PerfectPay to use the fastest available rail. If no instant rail is available for that worker's bank, it falls back to same-day ACH.
Instant Payout Capabilities
Instant payouts are the differentiator for gig platforms competing for workers. PerfectPay supports instant disbursements through:
- Push-to-Card -- funds land on the worker's debit card within minutes
- RTP (Real Time Payments) -- bank-to-bank in seconds, 24/7/365
- FedNow -- the Fed's instant payment rail, also 24/7/365
To offer instant payouts:
- Onboard workers with their debit card or bank account details
- Enable connectors that support instant payout rails (see connectors)
- Call the payouts API with
"priority": "instant" - Subscribe to
payout_succeededwebhooks to confirm delivery in real time
See the instant settlement guide for configuration details.
Smart Rail Selection Per Worker
Different workers have different financial setups. PerfectPay stores each worker's payout preferences and eligible rails:
- Worker A has a Visa debit card at a small bank not on RTP -- gets Push-to-Card for instant, ACH for standard
- Worker B has a checking account at a FedNow-enabled bank -- gets FedNow for instant, ACH for standard
- Worker C has both a debit card and a bank account -- PerfectPay picks the cheapest instant rail
This selection happens automatically at payout time. Your platform does not need to maintain rail-eligibility logic.
Batch Payouts
For platforms that pay workers at the end of a shift or day, batch payouts reduce API calls:
curl https://sandbox.perfectpay.ai/payouts/batch \
-X POST \
-H "api-key: YOUR_SECRET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"payouts": [
{
"amount": 15750,
"currency": "USD",
"customer_id": "cus_worker_042",
"payout_type": "bank"
},
{
"amount": 22300,
"currency": "USD",
"customer_id": "cus_worker_043",
"payout_type": "bank"
},
{
"amount": 8900,
"currency": "USD",
"customer_id": "cus_worker_044",
"payout_type": "card"
}
]
}'
Each payout in the batch is routed independently based on the worker's rail eligibility.
Compliance Considerations
Gig economy payouts introduce specific compliance requirements:
- 1099 reporting -- track cumulative payouts per worker for tax reporting thresholds
- KYC/KYB -- verify worker identity before enabling payouts (use account metadata to track verification status)
- OFAC screening -- ensure payees are not on sanctioned lists
- State money transmitter laws -- depending on your platform model, you may need licenses or a partnership with a licensed entity
Use PerfectPay's metadata fields to store compliance status per worker and gate payouts programmatically until all checks pass.
Webhook Events for Payouts
Subscribe to these events for real-time payout tracking:
payout_succeeded-- funds delivered to the workerpayout_failed-- payout rejected (insufficient platform balance, invalid account, rail failure)payout_expired-- payout was not completed within the expected window
See Events & Webhooks for webhook setup.
Next Steps
- Payouts -- full payout API reference and rail details
- Instant Settlement -- configure instant rails
- Payment Rails -- understand all available rails
- Connectors -- enable payout-capable connectors