Skip to main content

Disbursement Channels

Understanding the various payment channels available in NextAPI for sending money to different recipients and destinations.

Channel Overview​

NextAPI supports multiple disbursement channels to handle different payment scenarios:

Disbursement Channels
├── Digital Wallets
│ ├── GCash
│ ├── Maya
│ ├── GrabPay
│ └── Other E-Wallets
├── Bank Transfers
│ ├── InstaPay
│ ├── PESONet
│ └── SWIFT (International)
├── Cash Out
│ ├── Pawnshops
│ ├── Remittance Centers
│ └── Convenience Stores
└── Alternative Channels
├── Mobile Load
├── Bills Payment
└── Gift Cards

Digital Wallets​

GCash​

The most popular digital wallet in the Philippines:

{
"channel": "gcash",
"recipient": {
"type": "wallet",
"identifier": "09123456789",
"name": "Juan Dela Cruz"
},
"amount": 10000,
"currency": "PHP"
}

Features:

  • Instant transfers (usually < 1 minute)
  • 24/7 availability
  • Low transaction fees
  • High success rate (> 99%)

Limits:

  • Minimum: ₱1.00
  • Maximum: ₱100,000 per transaction
  • Daily limit: ₱500,000

Maya​

Formerly known as PayMaya:

{
"channel": "maya",
"recipient": {
"type": "wallet",
"identifier": "09123456789",
"name": "Maria Santos"
},
"amount": 5000,
"currency": "PHP"
}

Features:

  • Instant transfers
  • QR code payments
  • Virtual card support
  • International transfers available

Bank Transfers​

InstaPay​

Real-time electronic fund transfer:

{
"channel": "instapay",
"recipient": {
"type": "bank_account",
"account_number": "123456789012",
"account_name": "Juan Dela Cruz",
"bank_code": "BPI"
},
"amount": 50000,
"currency": "PHP"
}

Features:

  • Real-time processing (under 1 minute)
  • Available 24/7
  • Supports 40+ banks
  • High reliability

Limits:

  • Minimum: ₱500.00
  • Maximum: ₱50,000 per transaction

PESONet​

Batch electronic fund transfer:

{
"channel": "pesonet",
"recipient": {
"type": "bank_account",
"account_number": "123456789012",
"account_name": "Juan Dela Cruz",
"bank_code": "BDO"
},
"amount": 100000,
"currency": "PHP"
}

Features:

  • Lower fees for large amounts
  • Same-day processing
  • Supports all Philippine banks
  • Ideal for payroll and bulk payments

Processing Times:

  • Batch 1: 10:00 AM
  • Batch 2: 2:00 PM
  • Batch 3: 5:00 PM

Cash Out Channels​

Pawnshops​

Cebuana Lhuillier, Palawan Express, etc.:

{
"channel": "pawnshop",
"recipient": {
"type": "cash_out",
"provider": "cebuana",
"reference_number": "1234567890",
"name": "Juan Dela Cruz"
},
"amount": 25000,
"currency": "PHP"
}

Features:

  • Nationwide coverage
  • No bank account required
  • ID verification needed
  • Available in remote areas

Remittance Centers​

Western Union, MLhuillier, etc.:

{
"channel": "remittance",
"recipient": {
"type": "remittance",
"provider": "western_union",
"tracking_number": "MTCN123456789",
"name": "Juan Dela Cruz",
"address": "Manila, Philippines"
},
"amount": 15000,
"currency": "PHP"
}

Channel Selection Guide​

Use Digital Wallets When:​

  • Speed is critical (instant transfers needed)
  • Amount is small to medium (under ₱100,000)
  • Recipient has mobile wallet
  • 24/7 availability required

Use Bank Transfers When:​

  • Amount is large (over ₱50,000)
  • Recipient prefers bank deposit
  • Business payments required
  • Record keeping important

Use Cash Out When:​

  • Recipient has no bank account
  • Remote area delivery needed
  • Cash collection preferred
  • Alternative to banks required

Channel Configuration​

Default Channel Settings​

{
"default_channel": "gcash",
"fallback_channels": ["maya", "instapay"],
"channel_preferences": {
"speed_priority": true,
"cost_minimization": false,
"availability_24_7": true
}
}

Automatic Channel Selection​

{
"auto_select_channel": true,
"selection_criteria": {
"amount": "auto",
"recipient_type": "auto",
"time_of_day": "auto",
"cost_efficiency": "medium"
}
}

Error Handling​

Channel-Specific Errors​

// Wallet not found
{
"error": {
"code": "WALLET_NOT_FOUND",
"message": "Recipient wallet not found",
"channel": "gcash",
"suggestion": "Verify wallet number or try different channel"
}
}

// Bank account invalid
{
"error": {
"code": "INVALID_BANK_ACCOUNT",
"message": "Bank account validation failed",
"channel": "instapay",
"details": "Account number does not match bank format"
}
}

// Channel maintenance
{
"error": {
"code": "CHANNEL_UNAVAILABLE",
"message": "Payment channel temporarily unavailable",
"channel": "maya",
"retry_after": "2024-01-15T14:00:00Z"
}
}

Fallback Strategies​

// Implement channel fallback
async function sendPayoutWithFallback(payout) {
const channels = ['gcash', 'maya', 'instapay'];

for (const channel of channels) {
try {
const result = await sendPayout({
...payout,
channel
});
return result;
} catch (error) {
if (error.code === 'CHANNEL_UNAVAILABLE') {
continue; // Try next channel
}
throw error; // Re-throw other errors
}
}

throw new Error('All channels failed');
}

Monitoring and Analytics​

Channel Performance Metrics​

{
"channel_metrics": {
"gcash": {
"success_rate": 99.5,
"average_time": 45, // seconds
"cost_per_transaction": 2.50,
"volume_today": 1500000
},
"instapay": {
"success_rate": 98.8,
"average_time": 120, // seconds
"cost_per_transaction": 15.00,
"volume_today": 2500000
}
}
}

Real-time Monitoring​

// Get channel status
GET /v1/channels/status

// Response
{
"channels": {
"gcash": {
"status": "operational",
"response_time": 45,
"success_rate_24h": 99.2
},
"maya": {
"status": "degraded",
"response_time": 180,
"success_rate_24h": 95.1,
"issue": "High latency detected"
}
}
}

Best Practices​

  1. Know your recipients - Choose channels based on recipient preferences
  2. Monitor channel health - Track success rates and response times
  3. Implement fallbacks - Have backup channels ready
  4. Consider costs - Balance speed vs. transaction fees
  5. Test thoroughly - Validate each channel before production
  6. Stay updated - Channel availability can change
  • [The Lifecycle of a Payout](./the-lifecycle-of-a-payout
  • [Handle Payout Failures & Retries](../guides/how-to/handle-payout-failures-retries
  • [Run Payroll (or any Mass Payout)](../guides/how-to/run-payroll-or-any-mass-payout