ABN Service API
The ABN Service tells you whether an Advance Beneficiary Notice of Noncoverage (ABN) is required for a Medicare patient, based on the account number, test codes, and diagnosis codes. It also returns the estimated cost Medicare is not expected to cover and, optionally, the ABN as a PDF. The full endpoint reference, with request/response schemas, is in the ABN Service API reference.
When you need an ABN
An ABN is required when a Medicare patient may have to pay for a test that Medicare is unlikely to cover, for example because the diagnosis codes don't support medical necessity. The patient must review and sign the ABN before the specimen is collected.
Orders submitted through the Order Submission API are checked for an ABN automatically. Use the ABN Service when you need to know before you submit the order, for example so the patient can sign the ABN before collection.
Check an order
Call POST /checkAbnByTestCodes with the account number, test codes, diagnosis codes, and patient
name:
Code
- Set
includeABNContenttotrueto receive the ABN PDF, base64-encoded, inabnContents. No PDF is returned without it. - Set
includeDetailstotrueto receive a per-test breakdown inabnTests.
Read the response
| Field | Meaning |
|---|---|
isABNRequired | true when an ABN is required for this combination of tests and diagnoses |
estCost | Estimated cost not covered by Medicare |
abnContents | The ABN PDF, base64-encoded, when includeABNContent was true |
abnTests[].medNecCpts | CPT codes whose diagnosis codes don't support medical necessity |
abnTests[].freqCpts | CPT codes flagged for Medicare frequency limits |
abnTests[].ruoIndicator | true when the test is research-use-only, which always requires an ABN |
nonSpecificDiagnosisCodes | Diagnosis codes too non-specific to support medical necessity |
invalidDiagnosisCodes | Diagnosis codes the service doesn't recognize |
messages | Informational, warning, or error messages, each with code, text, type |
Errors
A 200 means the evaluation succeeded. When it doesn't, the service returns 500 with outputType
set to "FAILURE" and the reason in messages. Common messages:
| Code | Meaning | What to do |
|---|---|---|
ERR0001 | Invalid account number | Check the account number. |
ERR0002 | The account number is not active | In sandbox and certification, use the test account number assigned to you. |
ERR0003 | Test code was not found | Check the test code. |
ERR0004 | Test code was found, but it is not orderable | Use a different test code. |
Other responses:
401: the bearer token is missing or invalid.503: the service is unavailable during periodic database maintenance, which takes roughly 20 minutes. Retry after the number of seconds in theRetry-Afterheader.
If a successful response has no PDF, check that includeABNContent is true.

