Amount to Words Converter

Turn an invoice total into the words that go on the amount-in-words line — Dollars, Euros, Pounds, Rupees or your own currency name, in International (million) or Indian (lakh, crore) format. The conversion runs in this page's JavaScript, so the amount you type never leaves your browser.

International groups digits in threes (1,000,000 = One Million). Indian groups the last three digits and then in pairs (10,00,000 = Ten Lakh), which is what Indian-format invoices and cheques expect.

Digits with an optional decimal point, up to 999,999,999,999.99. Thousands separators and the symbols $ € £ ₹ ¥ are ignored, so pasting 1,234.56 works.
“Only” is the standard closing word on Indian and many other South Asian invoices and cheques — it marks the end of the amount so nothing can be appended to it.

How the math works

The amount is split into a whole part and a subunit, each converted separately, then joined:

major = ⌊amount⌋
minor = first two decimal digits, rounded half-up using the third digit   →   0…99

words = numberToWords(major) + " " + majorUnit
        [ + " and " + numberToWords(minor) + " " + minorUnit ]   only when minor is not 0
        [ + " Only" ]                                            only when the toggle is on

International grouping — split major into 3-digit groups from the right and name them:

major = G3 G2 G1 G0
words = [G3] Billion  [G2] Million  [G1] Thousand  [G0]        groups equal to 0 are dropped

Indian grouping — the last three digits, then pairs:

crore    = ⌊major ÷ 10,000,000⌋
lakh     = ⌊(major mod 10,000,000) ÷ 100,000⌋
thousand = ⌊(major mod 100,000) ÷ 1,000⌋
rest     = major mod 1,000

words = [crore] Crore  [lakh] Lakh  [thousand] Thousand  [rest]     parts equal to 0 are dropped

The crore part is run through the same Indian rule again, so 99,999 crore reads “Ninety-Nine Thousand Nine Hundred Ninety-Nine Crore”.

Every group under 1000 uses one rule, which is where the hyphen comes from:

hundreds digit → ONES[h] + " Hundred"
remainder 1–19 → ONES[r]                       e.g. 15 → Fifteen
remainder ≥ 20 → TENS[t] + "-" + ONES[o]       e.g. 21 → Twenty-One, 56 → Fifty-Six
                 (the hyphen and ONES are dropped when the unit digit is 0: 40 → Forty)

Worked example — 1234.56, US Dollar, International, “Only” off

major = 1234        → groups: G1 = 1, G0 = 234
G1 = 1              → "One" + " Thousand"
G0 = 234            → "Two Hundred" + "Thirty-Four"
numberToWords(1234) = "One Thousand Two Hundred Thirty-Four"
minor = 56          → "Fifty-Six", minorUnit = "Cents"

result = One Thousand Two Hundred Thirty-Four Dollars and Fifty-Six Cents

Worked example — 123456.00, Indian Rupee, Indian numbering, “Only” on

major = 123456
crore    = ⌊123,456 ÷ 10,000,000⌋      = 0        → dropped
lakh     = ⌊123,456 ÷ 100,000⌋         = 1        → "One Lakh"
thousand = ⌊23,456 ÷ 1,000⌋            = 23       → "Twenty-Three Thousand"
rest     = 123,456 mod 1,000           = 456      → "Four Hundred Fifty-Six"
minor    = 0                                      → the subunit clause is dropped

result = One Lakh Twenty-Three Thousand Four Hundred Fifty-Six Rupees Only

Self-check — fixed conversions this page produces

Type any of these amounts into the form with the settings shown and you get the output in the last column. They are here so you can confirm the four behaviours that most often go wrong: zero, a hundreds group with no tens, and the same number in each numbering system.

Fixed input amounts, converter settings, and the exact output text this page produces
Amount Currency Numbering “Only” Output
0.00 US Dollar International off Zero Dollars
105.00 US Dollar International off One Hundred Five Dollars
1000000.00 US Dollar International off One Million Dollars
1000000.00 Indian Rupee Indian on Ten Lakh Rupees Only

Note the third and fourth rows: the same number, 1,000,000, is One Million under International grouping and Ten Lakh under Indian grouping. Note the first row too — a zero subunit is dropped rather than written as “and Zero Cents”.

Scope and limits

  • Output is English, in Title Case, using the US convention of no “and” inside the number itself.
  • Range is 0 to 999,999,999,999.99. Amounts above that, and negative amounts, are rejected with a message rather than converted.
  • Subunits are rounded to 2 decimal places (half-up). Convert the amount you are actually invoicing, not a pre-rounded one, so the words and the figures agree.
  • The wording your bank, client or jurisdiction accepts — the currency name, whether “Only” is required, whether a zero subunit must be spelled out — is set by them, not by this page. This is a text-formatting tool, not legal, banking or accounting advice. Check the required format before relying on it.
  • Nothing is uploaded: the amount is converted by JavaScript in this page. Anonymous usage analytics record only which currency set and numbering system were used — never the amount.

Amount in words FAQ

Why do invoices and cheques ask for the amount in words?

Words are harder to alter than digits, and they remove separator ambiguity: 1,234.56 and 1.234,56 are read differently in different countries, while 'One Thousand Two Hundred Thirty-Four Dollars and Fifty-Six Cents' has only one reading. Bank cheque forms and many invoice layouts therefore carry an 'amount in words' line, and where the figures and the words disagree the words are commonly treated as the governing text. The exact rule is set by your bank and your jurisdiction, so confirm the required wording with them before you rely on it.

What is the difference between the International and Indian numbering systems?

The International system groups digits in threes and names the groups thousand, million and billion, so 1,000,000 reads as One Million. The Indian system groups the last three digits and then continues in pairs, naming them thousand, lakh (100,000) and crore (10,000,000), so the same number is written 10,00,000 and reads as Ten Lakh. Indian-format invoices and cheques normally expect the lakh and crore wording, so switch the numbering toggle before you copy the text.

How are cents, pence and paise rounded?

The converter takes the first two decimal digits as the subunit and rounds half-up using the third digit, working on the digit string rather than a binary floating-point number, so 0.565 becomes 57 and 0.564 becomes 56. If the subunit rounds to zero the subunit clause is dropped entirely: 500.00 reads as Five Hundred Dollars, not Five Hundred Dollars and Zero Cents. If the rounding carries, as with 0.999, the whole part goes up by one and the result is One Dollar.

Does it write 'One Hundred and Five' or 'One Hundred Five'?

The number itself is written without an internal 'and', so 105 reads as One Hundred Five. That keeps the single 'and' in the output as the marker for the boundary between the main unit and the subunit, as in 'One Hundred Five Dollars and Fifty Cents'. British and Indian English often insert 'and' before the tens ('One Hundred and Five'); if your template requires that style, add the word after copying the text.