Changelog

Submit raw X12 claims in the Stedi portal's claims view

You can now submit claims as raw 837 X12 EDI files in the Stedi portal’s claims view.

Previously, you could only submit raw X12 claims in the Stedi portal using the transactions view. We're retiring the transactions view’s raw X12 claim submission flow with this change.

How to submit a raw X12 claim in the Stedi portal

To upload a raw X12 claim from the claims view, click Submit claim, select Upload raw X12 file, and add your .edi file.

You can also select an X12 implementation guide, such as 837P Professional Claim (X222A1) or 837D Dental Claim (X224A2), and paste in your X12.

Click Submit claim when you’re ready to submit.

The editor validates the file against the implementation guide’s spec and flags structural errors. You can fix these errors before submitting.

Error in the Stedi portal's EDI editor

Submit multiple claims in one file

A single 837 X12 file can contain multiple claims, as long as they’re the same claim type – 837P professional claim, 837I institutional claim, or 837D dental claim – and use the same X12 implementation guide.

For guidance, see:

Claim edits

The Stedi portal’s EDI editor only checks a claim’s X12 structure. Stedi also runs claim edits after you submit a claim to catch other errors that could lead to a payer rejection.

If you submit a claim as raw X12 in the Stedi portal’s claims view, these edits run asynchronously. If the claim fails an edit, Stedi will reject the claim with a 277CA claim acknowledgment after submission.

Availability

All Stedi production accounts can submit claims as raw X12 in the Stedi portal’s claims view.

Introducing pay-as-you-go pricing

We're introducing a new pay-as-you-go pricing plan. With the new pay-as-you-go plan, you get a full production account (including API and SFTP access) and only pay for the transactions you use, with automatic volume discounts and no monthly minimums, setup fees, or per-provider/location fees.

Previously, API and SFTP access was only available with a $500 monthly minimum plan. That minimum priced out startups, practices, and solo developers who wanted to move from prototype to production without a commitment.

Existing Stedi accounts stay on their current pricing plans by default and can switch to a pay-as-you-go or custom plan at any time by contacting Stedi support.

How pay-as-you-go pricing works

The pay-as-you-go plan uses tiered pricing. For most transactions, the per-transaction rate drops as your monthly volume grows.

When you sign up for the pay-as-you-go plan, you add a credit card and fund an initial Stedi account balance, starting at $25.

Each transaction draws down the balance at the rate for its pricing tier. See our pricing page for an estimator and full breakdown of each tier.

Stedi automatically adds funds to your balance when it drops below a trigger you set. For example, you can add $25 to your balance whenever it falls below $10, the minimum trigger.

Auto recharge

Your balance rolls forward month to month. At the end of each month, Stedi sends an invoice that covers your monthly usage. If you send zero transactions in a month, you pay nothing.

For more details, see our announcement blog.

Test ERAs now support professional claims without an NPI

Stedi's test claims workflow now returns a test Electronic Remittance Advice (ERA) for professional claims without the billing provider’s National Provider Identifier (NPI).

The test claims workflow lets you submit a test claim to the Stedi Test Payer and get a test ERA in response. You can use the workflow to do end-to-end validation and build integration tests.

Atypical providers – providers without an NPI – sometimes submit professional claims using a commercial number or location number.

Previously, the test claims workflow required the billing provider’s NPI in the submitted claim to generate and return a test ERA. Now, the test ERA uses the billing provider's tax ID instead.

Submitting the test claim

To generate a test ERA without the billing provider’s NPI, include the billing provider’s tax ID and a state license number when submitting the test professional claim to the Stedi Test Payer.

Field837P Claims Submission JSON API fieldX12 element
Tax IDbilling.employerIdREF02 of Loop 2010AA (Billing Provider Name), where REF01 = ”EI” (Employer's Identification Number)
State license numberbilling.stateLicenseNumberREF02 of Loop 2010AA (Billing Provider Name), where REF01 = ”0B” (State License Number)

Receiving the test ERA

The test ERA identifies the payee by tax ID and returns the state license number from the original claim.

Field835 ERA Report API fieldX12 element
Tax IDpayee.federalTaxPayersIdentificationNumberN104 of Loop 1000B (Payee Identification), where N103 = ”FI” (Federal Tax ID)
State license numbertransactions[].payee.stateLicenseNumberREF02 of Loop 1000B (Payee Identification), where REF01 = ”0B” (State License Number)

For example, an ERA retrieved using the 835 ERA Report endpoint:

{
  "transactions": [
    {
      "payee": {
        "name": "Test Provider",
        "taxId": "123456789", // Billing provider's tax ID
        "stateLicenseNumber": "LIC987654", // Billing provider's state license, if submitted
        ...
      },
      ...
    }
  ]
}

For more information, see our Test claims workflow docs.

Claim edit: Invalid diagnosis-related group code format

Stedi now rejects 837I institutional claims with a diagnosis-related group (DRG) code that isn't three or four numeric digits.

Diagnosis-related group codes

In institutional claims, a diagnosis-related group (DRG) code groups inpatient hospital stays into categories expected to consume similar resources. DRG 470 covers inpatient hip or knee replacements without complications.

Payers use DRG codes to determine fixed reimbursement rates under DRG-based contracts with providers. Medicare inpatient hospital reimbursement is the most common use case, though Medicaid and some commercial plans use different DRG systems. DRG codes are only required if the provider's payer contract uses DRG reimbursement.

Diagnosis-related group code (DRG)

Claim typeJSON API fieldX12 element
837I institutionalclaimInformation.diagnosisRelatedGroupInformation.drugRelatedGroupCodeHI01-02 (Industry Code) of Loop 2300 (Claim Information) where HI01-01 = DR (Diagnosis-related group)

How the edit works

X12 standards require all valid DRG codes to be three or four numeric digits. If a claim’s DRG code is a different length or contains a non-numeric character, the payer may reject the claim.

This edit catches the issue before the claim reaches the payer. It prevents payer rejections, which take longer to resolve and delay payment for the provider.

Rejection errors

If you submit a claim using Stedi's Claim Submission API endpoints and the claim fails the edit, you'll get back an error response in real time. The response includes details in the errors array:

{
  "errors": [
    {
      "code": "33",
      "description": "Invalid Diagnosis Related Group (DRG) code. When entered, the DRG code must be three or four numerics and a valid code. The submitted code, 47A, is invalid. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

If you submit a claim using SFTP and the claim fails the edit, Stedi will reject the claim with a 277CA claim acknowledgment. The acknowledgment will include a related claim status category code, claim status code, and error message:

STC*A7>256*[DATE]*U*[AMOUNT]********Invalid Diagnosis Related Group (DRG) code. When entered, the DRG code must be three or four numerics and a valid code. The submitted code, 47A, is invalid. Correct and resubmit.~

Claim edit: Missing address line 1 when line 2 is present

Stedi now rejects 837P professional, 837D dental, and 837I institutional claims that include an address with line 2 populated but line 1 missing or blank.

How the edit works

Every address in a healthcare claim can contain two lines:

  • Line 1 is the primary street address (e.g. 123 Main St).

  • Line 2 is a secondary line such as a suite, apartment, or floor (e.g. Suite 100).

X12 standards require that addresses with a populated line 2 also have a populated line 1. If any address on the claim has line 2 populated but a missing or blank line 1, the payer may reject the claim.

This edit catches the issue before the claim reaches the payer. It prevents payer rejections, which take longer to resolve and delay payment for the provider.

Rejection errors

If you submit a claim using Stedi's Claim Submission API endpoints and the claim fails the edit, you'll get back an error response in real time. The response includes details in the errors array.

The error description names the specific entity whose address failed the check. For example, Billing Provider, Subscriber, or Service Facility.

{
  "errors": [
    {
      "code": "33",
      "description": "Missing Address line. When submitting address lines, line 1 is required when line 2 is present. Submitted Billing Provider address includes a line 2 but missing the line 1 address. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

If you submit a claim using SFTP and the claim fails the edit, Stedi will reject the claim with a 277CA claim acknowledgment. The acknowledgment will include a related claim status category code, claim status code, entity identifier code, and error message:

STC*A6>503>85*[DATE]*U*[AMOUNT]******A8>732**Missing Address line. When submitting address lines, line 1 is required when line 2 is present. Submitted Billing Provider address includes a line 2 but missing the line 1 address. Correct and resubmit.~

Claim edit: State and province codes must be two characters

Stedi now rejects 837P professional, 837D dental, and 837I institutional claims that include a state or province code that is not exactly two characters.

How the edit works

X12 standards require claims to use a 2-character state or province code for any address in the U.S. or Canada:

If a state or province code is not exactly two characters, the payer may reject the claim.

This edit catches the issue before the claim reaches the payer. It prevents payer rejections, which take longer to resolve and delay payment for the provider.

Important: X12 standards only require state and province codes for addresses in the U.S. and Canada. Claims that omit a state or province code are unaffected by this edit.

Rejection errors

If you submit a claim using Stedi's Claim Submission API endpoints and the claim fails the edit, you'll get back an error response in real time. The response includes details in the errors array:

{
  "errors": [
    {
      "code": "33",
      "description": "Invalid State/Province code. The state or province code is required when the city is in the U.S. or Canada. All codes must be abbreviated and exactly two (2) characters. The submitted code for Subscriber is invalid. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

If you submit a claim using SFTP and the claim fails the edit, Stedi will reject the claim with a 277CA claim acknowledgment. The acknowledgment will include a related claim status category code, claim status code, entity identifier code, and error message:

STC*A7>501>HK*[DATE]*U*[AMOUNT]******A7>569**Invalid State/Province code. The state or province code is required when the city is in the U.S. or Canada. All codes must be abbreviated and exactly two (2) characters. The submitted code for Subscriber is invalid. Correct and resubmit.~

Introducing CMS-1500 Claim Form PDF downloads in the Stedi portal's claims view

You can now download CMS-1500 Claim Form PDFs for professional claims from the Stedi portal’s claims view.

Previously, manual downloads were only available from a claim's transaction details page.

You can use the PDFs to export submitted claims for record keeping, physically mail a claim to a payer, or review claim information in a familiar format.

When you download the PDF, you can choose whether to include the CMS-1500 form background or omit it to print claim data onto pre-printed forms.

For API access, you can continue to use the CMS-1500 PDF: Business Identifier or CMS-1500 PDF: Transaction ID endpoints. For more information, see our CMS-1500 Claim Form PDF docs.

Introducing semantic filenames for SFTP files received from Stedi

You can now configure Stedi's SFTP server to deliver files with semantic filenames that include the X12 transaction set.

Previously, files in the from-stedi directory used UUIDs, such as f9591145-8343-4bd8-a338-5bcca8ac3baf.x12, as filenames. You had to open or parse each file to know whether it contained a 277CA claim acknowledgment, 835 Electronic Remittance Advice (ERA), and so on. Semantic filenames include a transaction set identifier so you can route, filter, or sort files without parsing their contents.

How semantic filenames work

You can configure filenames on the SFTP setup page of your account settings. Set File naming to one of:

  • Semantic{TIMESTAMP}_{UUID}_{SEMANTIC_IDENTIFIER}.x12

Example: 20260416124500_f9591145-8343-4bd8-a338-5bcca8ac3baf_277CA.x12

  • UUID only{UUID}.x12 Example: f9591145-8343-4bd8-a338-5bcca8ac3baf.x12

Semantic identifiers cover the X12 transaction sets that Stedi delivers:

The filename configuration only affects files that you receive from Stedi. Stedi delivers these files to your from-stedi directory. Files you upload to Stedi keep their original names, and files Stedi sends to payers are unaffected.

Existing Stedi accounts will continue using UUID-based filenames by default. New Stedi accounts will default to semantic filenames.

For more information, see our SFTP file naming docs.

Claim edit: An external cause code can't be the principal ICD-10-CM diagnosis code

Stedi now rejects 837P professional and 837I institutional claims that list an external cause code as the principal ICD-10-CM diagnosis code.

ICD-10-CM diagnosis codes

In healthcare claims, diagnosis codes describe what’s wrong with the patient. HIPAA requires that professional and institutional claims only use valid, billable ICD-10-CM codes as diagnosis codes. For example, M54.50 is the billable ICD-10-CM code for “Low back pain, unspecified.”

A claim can include multiple diagnosis codes. The first one listed – called the principal (or primary) diagnosis – is the condition primarily responsible for the visit. The rest are additional diagnoses.

Principal diagnosis code

Claim typeJSON API fieldX12 element
837P professionalclaimInformation.healthCareCodeInformation[0].diagnosisCodeHI01-02 (Diagnosis Code) of Loop 2300 (Claim Information), where HI01-01 is ABK (ICD-10-CM)
837I institutionalclaimInformation.principalDiagnosis.principalDiagnosisCodeHI01-02 (Principal Diagnosis Code) of Loop 2300 (Claim Information), where HI01-01 is ABK (ICD-10-CM)

External cause codes

An external cause code is an ICD-10-CM diagnosis code used to describe how an injury or condition occurred. For example, V03.10XA (pedestrian struck by car) is an external cause code. External cause codes always start with V, W, X, or Y.

How the edit works

External cause codes are valid ICD-10-CM diagnosis codes, but ICD-10-CM guidelines only allow them as additional diagnoses to supplement the principal diagnosis. External cause codes are not allowed as the principal diagnosis. Payers may reject claims that break this rule.

This edit catches the issue before the claim reaches the payer. It prevents payer rejections, which take longer to resolve and delay payment for the provider.

Rejection errors

If you submit a claim using Stedi's Claim Submission API endpoints and the claim fails the edit, you'll get back an error response in real time. The response includes details in the errors array:

{
  "errors": [
    {
      "code": "33",
      "description": "Invalid Principal Diagnosis. External cause codes, which describe how the condition occurred, cannot be used as the principal diagnosis. The submitted diagnosis code, W1830XA, is an external cause code (codes beginning with V, W, X, or Y). Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

If you submit a claim using SFTP and the claim fails the edit, Stedi will reject the claim with a 277CA claim acknowledgment. The acknowledgment will include a related claim status category code, claim status code, and error message:

STC*A7>254*[DATE]*U*[AMOUNT]******A7>509**Invalid Principal Diagnosis. External cause codes, which describe how the condition occurred, cannot be used as the principal diagnosis. The submitted diagnosis code, W1830XA, is an external cause code (codes beginning with V, W, X, or Y). Correct and resubmit.~

Resolution tip

In most cases, you can pass this edit by setting the principal diagnosis to the resulting injury or condition and listing the external cause code as an additional diagnosis.

For example, on a claim for a pedestrian struck by a car, list the injury, like S72.001A (fracture of the right femur), as the principal diagnosis and an external cause code, such as V03.10XA (pedestrian struck by car), as an additional diagnosis.

Related claim edits

Stedi has other edits that enforce principal diagnosis rules. See:

Claim edit: Duplicate value codes in institutional claims

Stedi now rejects 837I institutional claims that include the same value code more than once.

Value codes

In institutional claims, value codes are two-character alphanumeric codes used to report financial or clinical information that affects reimbursement to the payer. For example, 01 is the value code for "Most Common Semi-Private Room Rate." Value codes are paired with monetary amounts.

Value code

Claim typeJSON API fieldX12 element
837I institutionalclaimInformation.valueInformationList[][].valueCodeHI-02 (Value Code) of Loop 2300 (Claim Information), where HI-01 is BE (Value)

How the edit works

X12 standards allow up to 12 value codes per claim. Each value code within a claim must be unique. With duplicate codes, the payer can't determine which monetary amount to apply for the value code and may reject the claim.

This edit catches the issue before the claim reaches the payer. It prevents payer rejections, which take longer to resolve and delay payment for the provider.

Rejection errors

If you submit a claim using Stedi's Claim Submission API endpoints and the claim fails the edit, you'll get back an error response in real time. The response includes details in the errors array:

{
  "errors": [
    {
      "code": "33",
      "description": "Duplicate Value Code(s). Each value code must be unique. Submitted value code(s), D4, appear more than once on the claim. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ]
}

If you submit a claim using SFTP and the claim fails the edit, Stedi will reject the claim with a 277CA claim acknowledgment. The acknowledgment will include a related claim status category code, claim status code, and error message:

STC*A7>725*[DATE]*U*[AMOUNT]******A7>732**Duplicate Value Code(s). Each value code must be unique. Submitted value code(s), D4, appear more than once on the claim. Correct and resubmit.~