Financial functions

TBILLPRICE

Matches all 3,611 recorded answers

Recorded: 3,600 in the answer bank and 11 workbook cells. How we measure this · See the Rust code

Local names in 40 languages
LanguageName in Excel
ArabicTBILLPRICE
BulgarianTBILLPRICE
CzechTBILLPRICE
DanishSTATSOBLIGATION.KURS
GermanTBILLPRICE
GreekTBILLPRICE
English (Australia)TBILLPRICE
English (United Kingdom)TBILLPRICE
English (United States)TBILLPRICE
SpanishLETRA.DE.TES.PRECIO
EstonianTBILLPRICE
FinnishOBLIG.HINTA
FrenchPRIX.BON.TRESOR
HebrewTBILLPRICE
CroatianTBILLPRICE
HungarianKJEGY.ÁR
IndonesianTBILLPRICE
ItalianTBILLPRICE
JapaneseTBILLPRICE
KoreanTBILLPRICE
LithuanianTBILLPRICE
LatvianTBILLPRICE
NorwegianTBILLPRIS
DutchSCHATK.PRIJS
PolishCENA.BS
Portuguese (Brazil)TBILLPRICE
Portuguese (Portugal)OTNVALOR
RomanianTBILLPRICE
RussianЦЕНАКЧЕК
SlovakTBILLPRICE
SlovenianTBILLPRICE
Serbian (Latin)TBILLPRICE
SwedishSSVXPRIS
ThaiTBILLPRICE
TurkishHTAHDEĞER işlevi
UkrainianTBILLPRICE
VietnameseTBILLPRICE
Chinese (Simplified)TBILLPRICE
Chinese (Hong Kong)TBILLPRICE
Chinese (Traditional)TBILLPRICE

Names from Microsoft's support site.

What it does

TBILLPRICE(settlement, maturity, discount)

TBILLPRICE(settlement,maturity,discount) returns a Treasury bill price per 100 face value using an annual discount rate and an actual-day, 360-day denominator.

Try it

Input cells (optional)

Example: {"B2": 3, "B3": 4}. A1 holds the formula. Other cells need values before a formula can read them.

Enter a formula, then calculate.

Runs locally in your browser with OneCalc. Its answer may differ from Excel. Use English function names and commas between arguments.

=TBILLPRICE(DATE(2027,1,1),DATE(2027,1,31),0.06) returns about 99.5. Thirty days at a six-percent annual discount remove 100*0.06*30/360=0.5 from par.

Quirks

Date values are truncated. Invalid dates give #VALUE!; a nonpositive discount or an invalid/too-long settlement-to-maturity interval gives #NUM!. There is no optional basis argument.

The one-year limit follows calendar rollover, rather than a fixed 365-day cap or an end-of-month clamp. The cited build-20430 controls admit settlement 29 February 2044 with maturity 1 March 2045, but reject settlement 28 February 1991 with maturity 29 February 1992. The first limit is the result of DATE(2045,2,29), which rolls into March.

The current helper rejects equal settlement and maturity, and also rejects a calculated price at or below zero. The opened Microsoft remarks explicitly mention settlement later than maturity and nonpositive discount; they do not spell out those two additional guards. A positive discount alone does not ensure a positive price.

An empty cell as a first date is serial 0, but a logical in that cell is #VALUE!

A reference to an empty cell as the first date of these functions reads as serial 0 and gives a normal answer: NETWORKDAYS(B1,5) is 4 and WORKDAY(B1,2) is 3. YEARFRAC(B1,5,0) is 5/360. TRUE in the same cell gives #VALUE!, as a direct TRUE does, so a blank is not treated as the logical FALSE either.

FormulaExcelMathematical value
=NETWORKDAYS(B1,5)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

4
0x4010000000000000
—
=NETWORKDAYS(B1,5)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: TRUE

#VALUE!—
=WORKDAY(B1,2)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

3
0x4008000000000000
—
=WORKDAY(B1,2)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: TRUE

#VALUE!—
=NETWORKDAYS.INTL(B1,5,1)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

4
0x4010000000000000
—
=WORKDAY.INTL(B1,2,1)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

3
0x4008000000000000
—
=YEARFRAC(B1,5,0)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

0.013888888888888888
0x3f8c71c71c71c71c
—
=TBILLEQ(B1,5,0.1)
Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA
Inputs and reference value

Number supplied through a cell.

B1: (empty cell)

0.10152990264255911
0x3fb9fddd1b6a757f
—

Inputs, build details and evidence

How to implement

  1. Coerce the date arguments through the workbook’s date system and truncate their serial values. Validate the discount as finite and positive. Keep the date coercion layer separate: the notes below record a blank reference reading as serial zero, while a logical reference gives #VALUE!.
  2. Require settlement before maturity. Convert settlement to year, month and day; construct the next-year date with Excel’s day rollover. Reject maturity beyond that serial date. In the current helper this uses the 1900 date-system conversion functions, including their treatment of Excel’s fictitious leap day.
  3. Let days=maturity-settlement. These are actual serial days, without a 30/360 adjustment.
  4. With D meaning one nearest/even binary64 rounding, calculate product=D(discount*days), fraction=D(product/360), remaining=D(1-fraction), then price=D(100*remaining). Keep these separate stores and disable contraction into fused operations.
  5. Return #NUM! for a nonpositive calculated price; otherwise pass the result through the worksheet’s numeric publisher.

For the thirty-day example, the mathematical discount fraction is 0.06*30/360=0.005, so the price is 100*(1-0.005)=99.5. A discount of twelve over thirty days instead consumes the full face value and reaches the nonpositive-price guard.

This is the current code’s ordinary binary64 graph. The security functions beside it use other stored arithmetic sites, and PRICEDISC subtracts a redemption discount using a different association. An algebraically identical formula does not settle their last bits.

Rust code

Show the CalcFunc source of this function

Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.

TBILLPRICE · 4 lines · calc-func/src/catalogue/bonds.rs on GitHub
21 tbillprice_fn "TBILLPRICE" (3, 3) [V "settlement", V "maturity", V "discount"] |s, a, sv| {
    let [settlement, maturity, rate] = bill_arguments(s, a, sv)?;
    bill_out(s, bill::tbillprice_kernel(settlement, maturity, rate))
}
tbillprice_kernel · 25 lines · calc-func/src/ported/discount_bill_yearfrac_family.rs on GitHub
pub fn tbillprice_kernel(
    settlement: f64,
    maturity: f64,
    discount: f64,
) -> Result<f64, DiscountBillYearfracEvalError> {
    if !discount.is_finite() {
        return Err(DiscountBillYearfracEvalError::Domain(
            WorksheetErrorCode::Value,
        ));
    }
    if discount <= 0.0 {
        return Err(DiscountBillYearfracEvalError::Domain(
            WorksheetErrorCode::Num,
        ));
    }
    let dsm = tbill_days(settlement, maturity)?;
    let price = 100.0 * (1.0 - discount * dsm / 360.0);
    // Excel publishes #NUM! rather than a non-positive price (live Excel 20430, W111-5 G8-03).
    if price <= 0.0 {
        return Err(DiscountBillYearfracEvalError::Domain(
            WorksheetErrorCode::Num,
        ));
    }
    Ok(price)
}

Kernels shared with other functions

Argument and result plumbing

No implementation has been published with a Handbook test suite for this function.

Version differences

The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.

Excel 16.0 buildPlatform and CPUCaptured inputs
20430Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics2,400

The record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.

Recorded environments and comparison details.

Excel 16.0 build 20430

Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics

2,400 captured inputs are indexed for this environment. Capture dates: 2026-09-24 to 2026-09-25. This is a reading count, not a comparison with another build.

Alternatives

TBILLYIELD computes a bill investment yield; TBILLEQ computes its specified equivalent yield; PRICEDISC accepts a general basis.

Named variants

No named variants are recorded yet.

Suggest a correction or contribute an implementation · For agents