Wallet

Prepaid organisation balance, mobile-money deposits, and SMS purchases.

Each organisation has a prepaid wallet. When POST /v1/sms/send is accepted, Netnaunse debits the wallet by message segments × unit price and records a ledger transaction. Customer balances are a liability — not revenue.

Balance

GET /v1/wallet
curl https://api.netnaunse.com/v1/wallet \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY"

The response includes balance, currency, estimated smsCredits, unitPrice, minSmsPurchase, and recent ledger rows.

Transactions

GET /v1/wallet/transactions
curl https://api.netnaunse.com/v1/wallet/transactions \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY"

Add funds (mobile money)

Production top-ups use mobile money USSD push. Minimum amount is 100 TZS. Use a supported network number in local (06… / 07…) or international (255…) form.

POST /v1/wallet/deposits
curl -X POST https://api.netnaunse.com/v1/wallet/deposits \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 1000,
    "phone": "0613480018"
  }'

Success returns 201 with a deposit object (status: "processing"while the customer confirms on their phone). Poll GET /v1/wallet/deposits/{id} until completed or failed, or use the dashboard Buy SMS / wallet UI.

GET /v1/wallet/deposits/{id}
curl https://api.netnaunse.com/v1/wallet/deposits/DEPOSIT_ID \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY"
GET /v1/wallet/deposits
curl https://api.netnaunse.com/v1/wallet/deposits \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY"
M-Pesa (Vodacom)Vodacom M-Pesa numbers (074 / 075 / 076 / 079) are not available yet. The API returns 400 with MPESA_UNAVAILABLE. Use Airtel Money, Tigo Pesa, HaloPesa, or another supported network.

Buy SMS packs

Purchase a volume of SMS credits in one mobile-money payment. Minimum quantity is set by platform pricing (currently 2,000). Total includes VAT when configured.

GET /v1/pricing/quote-purchase?quantity=2000
curl "https://api.netnaunse.com/v1/pricing/quote-purchase?quantity=2000" \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY"
POST /v1/wallet/buy-sms
curl -X POST https://api.netnaunse.com/v1/wallet/buy-sms \
  -H "Authorization: Bearer YOUR_TOKEN_OR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "quantity": 2000,
    "phone": "0613480018"
  }'

Or use the dashboard at app.netnaunse.com/buy-sms.

Pricing helpers

  • GET /v1/pricing — unit price quote for SMS (optional ?quantity=, ?segments=)
  • GET /v1/pricing/tiers — public volume bands

Charges

  • Debit happens when the message is accepted (202), not when the handset receives it.
  • Segment count depends on language: 160 characters (English) or 70 (Unicode).
  • Insufficient funds → 402 with INSUFFICIENT_BALANCE.
Manual top-up is disabledPOST /v1/wallet/top-up returns 403 MANUAL_TOPUP_DISABLED in production. Always use mobile money deposits or Buy SMS.

Related: SMS API · Errors