Skip to main content

Payroll & Bulk Disbursement

"I have 1,000 guards/riders/employees. Every 15th and 30th I need to pay all of them — different banks, different wallets — with a receipt for each person."

If your platform disburses money to large numbers of recipients on a schedule — payroll, rider earnings, seller commissions, guard wages — NextAPI's batch payout API handles the routing, delivery, and confirmation so you don't have to.

The problem

Paying 100+ people manually is a 2–5 person-day operation per pay cycle:

  • Logging into bank portals one by one
  • Uploading files in different formats for different banks
  • Manually checking statement confirmations the next day
  • Handling bounce-backs with no automated retry

At scale, manual disbursement breaks. And your recipients have BPI, BDO, UnionBank, GCash, Maya — you'd need relationships with all of them.

How NextAPI handles it

One API call to POST /v2/payout-requests/batch submits all your payouts at once. NextAPI:

  • Routes each payout to the correct rail (InstaPay for amounts ≤ PHP 50,000; PESONet for larger amounts)
  • Handles individual bank connectivity — if one bank is temporarily down, retries that payout without affecting others
  • Sends a webhook per payout when it completes (or fails), so you know the instant each recipient gets paid
Your platform → POST /v2/payout-requests/batch

NextAPI routes each payout:
├── InstaPay: real-time, ≤ PHP 50,000
└── PESONet: batch, same-day, no limit

Webhook per payout: payout_request.completed / payout_request.failed

Typical integration for payroll platforms

Your platform manages the employer-employee relationship and computes net pay. NextAPI handles the last mile: moving money from the employer's account to each employee's bank or wallet.

1. Employer loads payroll funds into their NextAPI account
(via bank transfer or internal transfer)

2. On payroll date, your platform calls:
POST /v2/payout-requests/batch
with each employee's bank/wallet and net pay amount

3. NextAPI routes and processes each payout

4. Your platform receives webhooks per payout
→ Update each employee's payslip status to "paid"

5. Employer sees total disbursed via GET /v2/accounts/{id}/postings

Key API endpoints

ActionEndpoint
Check available balanceGET /v2/accounts/{id}/balances
Send a single payoutPOST /v2/payout-requests
Send batch payoutsPOST /v2/payout-requests/batch
Check payout statusGET /v2/payout-requests/{id}
List all payouts in a requestGET /v2/payout-requests/{id}/payouts
Get payout receiptGET /v2/payouts/{id}/receipt
Check rail healthGET /v2/payout-requests/service-health

Supported recipients

NextAPI reaches every major Philippine bank (BPI, BDO, UnionBank, Metrobank, RCBC, Chinabank, and 50+ more via InstaPay/PESONet) and e-wallets (GCash, Maya). Use GET /v2/receiving-institutions to get the current list with routing codes.

Handling mixed recipient types

Most payroll datasets include a mix of bank accounts and e-wallets. Pass the appropriate type per payout request:

# Bank account recipient
curl -u "$CLIENT_ID:$CLIENT_SECRET" \
-X POST "https://api.partners.nextpay.world/v2/payout-requests" \
-H "Content-Type: application/json" \
-d '{
"account_id": "acct_xxx",
"amount": 2500000,
"recipient": {
"type": "bank_account",
"bank_code": "BPI",
"account_number": "1234567890",
"account_name": "Juan dela Cruz"
},
"description": "Salary - November 2025",
"reference": "PAYROLL-NOV-2025-EMP001"
}'

NextAPI automatically selects InstaPay or PESONet based on amount and recipient bank.

Proof of payment

Every completed payout has a receipt available at GET /v2/payouts/{id}/receipt. The receipt includes the bank's transaction reference number — usable as proof of transfer for your recipients or for your own compliance records.

Getting started

  1. Get sandbox credentials
  2. Follow Your First Payout to make your first payout end-to-end
  3. Follow Send a Single Payout to test the basic flow
  4. Follow Run Mass Payroll to implement batch processing
  5. Read Payout Lifecycle to understand the state machine
  6. Set up Webhooks for real-time payout confirmations