healthcare.dev docs

Freshness credits

When a dataset misses its freshness target, paid plans get a credit on the invoice automatically, by a published formula. No ticket needed.

Every dataset has a freshness target: how soon after the source publishes a release we publish it (24 hours for FDA's daily NDC file, for example). The targets and each dataset's current lag are on the status page. When a dataset misses its target, every account that called it on a paid plan that month gets a credit. You don't need to ask.

When a dataset is late

A dataset is late from the moment a source release is older than the target and we haven't yet published that release or a newer one. It stops being late when we publish. Missed hours are the hours a dataset was late during the month (UTC), to a tenth of an hour.

  • The source publish time is the one shown on the status page and in /v1/datasets/{dataset}/releases (source_published_at), and our publish time is published_at.
  • A release a quality gate holds back stays late until we publish it or a newer release, even if the source has published another one since.
  • We never count time before we started tracking a dataset.

How much

For each dataset that was late during a month, per account:

credit = plan price × (missed hours ÷ hours in the month) × (your calls to the dataset ÷ all your calls)
  • Plan price is the monthly price of the plan your calls were made on (a twelfth of the annual price on annual billing). If you changed plans during the month, it's averaged over your calls: with three quarters of them on Builder and a quarter on Pro, it's 0.75 × $49 + 0.25 × $149 = $74. Overage charges aren't part of it.
  • Calls are billable calls made with live keys on a paid plan during the month, REST and MCP alike, counted the way they're billed (a batch of 20 codes is 20). Calls made on Free, test keys, free endpoints and calls refused with an error don't count. An account that downgraded or cancelled since still gets the credit for the month it was on a paid plan.
  • A call counts toward a dataset when it returns that dataset's records: an NDC lookup counts for NDC, a code lookup for its code system, a drug search for RxNorm and NDC, a search by meaning for each code system and drug dataset it actually searched. Records only linked from a response (an NDC product's RxNorm concepts, for example) don't count.
  • Cap: a month's credits add up to at most 50% of the plan price. Above it, every credit that month is scaled down by the same factor.
  • Amounts are rounded to the cent; a credit under a cent isn't issued.

Example

On Pro ($149 a month), October has 744 hours. NDC was late for 30 hours, and 6,000 of the 20,000 billable calls you made that month were NDC lookups:

$149 × (30 ÷ 744) × (6,000 ÷ 20,000) = $1.80

On your invoice

Credits are worked out once a month has ended (UTC) and added to the invoice for that month as a line such as "Freshness credit, October 2026: ndc was over its 24 h target for 30 h". Annual plans get that invoice too, for the month's calls.

If that invoice has already been finalized, or there isn't one (for example, the plan was cancelled), the credit is added to your account's credit balance instead, with the same description, and comes off your next invoice. Your billing page in the dashboard lists every credit, the hours and calls it was worked out from, and where it was applied.

Accounts that only used Free don't receive credits.

On this page