Skip to content
buybitcoinsmart

Glossary / Lightning & layer 2

Millisatoshi

Also known as msat.

What is a millisatoshi?
A millisatoshi is one thousandth of a satoshi, the unit Lightning uses to count channel balances and routing fees, and an amount the bitcoin blockchain itself cannot record.

Lightning does its accounting one step finer than the blockchain does, in thousandths of a satoshi. BOLT 2 fixes the ratio outright: push_msat may not exceed 1000 times funding_satoshis, and on chain enforcement is only possible for whole satoshi amounts. Any millisatoshi remainder in your balance is real inside the channel and is rounded away the moment that channel closes.

How it works

A millisatoshi is a unit of account inside a Lightning channel rather than a unit of settlement on the blockchain.

Every payment amount inside a channel is written in millisatoshi and says so in its field name. The message that adds a payment to a channel, update_add_htlc, carries a 64 bit amount_msat, and opening a channel negotiates push_msat, htlc_minimum_msat and max_htlc_value_in_flight_msat in the same unit. BOLT 2 states the catch beside the definition: amounts are in millisatoshi, "though on-chain enforcement is only possible for whole satoshi amounts greater than the dust limit", and the commitment transaction rounds them down.

The conversion factor is not folklore. A node opening a channel must set push_msat to no more than 1000 times funding_satoshis, and the receiving peer must fail the channel if push_msat is greater than funding_satoshis times 1000. The ratio of 1,000 to 1 is written into the handshake from both sides.

Invoices inherit the same floor. A BOLT 11 amount is expressed in bitcoin with a multiplier letter, and the smallest of them, p for pico, carries a rule the others do not: the last digit of the amount must be zero. One pico bitcoin is a tenth of a millisatoshi, so the trailing zero forces the request onto a whole number of millisatoshis. The spec gives its reason plainly, that sub-millisatoshi amounts cannot be transferred on the network since HTLCs are denominated in millisatoshis, and the test vectors include an invoice rejected under the heading "Invalid sub-millisatoshi precision".

The extra three decimals earn their keep in fee arithmetic. A forwarding node charges a proportional rate quoted in millionths of a satoshi per satoshi forwarded, so a rate of 1 on a 1,000 satoshi payment comes to a single millisatoshi. Round that to a whole satoshi and you have either multiplied the fee by a thousand or thrown it away.

Where you see it

Millisatoshi figures surface wherever a Lightning tool shows its real numbers instead of a rounded display.

Decode a BOLT 11 invoice and the route hints appear in this unit. The specification's own worked example lists two hops charging a base fee of 1 millisatoshi and 2 millisatoshi, and its sample invoice for a Blockstream store order carries a route hint whose base fee is 1000, one whole satoshi. A channel's gossip update publishes htlc_minimum_msat and fee_base_msat in the same unit, so a dashboard reading those fields shows a number a thousand times larger than the satoshi figure beside it.

Consumer wallets hide the unit but not the arithmetic. Phoenix publishes a fee table rather than discovering fees at payment time, and its Lightning send costs 0.4 percent plus 4 satoshis; on a 137 satoshi payment the percentage part works out at 548 millisatoshi, a quantity with no on-chain representation at all. Muun presents on-chain and Lightning as one balance, which hides the boundary completely without removing it.

Millisatoshi vs satoshi

A satoshi is the smallest amount the bitcoin blockchain can record, while a millisatoshi is one thousandth of that and exists only in Lightning's messages and in the books its two peers keep.

The difference bites at closing time. A channel balance of 1,234,567 millisatoshi is enforceable as 1,234 satoshis and no more, because the commitment transaction that settles the channel on chain pays whole satoshis; the leftover 567 millisatoshi has no on-chain output to live in, and it is spendable only while the channel stays open. That gap is worth a fraction of a cent, and it is still why the two units cannot be swapped for each other in anything that touches the blockchain.

Not to be confused with

Frequently asked questions

How many millisatoshis are in one satoshi?

Exactly 1,000. The Lightning specification writes the ratio into the channel opening handshake: a node must set push_msat to no more than 1000 times funding_satoshis, and the peer receiving that message must fail the channel if push_msat is greater than funding_satoshis times 1000.

Can I actually withdraw a millisatoshi?

No, because the bitcoin blockchain records whole satoshis only. A millisatoshi balance is real while a Lightning channel is open, but BOLT 2 says on-chain enforcement is possible only for whole satoshi amounts above the dust limit, and the commitment transaction rounds the remainder down.

Why does Lightning bother with a unit that small?

Because proportional routing fees are quoted in millionths of a satoshi per satoshi forwarded, so the fee on a small payment falls between satoshis. A rate of 1 on a 1,000 satoshi payment is one millisatoshi, and rounding it to a whole satoshi would either erase the fee or multiply it by a thousand.

Read next

Related terms

More in Lightning & layer 2