Wallet and invoices
Wallet balance and transactions, invoices, and the monthly statement.
Every route on this page needs a whole-account key (403 ACCOUNT_KEY_REQUIRED otherwise). Amounts are in Rupiah.
Wallet
/account/walletcurl https://api.helipod.io/api/account/wallet \
-H "Authorization: Bearer hel_your_key"{ "success": true, "data": { "balance": 482500, "currency": "IDR", "updatedAt": "2026-10-16T09:12:03.000Z" } }Transactions
/account/wallet/transactionsProp
Type
{
"success": true,
"data": {
"transactions": [
{
"id": "6c5d4e3f-2a1b-4c0d-9e8f-7a6b5c4d3e2f",
"amount": -29400,
"currency": "IDR",
"direction": "debit",
"source": "billing",
"kind": "email_plan",
"description": "Email Plan: Starter (1 month)",
"createdAt": "2026-10-01T03:00:00.000Z",
"expiresAt": null
}
],
"total": 128,
"limit": 50,
"offset": 0
}
}amount is negative for money taken (direction: "debit") and positive for money added (credit). kind names the purchase when it is known, otherwise it is null. total counts every transaction, for paging.
Invoices
/account/invoices{
"success": true,
"data": [
{
"id": "0f1e2d3c-4b5a-4968-8776-655443322110",
"number": "INV-0F1E2D3C4B",
"title": "Wallet top-up",
"subtitle": null,
"type": "deposit",
"amount": 500000,
"currency": "IDR",
"status": "paid",
"paidFromWallet": false,
"paymentMethod": "qris",
"paymentUrl": null,
"expiresAt": "2026-10-02T03:00:00.000Z",
"paidAt": "2026-10-01T03:04:11.000Z",
"createdAt": "2026-10-01T03:00:00.000Z"
}
]
}type is deposit (a wallet top-up), subscription, bundle_purchase or vps_purchase; status is pending, paid, failed, expired or refunded. paymentUrl is set only while an invoice is pending: it is the page where it can be paid.
/account/invoices/{invoiceId}{
"success": true,
"data": {
"issuedAt": "2026-10-16T09:20:00.000Z",
"currency": "IDR",
"seller": { "name": "...", "brand": "Helipod", "address": "...", "taxId": "...", "nib": "...", "contact": "...", "website": "https://helipod.io" },
"customer": { "name": "Ana Putri", "organization": null, "phone": "+6281234567890", "location": "Jakarta Selatan, DKI Jakarta" },
"invoice": {
"id": "0f1e2d3c-4b5a-4968-8776-655443322110",
"number": "INV-0F1E2D3C4B",
"date": "2026-10-01T03:04:11.000Z",
"title": "Wallet top-up",
"subtitle": null,
"method": "qris",
"amount": 500000,
"createdAt": "2026-10-01T03:00:00.000Z"
}
}
}An invoice that is not paid yet answers 409 INVOICE_NOT_PAID. Your email address is never included.
Monthly statements
A statement is the invoice for one calendar month (Western Indonesia Time): what you paid in, and what the wallet was used for.
/account/statements{ "success": true, "data": { "months": ["2026-10", "2026-09", "2026-08"] } }/account/statements/{month}YYYY-MM.curl https://api.helipod.io/api/account/statements/2026-09 \
-H "Authorization: Bearer hel_your_key"{
"success": true,
"data": {
"invoiceNumber": "HLP-202609-1A2B3C4D",
"month": "2026-09",
"period": { "start": "2026-08-31T17:00:00.000Z", "end": "2026-09-30T17:00:00.000Z" },
"partial": false,
"issuedAt": "2026-10-16T09:20:00.000Z",
"currency": "IDR",
"seller": { "...": "..." },
"customer": { "...": "..." },
"paid": [
{ "id": "…", "number": "INV-…", "date": "2026-09-03T02:10:00.000Z", "title": "Wallet top-up", "subtitle": null, "method": "qris", "amount": 500000 }
],
"usage": {
"charges": [ { "date": "2026-09-04T17:30:00.000Z", "description": "Service api: daily renewal", "amount": 1100 } ],
"refunds": [],
"credits": []
},
"totals": { "paid": 500000, "charges": 34100, "refunds": 0, "credits": 0 },
"balanceNow": 482500
}
}Amounts in usage are positive: charges are purchases paid from the wallet, refunds money returned to it, credits promotions and adjustments. They explain the wallet and are not part of the invoice total, which is totals.paid. The current month is month to date, with partial: true. A month that has not started answers 400 MONTH_NOT_STARTED.