The same request can pass and fail
Identical payloads for two of your pharmacies can get different answers, because the
rules key off the seller. State restrictions in particular follow the seller’s shipping
address.
The rules move
Blocked lots are added automatically when a buyer reports a shipment damaged or warm, and
the certification thresholds are admin settings. Treat all of this as a live answer, not
a table to cache.
Four rules v1 cannot satisfy
These are hard stops, not validation noise. There is no field in the v1 contract that satisfies them, so no retry and no payload change will get the listing through.Driven by the NDC
Flags carried on the drug package. They apply to every pharmacy.How the certification cadence works
Two admin settings drive it: a price threshold and a cadence count.- At or below the threshold, a listing is never gated and never counted.
- Above it, with a cadence of
N, at mostN − 1consecutive uncertified listings are allowed for that pharmacy and NDC before the next one must be certified.N = 1means every above-threshold listing needs certification. - With no cadence set, the pharmacy needs at least one certified listing for that NDC before it can create uncertified above-threshold ones.
Both settings can change, and the count is per pharmacy and NDC, so whether a given
listing needs certification is a live question. There is no public endpoint to ask it ahead
of time in v1 — the web interface uses an internal one to grey out the form before
submission, and exposing that on the public API is planned rather than available.
Driven by the selling pharmacy
Driven by the pharmacy’s state
Some states restrict selling partial, unsealed, non-original or torn-label packages. This keys off the seller’s shipping address, so the same request can pass for one of your pharmacies and fail for another.On
500114 the message text is configured per state rather than fixed. Treat the string as
display-only and branch on the code.Keying off the code
Codes come in two kinds, in two different error bodies:- Integer codes such as
500111arrive in the business-rule body, alongsidemessageandprojectType. These are stable and safe to branch on. - String codes such as
ndcSellLimitReachedarrive in the field-validation body, insideerrors.$values[].
What this page does not cover
Rules about the shape of your request — required fields, types, string lengths, thequantity and fullPackage relationship — are in the generated
API reference and on
Listings and offers. This page is only about the refusals that
depend on data rather than on what you sent.