Skip to main content
No parameters.

The two fields

sms_count is "ND" by design, not by omission. Jasmin reports a prepaid message quota; FireFlo has no such counter, because credit is money and how many messages it buys depends on where they are going.Rather than invent a number, the field says it is not determined.

Which account

The one the login bills to — app_credential.account_id, not the login name. Several logins on one account all report the same balance, and all spend the same credit.

A positive balance can still refuse one message

Credit is reserved in blocks — max(smsg.balance.block.min, price × smsg.balance.block.min.messages), twenty messages’ worth by default — and refills are asynchronous.So a message arriving while the next reservation is being taken gets 402 even though this endpoint reports a positive balance. It is transient; the retry succeeds.The block size does not strand credit: a reservation falls back through the block, the floor, and finally the single message that asked, so an account spends every unit it holds.

Do not poll this per message

It is a database read, it tells you nothing about whether this message will be accepted, and it doubles your request volume. Poll it on a schedule for alerting, and let a 402 be your per-message signal.

Decimal places

balance is displayed with smsg.money.scale decimal places — 0 to 4, default 4. India uses 2. Storage never changes: amounts are integers of ten-thousandths. This is presentation only. Rates on /secure/rate always keep four places regardless, because a rate shown as 0.05 instead of 0.0450 is 11% out on every message.

Errors

Only the shared ones — see API errors.

Balance and quotes

Using this alongside /secure/rate.

Prepaid credit

The operator’s side: blocks, ledger and the money identity.