How to track claims

Sep 11, 2025

Guide

Big takeaway: Use patient control numbers to track a claim from submission to remit.

A patient control number is a tracking ID for a claim.

You create a patient control number when you submit a claim. The payer sends the ID back in follow-up transactions: claim acknowledgments, Electronic Remittance Advice (ERAs), and claim status checks.

This guide gives you best practices for creating patient control numbers and where to find them in each transaction.

Patient control number locations

This table shows the location of patient control numbers across claim-related transactions in Stedi’s JSON API requests and responses.


837P, 837I, 837D claim submissions

277CA claim acknowledgments

835 ERAs

276/277 claim status checks

JSON API endpoint

Professional Claims JSON

Dental Claims JSON

Institutional Claims JSON

277CA Report

835 ERA Report

276/277 Real-Time Claim Status JSON

Location of the patient control number

Request:
claimInformation└─patientControlNumber

Response:
claimReference
└─patientControlNumber

Response:
claimStatus
└─patientAccountNumber

or
claimStatus
└─referencedTransactionTraceNumber

Response:
claimPaymentInfo
└─patientControlNumber

Response:
claimStatus
└─patientAccountNumber

Best practices for creating patient control numbers

Here's what we found works best in practice:

  • Stick to 17 characters.
    X12 states patient control numbers can be up to 20 characters. But some payers cut off values longer than 17 characters in ERAs and claim acknowledgments.

  • Use a unique patient control number for each claim.
    If multiple claims have the same patient control number, you may match the claim to the wrong ERA or acknowledgment.

  • Use alphanumeric characters only.
    Patient control numbers can contain both letters and numbers. Avoid special characters. Many payers don’t handle them properly.

  • Use random strings.
    Predictable formats, like {patientInitials}-{DOS}, can create duplicates.

Our recommendation: Use nanoid or a similar library to create a strong, unique 17-character patient control number for each claim.

Claim submission

You set the patient control number when you submit the claim.

For JSON-based claims submission endpoints, pass the patient control number in the patientControlNumber field. For example, using the Professional Claims (837P) JSON endpoint:

curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data '{
  ...
  "claimInformation": {
    "patientControlNumber": "ABCDEF12345267890",  // Patient control number 
    "claimChargeAmount": "109.20",
    ...
  }
  ...
}'

Claim acknowledgments

A 277CA claim acknowledgment indicates whether the claim was accepted or rejected. Payers send claim acknowledgments to the clearinghouse that submitted the claim.

Listen for claim acknowledgments
Use a webhook or the Poll Transactions endpoint to listen for incoming 277 transactions. When a claim acknowledgment arrives, use the transaction ID to fetch the acknowledgment using Stedi’s Claims acknowledgment endpoint.

Retrieve claim acknowledgments
The claim’s claimStatus.patientAccountNumber and claimStatus.referencedTransactionTraceNumber fields contain the claim’s patient control number. You can use either of these fields in your application logic.

{
  "claims": [
    {
      "claimStatus": {
        "claimServiceBeginDate": "20250101",
        "claimServiceEndDate": "20250101",
        "clearinghouseTraceNumber": "01J1SNT1FQC8ABWD44MAMBDYKA",
        "patientAccountNumber": "ABCDEF12345267890", // Patient control number
        "referencedTransactionTraceNumber": "ABCDEF12345267890", // Patient control number
        ...
      },
      ...
    },
    ...
  ]
}

ERAs

An 835 ERA contains details about payments for a claim, including explanations for any adjustments or denials.

ERAs require transaction enrollment
Payers send ERAs to the provider's designated clearinghouse. The provider designates this clearinghouse through transaction enrollment. Providers can receive ERAs at one clearinghouse per payer.

Listen for ERAs
Use a webhook or the Poll Transactions endpoint to listen for incoming 835 transactions. When an ERA arrives, you can use the transaction ID to fetch the ERA using Stedi’s 835 ERA endpoint.

Retrieve ERAs
The endpoint’s response contains the patient control number in the claimPaymentInfo.patientControlNumber field.

{
  ...
  "transactions": [
    {
      ...
      "detailInfo": [
        {
          "assignedNumber": "1",
          "paymentInfo": [
            {
              "claimPaymentInfo": {
                "patientControlNumber": "ABCDEF12345267890", // Patient control number
                "patientResponsibilityAmount": "30",
                ...
              },
              ...
            },
            ...
          ]
        }
      ],
      ...
    }
  ]
}

Claim status checks

Unlike claim acknowledgments or ERAs, you run 276/277 claim status checks in real time.

Claim status requests
The Real-Time Claim Status JSON endpoint doesn’t accept a patient control number as a request parameter. Instead, you pass in information for the payer, provider, patient, and date of service. For detailed guidance, see our recommended base JSON request.

Claim status responses
If the payer has multiple claims on file that match the information you provided, the response may include multiple claims. Each claim’s claimStatus.patientAccountNumber field contains the claim’s patient control number.

{
  "claims": [
    {
      "claimStatus": {
        "patientAccountNumber": "ABCDEF12345267890",  // Patient control number
        "amountPaid": "95.55",
        ...
      },
      ...
    }
  ],
  ...
}

Other tracking IDs

Tracking service line items

This guide covers tracking at the claims level. However, you can also track service line items from a claim in claim acknowledgments and ERAs. For details, check our docs:

Payer claim control numbers

Don’t use payer claim control numbers for tracking.
Payers use payer claim control numbers to internally track claims. You can use them when talking to a payer, but they can’t easily be matched to a claim submission.

Payer claim control numbers are returned in the following fields:

X12 control numbers

If you’re using Stedi’s JSON APIs, you can safely ignore X12 control numbers.
X12 control numbers are used by Stedi and payers for general EDI file processing. If you’re using our JSON APIs, Stedi manages them for you. They’re not useful for tracking claims or individual transactions.

Process claims with Stedi

Stedi’s JSON Claims APIs are available on all paid Stedi developer plans.

To try it out, request a free trial. We get most teams up and running in less than a day.

Share

Twitter
LinkedIn

Get started with Stedi

Get started with Stedi

Automate healthcare transactions with developer-friendly APIs that support thousands of payers. Contact us to learn more and speak to the team.

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Get updates on what’s new at Stedi

Backed by

Stedi is a registered trademark of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.

Get updates on what’s new at Stedi

Backed by

Stedi is a registered trademark of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.

Get updates on what’s new at Stedi

Backed by

Stedi is a registered trademark of Stedi, Inc. All names, logos, and brands of third parties listed on our site are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Our use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.