What Is billingDuration Schema?
billingDuration specifies how long a price or price component will be billed within a UnitPriceSpecification. It can use a Schema.org Duration, a Number with a unitCode, or a QuantitativeValue, allowing offers to describe subscription terms, payment-plan periods, and time-limited price components.
The property answers how long a billing phase lasts. It does not state when the phase begins, how frequently invoices are issued, or the date an offer becomes valid. Those are separate timing concepts.
| Question | Answer | Example |
|---|---|---|
| What does it express? | Length of time a price component is billed | 12 months |
| Expected value types | Duration, Number, or QuantitativeValue | P1Y or 12 months |
| Where is it used? | UnitPriceSpecification | Subscription or installment component |
- Choose one clear representation.
- Use the correct time unit.
- Match contract and visible pricing terms.
The definition is term length: billingDuration tells systems for how long a particular amount or component continues to be billed.
How Does billingDuration Work in UnitPriceSpecification?
billingDuration works inside UnitPriceSpecification by limiting the time span of that specific amount, while price, currency, billingStart, unit, and component type describe its monetary role and timeline position. Separate specifications can model successive phases.
An SEO platform might bill an introductory $49 monthly price for 12 months and then a $79 standard price. The first component carries a 12-month billing duration; the second begins after that interval and may continue under different terms.
| Property | Question answered | Example |
|---|---|---|
| price | How much? | $49 |
| billingStart | After how long does it begin? | 0 months |
| billingDuration | For how long is it billed? | 12 months |
| priceComponentType | What component is it? | Subscription |
- Map each distinct price phase.
- Give each phase its own specification.
- Set start and duration independently.
- Confirm phases do not create unexplained gaps or overlap.
Start with UnitPriceSpecification Schema.
The duration belongs to one amount: every time-limited price needs a clear phase, start, length, and transition.
Which Value Format Should billingDuration Use?
billingDuration can use an ISO 8601 Duration, a Number paired with unitCode, or a QuantitativeValue containing the amount and unit. Choose the representation your publishing system can generate consistently and that preserves the contract’s actual time meaning.
An ISO duration such as P1Y is compact. A Number such as 12 requires unitCode on the specification. QuantitativeValue can group amount and unit explicitly. Do not combine conflicting representations for the same phase.
| Format | Example | Best use | Main check |
|---|---|---|---|
| Duration | P1Y | ISO-formatted term | Calendar meaning is correct |
| Number + unitCode | 12 + MON | Simple numeric term | Unit is present |
| QuantitativeValue | value 12, unitCode MON | Grouped measurement | Object is valid |
- Use one canonical internal duration model.
- Convert to JSON-LD at rendering time.
- Test year, month, week, and day boundaries.
Consistency beats format variety: one correct duration representation is better than several objects that disagree.
When Should You Use billingDuration?
Use billingDuration when a price component has a defined contractual or promotional term. Strong cases include fixed-term subscriptions, introductory prices, installment schedules, financed purchases, trial-priced phases, annual service agreements, and temporary fee components.
Do not use it merely to state invoice frequency. A price billed monthly can continue indefinitely; “monthly” describes cadence, while billingDuration describes how long that price phase lasts.
| Scenario | Use? | Reason |
|---|---|---|
| Introductory rate for 12 months | Yes | Price phase has a fixed term |
| 24-payment installment plan | Yes with full timing context | Payment component has bounded duration |
| Monthly subscription until canceled | Not for a fixed end unless terms define one | Cadence is not duration |
| Promotion valid during November | Use validity dates | Calendar window is different |
- Identify whether the amount has a fixed end.
- Separate cadence from total term.
- State what happens after the term.
- Model the next price phase when applicable.
Use billingDuration for bounded terms: it belongs when one price component lasts for a defined period and then ends or changes.
billingDuration vs billingStart: What Is the Difference?
billingDuration states how long a price component is billed, while billingStart states how much time passes before that component begins. Duration describes length; start describes relative offset.
A discounted price can start immediately and last 12 months. The standard price can begin after 12 months and continue for another defined term or indefinitely under the contract. Modeling both properties reveals the full sequence.
| Dimension | billingDuration | billingStart |
|---|---|---|
| Main question | For how long? | After how long? |
| Accepted values | Duration, Number, QuantitativeValue | Number |
| Unit handling | Duration format or measurement | unitCode supplies measurement |
| Example | Billed for 12 months | Begins after 12 months |
- Calculate both from the same subscription timeline.
- Avoid overlapping phases unintentionally.
- Show transitions visibly before signup.
Read billingStart Schema for delayed component timing.
Remember “length” versus “offset”: billingDuration measures the phase; billingStart positions it.
How Do You Add billingDuration in JSON-LD?
Add billingDuration to the relevant UnitPriceSpecification using a supported Duration, Number, or QuantitativeValue representation. Keep it attached to the exact price phase and include currency, start timing, and component role when needed.
{
"@context": "https://schema.org",
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "49.00",
"priceCurrency": "USD",
"billingDuration": "P1Y",
"priceComponentType": "https://schema.org/Subscription"
}
}| Check | Correct | Incorrect |
|---|---|---|
| Value type | Supported duration representation | Free text “one year deal” |
| Placement | Matching UnitPriceSpecification | Loose property on Product |
| Price phase | One amount per defined term | Conflicting prices in one object |
| Transition | Next phase is disclosed | Later price hidden |
Inspect the final rendered graph with Novaverb Site Audit.
The snippet should reconstruct the contract: amount, term, start, and next phase must agree with the visible offer.
How Should Installments and Fixed-Term Subscriptions Be Modeled?
Model installments and fixed-term subscriptions with separate price components whenever amount, cadence, role, or term differs. billingDuration defines the component’s overall billing span, while visible terms must also explain installment count, invoice frequency, downpayment, renewal, and total payable amount.
A 24-month payment plan can include a downpayment plus 24 installments. The downpayment is a distinct component; the installment component uses the appropriate duration and timing. Do not imply that 24 months means 24 equal payments unless the contract actually says so.
| Component | Timing | Duration context | Buyer needs |
|---|---|---|---|
| Downpayment | At signup | One-time component | Amount and remaining balance |
| Installment | Scheduled cadence | 24-month term | Count, frequency, and amount |
| Subscription | Recurring | Contractual term | Renewal and cancellation rules |
| Activation fee | Defined start | Usually one time | Whether mandatory |
- Calculate total payable cost.
- Separate every component role.
- Define term and cadence independently.
- Test early cancellation and renewal behavior.
- Reconcile the resulting invoice schedule.
See priceComponentType Schema for line-item roles.
A term is not a payment count: disclose both duration and invoice schedule so the buyer can predict every charge.
How Do You Validate billingDuration Markup?
Validate billingDuration by checking value type, time unit, entity placement, contract term, pricing-phase boundaries, renewal behavior, invoice schedule, and total payable amount. Parsing proves format but not that the billed period matches the offer.
| Layer | Evidence | Pass condition |
|---|---|---|
| Syntax | Parsed JSON-LD | Supported value type |
| Unit | Duration or unitCode | Correct measurement |
| Graph | UnitPriceSpecification | Term belongs to correct amount |
| Contract | Visible pricing terms | Same phase duration |
| Boundary | Billing sandbox | Price ends or changes on schedule |
| Invoice | Payment sequence | Charges reconcile with term |
- Test first and final invoice in the phase.
- Test month-end and leap-year dates.
- Test cancellation, pause, and renewal.
- Re-crawl after plan or billing changes.
Connect timing evidence with the complete Novaverb SEO tools system.
Validation ends at the phase boundary: the price must stop or transition after the exact duration the markup declares.
How Can billingDuration Support CTR and Conversion?
billingDuration can support CTR and conversion by making fixed terms and introductory periods predictable, but it does not guarantee rankings or a search feature. The marketing value comes from telling US buyers how long the promoted amount lasts and what follows.
“$49 per month” and “$49 per month for 12 months” are different promises. A lower introductory amount can attract clicks, but hiding the duration or renewal price creates low-quality traffic, abandonment, disputes, and churn.
| Surface | Action | Measure |
|---|---|---|
| Search result | State the introductory term when material | CTR by pricing-intent query |
| Pricing page | Show amount, term, and next price together | Plan comparison engagement |
| Signup | Repeat contract and renewal terms | Completion rate |
| Renewal | Apply the disclosed transition | Churn and disputes |
Search Console is authoritative for clicks, impressions, CTR, and position. Novaverb’s crawl is authoritative for the terms and structured data actually present. Use the free backlink checker for one off-page signal.
Measure retained paid customers, not only clicks or trial starts. Duration language succeeds when customers understand the full term before committing.
For SEO SaaS, separate billing cadence, committed term, and displayed equivalent price. A plan shown as “$79 per month, billed annually” may create twelve monthly-equivalent units while collecting one annual payment. The page and structured data should not imply monthly cancellation or twelve separate invoices unless those options exist. State the annual payable amount, commitment length, renewal behavior, included credits, and any early-termination rules beside the monthly equivalent.
Use distinct pricing phases when the first contract term receives a discount and renewal moves to the standard rate. The introductory component’s billingDuration should match the real term, while the next component and its start offset explain what follows. If a customer can switch plans mid-term, document how credits, prorating, and the remaining duration change; do not let a static public object describe account-specific amendments.
CTR analysis should group queries by annual, monthly, trial, and contract intent. Record the title, description, visible term, page version, and deployed structured data before comparing Search Console results. Then measure retained paid accounts and renewal acceptance. An annualized headline that raises clicks but produces commitment surprise is weaker than a slightly lower CTR from buyers who understand the term.
Review contract-language changes before every pricing-page deployment and renewal campaign.
Term clarity attracts qualified demand: state how long the price lasts and what the buyer pays afterward.
billingDuration Schema FAQ
billingDuration describes how long one UnitPriceSpecification is billed and should not be confused with start delay, billing cadence, offer dates, or payment deadlines. These answers cover the distinctions most likely to produce inaccurate markup.
What value types can billingDuration use?
Is billingDuration the monthly cadence?
How is it different from billingStart?
Can it model a 12-month introductory price?
Can it model installments?
Can an indefinite subscription use billingDuration?
Does billingDuration guarantee a rich result?
When should duration markup be audited?
| Requirement | Ready when |
|---|---|
| Value | Supported duration representation |
| Parent | Term belongs to correct price phase |
| Visibility | Buyer sees amount, term, and transition |
| Boundaries | Start and end do not conflict |
| Billing proof | Invoice sequence matches the term |
The final test is contract accuracy: the component must be billed for exactly the duration the structured offer and visible terms promise.