Claims processing

Submit healthcare claims, send attachments, check claim status, and receive electronic remittances using developer-friendly APIs or the Stedi portal.

Benefits of Stedi claims processing

Claim validation

Stedi’s database of edits and repairs means fewer payer rejections and faster payments.

New claim edits weekly

Our edits cover all SNIP Types. Check our changelog for the latest. Request a new edit.

Track outstanding claims

Keep providers informed with claim acknowledgments and real-time claim status updates.

Ingest ERAs

Automatically ingest electronic remittances (ERAs) to reconcile payments faster.

“Stedi's 835 ERA transaction enhancements have been a game-changer for our workflow. It's made our payment processing smoother and more efficient – especially as we scale up.”
– Alisha Foster
Operations at Sunbound

How it works

Manage claims using developer-friendly APIs or the Stedi portal

Claim submission

Submit Professional (837P), Dental (837D), and Institutional (837I) claims to thousands of payers. Stedi creates a HIPAA-compliant transaction, applies enhanced edits, and sends it to the right payer.

Submit paper CMS-1500, UB-04, and ADA dental claims using the same APIs, SFTP, and Stedi portal UI used for electronic claims. Stedi prints and mails the claim and any attachments to the payer. You get a 277CA claim acknowledgment when it’s mailed and a PDF proof in the Stedi portal.

submitClaim.js

import { randomUUID } from "node:crypto";
import { StediClient, CreateProfessionalClaimSubmissionCommand } from "@stedi/sdk";

const client = new StediClient({ apiKey: { apiKey } });

const submission = await client.send(
  new CreateProfessionalClaimSubmissionCommand({
    idempotencyKey: randomUUID(),
    purpose: "CHARGEABLE",
    payer: { id: "60054", name: { organization: "Aetna" } },
    insured: {
      memberId: "W123456789",
      name: { person: { firstName: "Jane", lastName: "Doe" } },
      dateOfBirth: "1989-10-02",
    },
    encounter: { primaryDiagnosisCode: "M5450" },
    serviceLines: [
      {
        datesOfService: { start: "2026-03-03", end: "2026-03-03" },
        placeOfService: "11",
        procedureCode: { code: "97530" },
        diagnosisCodes: ["M5450"],
        lineItemChargeAmount: "100.00",
        units: "1",
      },
    ],
    billing: {
      patientControlNumber: "CLM-2026-04219",
      totalCharge: "100.00",
      billingProvider: {
        name: { organization: "Doctors LLC" },
        identifiers: { npi: "1999999984" },
      },
    },
  }),
);

Real-time claim status

Check any claim’s status in seconds with our JSON-based Claim Status API or the Stedi portal.

getClaimStatus.js

fetch(
  "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2",
  {
    method: "POST",
    headers: {
      Authorization: apiKey,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      controlNumber: "000000001",
      tradingPartnerServiceId: "6400",
      encounter: {
        beginningDateOfService: "20240322",
        endDateOfService: "20240322",
        trackingNumber: "1234AAA",
      },
      providers: [
        {
          providerType: "BillingProvider",
          npi: "1999999984",
        },
      ],
      subscriber: {
        memberId: "U1234567890",
        firstName: "Jane",
        lastName: "Doe",
        dateOfBirth: "19891002",
      },
    }),
  }
).then((response) => response.json())

Electronic remittance advice (ERAs)

Receive ERAs automatically through Stedi webhooks or periodically poll for new transactions.

Pull ERAs through our API, or browse, filter, and review them in the Stedi portal. Get your ERAs as PDFs to post remittances by hand or keep a physical copy.

electronicRemittanceAdvice.json

{
  "transactions": [
    {
      "controlNumber": "1003",
      "productionDate": "20240324",
      "receiverIdentifier": "55555500",
      "financialInformation": {
        "transactionHandlingCode": "I",
        "totalActualProviderPaymentAmount": "109.2",
        "creditOrDebitFlagCode": "C",
        "paymentMethodCode": "ACH",
        "paymentFormatCode": "CCP",
        "payerIdentifier": "1111666666",
        "checkIssueOrEFTEffectiveDate": "20240327"
      },
      "payer": {},
      "payee": {},
      "detailInfo": []
    }
  ]
}

Claim attachments

Programmatically upload PDFs and images to Stedi. Then send 275 claim attachments for 837P, 837D, and 837I claims – as electronic or paper claims.

uploadAttachment.js

const { attachmentId, uploadUrl } = await fetch(
  "https://claims.us.stedi.com/2025-03-07/claim-attachments/file",
  {
    method: "POST",
    headers: {
      Authorization: apiKey,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ contentType: "application/pdf" }),
  }
).then((response) => response.json());

await fetch(uploadUrl, {
  method: "PUT",
  headers: { "Content-Type": "application/pdf" },
  body: attachmentPdf,
});

Built-in claim validation

Stedi validates every claim against a database of edits and repairs, catching – and where possible fixing – errors before they reach the payer.

Our edits cover all SNIP Types, including payer-specific SNIP Type 7 edits. We ship new edits weekly. See our changelog for the latest.

Claims submitted through Stedi have a 98% payer acceptance rate.

claimEditError.json

{
  "errors": [
    {
      "code": "33",
      "description": "The billing provider tax id (TIN), 1234567890, is invalid. The TIN must be a string of exactly 9 numbers with no separators. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

Claims view

Manage claims in the Stedi portal

Track each claim from submission to payer adjudication in the Stedi portal’s claims view.

Each claim’s timeline shows every submission, 277CA claim acknowledgment, and ERA. See what the payer paid, what the patient owes, adjustments, and denial reasons. Correct and resubmit from the same view.

Export filtered lists of claims and ERAs to Excel for month-end reporting. Use the My Payers view to find payers that haven’t sent ERAs for your claims.

Retrieve the same claim records and timelines through the Claims Lifecycle API endpoints.

CMS-1500 form and API

Submit and review claims in a familiar format

Submit professional claims through a digital CMS-1500 claim form in the Stedi portal. The form checks each claim against Stedi’s claim edits as you fill it out, so you fix errors before you submit. Or use JSON API endpoints that mirror the form, box by box. Download auto-generated CMS-1500 PDFs through the API or the Stedi portal.

Digital CMS-1500 claim form in the Stedi portal
Paper CMS-1500 health insurance claim form
“We submitted claims three days after signing, and the support is excellent in quality and timeliness of response. For example, Stedi's team – including their CEO – regularly resolves our engineers' issues within minutes. This used to take months or just never happen at all with our previous vendor.”
Pair Team
– Craig Micon
Head of Product at Pair Team
Case study

Connect to thousands of payers

Our growing set of payers provides broad, reliable connectivity. Stedi dynamically routes traffic to the most reliable connection, eliminating single points of failure.

Start processing claims today

Start free with a sandbox account. Upgrade to production when you’re ready. There are no monthly minimums or setup fees. You only pay for the transactions you use. See our pricing.