Number to currency words
1250.50 becomes one thousand two hundred fifty and 50/100, the wording banks expect on the written line of a cheque: enter the amount and copy the phrase. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Amount
- 1,250.5
- Words
- one thousand two hundred fifty and 50/100
- Whole
- 1,250
- Cents
- 50
- Cents fraction
- 50/100
A number-to-currency-words tool turns a monetary amount into the English phrase used on the written line of a cheque or check. Enter a non-negative amount such as 1250.50 and receive the classic form one thousand two hundred fifty and 50/100, with the fractional part fixed as two cents digits over one hundred. The same path returns whole dollars, cents, the whole-number words alone, a short formula, and ordered steps you can assert in tests or paste into forms. Payroll stubs, accounts payable, legal settlement lines, and homework on money notation all need that deterministic spelling without opening a spreadsheet formula library.
What cheque-style currency words mean and how dollars and cents split
The common United States style spells the whole-dollar integer in lowercase English words, then appends the word and, then a two-digit cent count written as a fraction over one hundred. Twelve hundred fifty dollars and fifty cents becomes one thousand two hundred fifty and 50/100. The fractional form 50/100 is preferred over the word fifty cents because it locks the minor unit to exactly two decimal places and reads the same on every bank template.
Zero dollars still produce the word zero so blank fields cannot be filled later; ninety-nine cents alone appear as zero and 99/100. Rounding uses total-cent arithmetic—multiply by one hundred, round to the nearest integer cent, then split whole and remainder—so floating display noise does not invent a third decimal place. Negative money is rejected: a cheque is not a signed debit memo, and spelling minus amounts would confuse clearing.
Practical tips, limits, and related searches
Prefer sending a bare number when you control the client; accept currency-prefixed or comma-grouped strings only when users paste from UI copy or spreadsheets. Do not send more than two meaningful decimal places if you need bit-exact agreement with a particular ledger—round in your client first, or rely on the tool’s total-cent rounding and compare on whole and cents. Amounts of exactly zero are valid and spell as zero and 00/100, which is useful for voided or zero-balance lines.
Prefer this capability when you already have a single monetary number and only need English cheque wording; if you need symbol-and-locale formatting, use a number format tool instead.
What you can do with it
Fill the written line on cheques and checks
Accounts payable tools convert a numeric payment total into the English and nn/100 phrase staff paste onto cheque templates before signing.
Legal and settlement amount wording
Settlement letters and remittance advice attach a spelled amount next to the numeric figure so both parties share the same formal wording.
FAQ
What does 1250.50 become in words?
one thousand two hundred fifty and 50/100 — whole dollars spelled in English, then and, then the two-digit cents over 100.
Are negative amounts allowed?
Cheque-style wording is defined for non-negative sums only.
How are cents rounded?
The amount is converted to total cents with half-up rounding (Math.round on amount × 100), then split into whole dollars and a 0–99 remainder.
Does the phrase include the word dollars?
No. The core words field is the cheque amount line without a currency name (for example … and 50/100). Append your own currency word if a template requires it.
Is the number-to-currency-words tool free?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fmt/currency-words \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":1250.5}'const res = await fetch("https://api.kit.forhosting.com/fmt/currency-words", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"amount": 1250.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fmt/currency-words",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"amount": 1250.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fmt/currency-words", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"amount":1250.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"amount":1250.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fmt/currency-words", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"amount": 1250.5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fmt.currency_words",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs | 1000000000000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Negative amounts raise a clear invalid_input error instead of inventing a minus phrase that banks do not accept on paper instruments.
What cheque-style currency words mean and how dollars and cents split
Paper cheques and many formal remittance documents require two representations of the same money: a numeric field and a spelled amount that reduces alteration risk. Magnitudes stay within a published absolute ceiling so intermediate integers remain safe IEEE doubles on the Worker and in the browser. Teaching the split with paired examples—integer only, cents only, mixed, and a deliberate negative—builds the same intuition the API encodes.
How to call the API and what comes back
The amount must be finite and non-negative, and must not exceed the published maximum of one trillion. Send a JSON body with one required field amount (aliases value, money, sum, n, and input). The value may be a JSON number or a string; strings may include an optional leading currency symbol or a three-letter code, and simple thousand separators of commas or spaces between digit groups are stripped before parsing. On success the response sets amount to the value after two-decimal money rounding, words to the full cheque phrase including the and nn/100 tail, whole and cents to the integer split, cents_fraction to the padded nn/100 string, whole_words to the spelled dollars without the fraction, formula to a short English rule, message to a one-line summary, and steps to an ordered array that records the input, the split, the spelling, and the final phrase. Failed validation—missing amount, empty strings, non-numeric tokens, booleans or objects, non-finite values, magnitudes above the limit, or any negative amount—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
When teaching or writing tests, pair examples: one thousand two hundred fifty point five zero maps to one thousand two hundred fifty and 50/100; one maps to one and 00/100; zero point nine nine maps to zero and 99/100; and a negative such as minus ten demonstrates the hard invalid_input path with a message that names non-negative. This landing targets people searching for number to currency words, amount in words for cheque writing, money to words, or spell dollars and cents online; it is not a locale currency formatter that inserts symbols and grouping for display, not a multi-language spell-out engine, and not an invoice total extractor that finds amounts inside documents. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send negatives. Round-trip checks are easy: recompute whole times one hundred plus cents and confirm it equals the rounded amount in cents, re-spell whole with a known table for small cases, and confirm that flipping the sign alone flips the response to invalid_input.
Integration use cases
Unit tests for money spell-out libraries
Generate known-good integer, cents-only, mixed, and negative-rejection cases for coding kata expected values without hand-writing long word strings.