Watenga Capital

Watenga Capital offers eligible sub-merchants a cash advance that is repaid automatically as a fixed percentage (the holdback) of each settlement — no fixed instalments, no manual repayments.

How it works

Watenga underwrites an advance based on your processing history and surfaces it as an offer. When you accept, the funds are disbursed to your Watenga balance. As you process payments, a percentage of every settlement (the holdback_pct) is deducted and applied to the outstanding balance until the total_repayment_amount is repaid.

Capital endpoints live under /v1/merchant/capital and require an authenticated merchant session. Reading offers and advances requires the admin role; accepting an offer requires the owner role and 2FA (TOTP).

Endpoints

MethodPathPurpose
GET/v1/merchant/capital/offerThe current pending (unexpired) offer, or null
GET/v1/merchant/capital/summaryWhether the merchant has any offer or active advance
POST/v1/merchant/capital/offer/acceptAccept the pending offer (owner + TOTP)
GET/v1/merchant/capital/advancesList all advances for the merchant
GET/v1/merchant/capital/advances/:id/repaymentsRepayment ledger with running balance

Fetch the current offer

http
GET /v1/merchant/capital/offer
Authorization: Bearer sk_test_...
json
{
  "success": true,
  "data": {
    "offer": {
      "id": "adv_01HQXYZ",
      "merchant_id": "mer_01HQ",
      "market_iso2": "ZW",
      "currency": "USD",
      "advance_amount": "1000.00",
      "factor_rate": "1.2500",
      "total_repayment_amount": "1250.00",
      "holdback_pct": "0.1000",
      "total_repaid": "0.00",
      "outstanding_balance": "1250.00",
      "status": "offered",
      "offer_expires_at": "2026-07-01T00:00:00.000Z"
    }
  }
}

Accept an offer

Accepting requires the owner role and a valid TOTP code (X-TOTP-Code header). On success the advance moves to accepted and is disbursed shortly after.

http
POST /v1/merchant/capital/offer/accept
Authorization: Bearer sk_test_...
X-TOTP-Code: 123456
json
{
  "success": true,
  "data": {
    "advance": {
      "id": "adv_01HQXYZ",
      "status": "accepted",
      "advance_amount": "1000.00",
      "total_repayment_amount": "1250.00",
      "holdback_pct": "0.1000"
    }
  }
}

Track repayments

json
{
  "success": true,
  "data": {
    "advance": { "id": "adv_01HQXYZ", "status": "active", "outstanding_balance": "1200.00" },
    "repayments": [
      {
        "id": "rep_01HQ",
        "settlement_id": "set_01HQ",
        "settlement_amount": "500.0000",
        "holdback_amount": "50.0000",
        "running_balance": "1200.00",
        "created_at": "2026-06-10T08:00:00.000Z"
      }
    ]
  }
}

Webhook events

Capital emits four canonical events from the webhook registry. Subscribe to keep your systems in sync without polling.

EventWhen it fires
capital.offer_createdA new advance offer is available
capital.disbursedAdvance funds are credited to your balance
capital.repaymentA holdback is deducted from a settlement
capital.repaidThe advance is fully repaid