Back to Guides
EDI & Claims

EDI 277 Claim Status Guide for Data Engineers

The EDI 277 claim status transaction bridges claim submission and final payment. Learn staging schema design, 837-to-277 reconciliation, claim status category codes, and SQL for revenue cycle analytics and denial prevention.

What Is EDI 277?

The EDI 277 Health Care Claim Status Response is the X12 5010X212 transaction payers use to communicate claim processing status in response to a 276 inquiry or as an unsolicited status update. The 277CA (Claim Acknowledgement) variant is sent by clearinghouses immediately upon receiving an 837 submission to confirm receipt.

In revenue cycle data pipelines, 277 transactions fill the gap between 837 claim submission and 835 payment — giving your team visibility into whether claims are acknowledged, pending additional information, or rejected before final adjudication.

Claim Status Category Codes

CodeDescriptionAction Required
A0AcknowledgedNone — claim received successfully
A1Not FoundVerify claim was submitted; resubmit if needed
A2Pending — in processMonitor; follow up after payer SLA window
A3ApprovedAwaiting 835 payment
A4DeniedReview denial reason; file appeal or corrected claim
A6Payment finalizedReconcile against 835 ERA
A7Sent to secondary payerMonitor secondary payer separately
P2Pending — additional info neededSubmit requested documentation immediately
P3Pending — prior auth pendingExpedite authorization with payer
R0Rejected — cannot processCorrect and resubmit claim
R1Rejected — missing infoAdd missing fields and resubmit
R3Rejected — billing provider invalidVerify NPI and credentialing status

EDI 277 Staging DDL

-- EDI 276 Claim Status Inquiry
CREATE TABLE edi_276_inquiry (
  inquiry_key         UUID          PRIMARY KEY DEFAULT gen_random_uuid(),
  interchange_ctrl_no VARCHAR(9)    NOT NULL,
  inquiry_ts          TIMESTAMP     NOT NULL DEFAULT NOW(),
  payer_id            VARCHAR(20)   NOT NULL,
  provider_npi        VARCHAR(10)   NOT NULL,
  clm_id              VARCHAR(38)   NOT NULL,   -- matches 837 CLM01
  svc_dt_from         DATE,
  svc_dt_to           DATE,
  bld_amt             DECIMAL(12,2),
  inquiry_type        VARCHAR(10)   NOT NULL DEFAULT 'MANUAL',  -- MANUAL, AUTO
  status_cd           VARCHAR(10)   NOT NULL DEFAULT 'PENDING'
);

-- EDI 277 Claim Status Response
CREATE TABLE edi_277_status (
  status_key          UUID          PRIMARY KEY DEFAULT gen_random_uuid(),
  inquiry_key         UUID          REFERENCES edi_276_inquiry(inquiry_key),
  interchange_ctrl_no VARCHAR(9)    NOT NULL,
  response_ts         TIMESTAMP     NOT NULL DEFAULT NOW(),
  payer_id            VARCHAR(20)   NOT NULL,
  clm_id              VARCHAR(38)   NOT NULL,
  payer_clm_ctrl_no   VARCHAR(38),              -- payer internal reference
  clm_sts_cat_cd      VARCHAR(3)    NOT NULL,   -- A0, A2, A4, R0, etc.
  clm_sts_cat_desc    VARCHAR(200),
  clm_sts_cd          VARCHAR(3),               -- detailed status code
  clm_sts_desc        VARCHAR(200),
  entity_cd           VARCHAR(3),               -- who the status applies to
  follow_up_dt        DATE,                     -- when to follow up
  add_info_req_desc   VARCHAR(500),             -- if P2, what info needed
  response_latency_hrs INTEGER,                 -- hours from inquiry to response
  raw_response        VARCHAR,                  -- original 277 file text
  rec_creat_ts        TIMESTAMP     NOT NULL DEFAULT NOW()
);

CREATE INDEX idx_277_clm_id ON edi_277_status(clm_id);
CREATE INDEX idx_277_sts ON edi_277_status(clm_sts_cat_cd, response_ts);
CREATE INDEX idx_276_clm ON edi_276_inquiry(clm_id, inquiry_ts);

837 to 277 Reconciliation SQL

Claims Without Status Response After SLA

-- 837 claims with no 277 acknowledgement after 48 hours
SELECT
    c.clm_id,
    c.billng_prvdr_npi,
    c.mbr_id,
    c.svc_dt_from,
    c.bld_amt,
    c.rec_creat_ts          AS submitted_ts,
    DATEDIFF(hour, c.rec_creat_ts, NOW()) AS hours_since_submission
FROM edi_837p_claim_header c
LEFT JOIN edi_277_status s ON s.clm_id = c.clm_id
WHERE c.rec_creat_ts >= DATEADD(day, -7, NOW())
  AND s.status_key IS NULL
  AND DATEDIFF(hour, c.rec_creat_ts, NOW()) > 48
ORDER BY c.bld_amt DESC;

Claim Status Pipeline Dashboard

-- Full claim lifecycle: 837 → 277 → 835
SELECT
    c.clm_id,
    c.bld_amt,
    c.rec_creat_ts                      AS submitted_ts,
    s.response_ts                       AS status_ts,
    s.clm_sts_cat_cd                    AS current_status,
    p.pmt_dt                            AS payment_dt,
    p.paid_amt,
    DATEDIFF(day, c.rec_creat_ts,
        COALESCE(p.pmt_dt, CURRENT_DATE)) AS days_to_payment,
    CASE
        WHEN p.clm_id IS NOT NULL       THEN 'PAID'
        WHEN s.clm_sts_cat_cd = 'A4'   THEN 'DENIED'
        WHEN s.clm_sts_cat_cd = 'R0'   THEN 'REJECTED'
        WHEN s.clm_sts_cat_cd = 'A2'   THEN 'PENDING'
        WHEN s.clm_sts_cat_cd = 'A0'   THEN 'ACKNOWLEDGED'
        WHEN s.status_key IS NULL       THEN 'NO RESPONSE'
        ELSE 'UNKNOWN'
    END                                 AS pipeline_status
FROM edi_837p_claim_header c
LEFT JOIN edi_277_status s ON s.clm_id = c.clm_id
LEFT JOIN edi_835_claim p ON p.clm_id = c.clm_id
WHERE c.svc_dt_from >= DATEADD(month, -3, CURRENT_DATE)
ORDER BY c.rec_creat_ts DESC;

Frequently Asked Questions

What is EDI 277?

The EDI 277 (Health Care Claim Status Response) is the X12 transaction that payers send in response to a 276 (Health Care Claim Status Request) inquiry from a provider. It provides the current status of a submitted claim — whether it is pending, in process, finalized as paid, or rejected. The 277CA (Claim Acknowledgement) is a specific variant sent by clearinghouses and payers to acknowledge receipt of an 837 claim submission.

What is the difference between EDI 277 and EDI 835?

The EDI 277 indicates claim status during processing — a claim can be acknowledged, pending, in adjudication, or rejected. The EDI 835 is the final payment advice sent after adjudication is complete. In practice, you may receive a 277 acknowledging a claim within hours of submission, while the 835 payment arrives days or weeks later after full adjudication. Track both to manage cash flow and identify claims stuck in processing.

What are the most important claim status category codes?

The STC01 element in the 277 contains the Health Care Claim Status Category Code. Key codes include: A0 (acknowledged), A1 (not found), A2 (pending), A3 (approved), A4 (denied), A6 (payment finalized), P2 (additional information requested), and R0 through R8 for various rejection reasons. Store these with their descriptions in a reference table — the codes are not intuitive and analysts need human-readable status descriptions for reporting.

How do I use EDI 277 for denial prevention?

Process 277CA acknowledgements immediately after 837 submission to catch front-end rejections before they become denials. A 277CA with rejection code TA1 indicates a rejected interchange — the claim never reached the payer and must be resubmitted. Monitor 277 status responses for claims stuck in "pending additional information" status (P2) which require timely action to avoid timely filing denials.

Should I store EDI 276 inquiries in my data warehouse?

Yes — storing 276 inquiries alongside 277 responses gives you inquiry-to-response latency metrics, a complete audit trail of claim follow-up activities, and the ability to identify claims that never received a 277 response within SLA windows. Use the inquiry timestamp as your starting point for claim resolution time calculations, which are key metrics in revenue cycle analytics dashboards.

Related EDI & Claims Resources