A credit is the billing unit of the whole API: one credit buys one fresh lookup that produced a usable answer, on any of the six signals, except IP, where one credit buys five. There is one balance and it does not care which endpoint spends it.
On IP the credit is spent in a block: the answered lookup that opens a block shows credits_used 1 and leaves four lookups prepaid on the account, the next four show credits_used 0, and meta.ip_lookups_prepaid says how many are left.
What does not cost one
Three things, and they are the reason the rate card exists rather than a single sentence.
A non-answer is free. What counts as one differs by signal and is published per signal on the pricing page: an invalid phone number, an unparseable postal address, an identifier no installed register carries, an email address with no working mail server. A rejected request is free — a validation error, a refused key, a rate limit. And a repeat of the same value inside seven days is free, held as a keyed marker that stores a hash rather than the value.
An email answer whose mailbox check could not settle — reason unverified, whether the receiving server would not say or the partner infrastructure behind the handshake was down — is also free, because nothing was established. An undeliverable email verdict that needed a mailbox check is free within a fair-use allowance and costs a credit past it, with meta.fair_use_billed saying so.
When there are none left
The API answers 402 INSUFFICIENT_CREDITS before running the lookup, so an empty balance never bills for work that could not complete. Free credits renew at the start of each month and pack credits never expire. Plan credits roll over up to three months' allowance and stay usable for 60 days after you cancel.
meta.credits_used on every response says what that call actually cost, including zero.