HeldSway

Payouts

Dashboard (UI)

Navigate to Sidebar → Payouts (/payouts).

Metric Meaning
Pending Amount Total commission ready to be paid
Pending Count Number of affiliates with pending payouts
Completed This Month Total paid out this calendar month
Pending Requests Number of payout requests awaiting action

Payout Methods by Plan:

Plan Methods
Nano PayPal (manual trigger)
Basic PayPal + Bank/ACH
Standard PayPal + Bank/ACH + Automated W9/W8 collection
Custom All above + Crypto + 1099 e-filing

Payout Status Lifecycle

Pending ──► Processing ──► Completed
         ╰──────────────►  Failed
From To Endpoint
pending processing POST /v1/payouts/{id}/processing
pending completed POST /v1/payouts/{id}/complete
pending failed POST /v1/payouts/{id}/fail
processing completed POST /v1/payouts/{id}/complete
processing failed POST /v1/payouts/{id}/fail

Payouts REST API

Endpoints:

Method Path Scope Description
GET /v1/payouts payouts:read List payouts (paginated)
GET /v1/payouts/stats payouts:read Aggregated statistics
GET /v1/payouts/requests payouts:read List affiliate payout requests
GET /v1/payouts/export payouts:read Download CSV export
GET /v1/payouts/{id} payouts:read Single payout detail
GET /v1/payouts/{id}/statement payouts:read Download PDF statement
POST /v1/payouts/{id}/processing payouts:write Mark as processing
POST /v1/payouts/{id}/complete payouts:write Mark as completed
POST /v1/payouts/{id}/fail payouts:write Mark as failed
POST /v1/payouts/bulk-processing payouts:write Bulk mark as processing
POST /v1/payouts/bulk-complete payouts:write Bulk mark as completed
POST /v1/payouts/requests/{id}/approve payouts:write Approve a payout request
POST /v1/payouts/requests/{id}/reject payouts:write Reject a payout request
GET /v1/settings/payouts settings:read Read payout configuration
PUT /v1/settings/payouts settings:write Update payout configuration

Get Payout Stats:

curl "https://api.heldsway.com/api//v1/payouts/stats" \
  -H "Authorization: Bearer <access_token>"
{
  "data": {
    "total_pending_amount": 1250.00,
    "total_pending_count": 5,
    "completed_this_month": 3400.00,
    "failed_count": 1,
    "pending_requests_count": 2
  }
}

Mark Payout as Completed:

curl -X POST "https://api.heldsway.com/api//v1/payouts/42/complete" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{ "reference": "TXN-12345", "notes": "Paid via bank transfer" }'

Approve a Payout Request:

curl -X POST "https://api.heldsway.com/api//v1/payouts/requests/10/approve" \
  -H "Authorization: Bearer <access_token>"

Update Payout Settings:

curl -X PUT "https://api.heldsway.com/api//v1/settings/payouts" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "payout_frequency": "monthly",
    "payout_day": 1,
    "min_payout": 50,
    "allow_early_requests": true,
    "auto_create_payouts": true
  }'

Error Reference:

HTTP Code Description
401 UNAUTHORIZED Missing or invalid Bearer token
403 FORBIDDEN Token lacks required scope
404 NOT_FOUND Payout or request not found
409 INVALID_STATUS Invalid status transition attempted
422 VALIDATION_ERROR Request parameters failed validation
429 Rate limit exceeded