Wallet
The wallet command mirrors the /wallet page — your current balance
and the per-transaction history (recharges, broadcast deductions,
calling minutes, etc.).
Read-only. Recharges go through the web app (Razorpay flow) — the CLI cannot initiate payments.
Quick start
splashify wallet # current balance
splashify wallet transactions # transaction historyCommand reference
| Subcommand | Backed by |
|---|---|
| (none — default) | GET /api/v1/app/wallet/info |
transactions | GET /api/v1/app/wallet/transactions |
Wallet info shape
{
"success": true,
"wallet_amount": 1234.56,
"currency": "INR",
"auto_recharge": {
"enabled": true,
"threshold_amount": 200.00,
"recharge_amount": 1000.00
},
"last_transaction_at": "2026-05-19T13:57:23Z"
}Transactions shape
{
"success": true,
"transactions": [
{
"id": "uuid",
"type": "RECHARGE | DEDUCTION | REFUND",
"amount": 1000.00,
"currency": "INR",
"description": "Wallet recharge via Razorpay",
"reference": "order_xxx",
"created_at": "2026-05-19T13:57:23Z"
}
]
}Preflight gate
Broadcasts, calling, and other send-type commands run a wallet preflight
before allowing the send. If the balance is below the cost the call is
refused with a recharge prompt. The --yes flag on those commands skips
the soft-check (the backend still enforces the hard limit).
Common patterns
# Just the balance
splashify wallet | jq .wallet_amount
# Total spent last month
splashify wallet transactions | jq '
[ .transactions[] |
select(.type == "DEDUCTION") |
select(.created_at >= "2026-04-01" and .created_at < "2026-05-01") |
.amount
] | add
'
# Group transactions by type
splashify wallet transactions | jq '
.transactions | group_by(.type) | map({(.[0].type): length}) | add
'Related
- Billing — GST profile + invoices
- Track expenses — per-message deduction log
- Subscription — plan + add-ons