X12 276 Health Care Claim Status Request

The 276 (005010X212) is the HIPAA transaction a provider sends to ask a payer about the status of one or more submitted claims. The payer answers with a 277.

The request identifies the payer, the provider, the subscriber and dependent, and each claim with its patient control number, charge amount and dates of service.

At a glance

Standard
X12 HIPAA
Implementation guide
005010X212
Functional group
HR (GS01)
Sent by
Provider to payer
Responses
277, 999
ediFabric .NET template
TS276 in EdiFabric.Templates.Hipaa
OpenEDI definition
View 276 in the spec library

276 structure

The full X12 276 layout from its OpenEDI definition, the same model ediFabric uses to parse, validate and generate it: 14 loops and 41 segment positions, in file order. Loops are shaded and their segments indented; Max use is how many times a segment or loop may repeat.

Segment / loop Name Usage Max use
STTransaction Set HeaderRequired1
BHTBeginning of Hierarchical TransactionRequired1
Loop 2000AInformation Source LevelRequired>1
HLInformation Source LevelRequired1
Loop 2100APayer NameRequired1
NM1Payer NameRequired1
Loop 2000BInformation Receiver LevelRequired>1
HLInformation Receiver LevelRequired1
Loop 2100BInformation Receiver NameRequired1
NM1Information Receiver NameRequired1
Loop 2000CService Provider LevelRequired>1
HLService Provider LevelRequired1
Loop 2100CProvider NameRequired2
NM1Provider NameRequired1
Loop 2000DSubscriber LevelRequired>1
HLSubscriber LevelRequired1
DMGSubscriber Demographic InformationSituational1
Loop 2100DSubscriber NameRequired1
NM1Subscriber NameRequired1
Loop 2200DClaim Status Tracking NumberSituational>1
TRNClaim Status Tracking NumberRequired1
Any orderThe loops below can appear in any orderSituational1
REFPayer Claim Control NumberSituational1
REFInstitutional Bill Type IdentificationSituational1
REFApplicationor Location System IdentifierSituational1
REFGroup NumberSituational1
REFPatient Control NumberSituational1
REFPharmacy Prescription NumberSituational1
REFClaim Identification Number for Clearinghouses and Other Transmission IntermediariesSituational1
AMTClaim Submitted ChargesSituational1
DTPClaim Service DateSituational1
Loop 2210DService Line InformationSituational>1
SVCService Line InformationRequired1
REFService Line Item IdentificationSituational1
DTPService Line DateRequired1
Loop 2000EDependent LevelSituational>1
HLDependent LevelRequired1
DMGDependent Demographic InformationRequired1
Loop 2100EDependent NameRequired1
NM1Dependent NameRequired1
Loop 2200EClaim Status Tracking NumberRequired>1
TRNClaim Status Tracking NumberRequired1
Any orderThe loops below can appear in any orderSituational1
REFPayer Claim Control NumberSituational1
REFInstitutional Bill Type IdentificationSituational1
REFApplicationor Location System IdentifierSituational1
REFGroup NumberSituational1
REFPatient Control NumberSituational1
REFPharmacy Prescription NumberSituational1
REFClaim Identification Number for Clearinghouses and Other Transmission IntermediariesSituational1
AMTClaim Submitted ChargesSituational1
DTPClaim Service DateSituational1
Loop 2210EService Line InformationSituational>1
SVCService Line InformationRequired1
REFService Line Item IdentificationSituational1
DTPService Line DateRequired1
SETransaction Set TrailerRequired1

Usage follows the 005010X212 implementation guide: Required segments must be sent, Situational ones only when the guide's condition applies. Trading partners often add their own rules in companion guides - ediFabric templates can be adjusted to match. Open the element-level definition in the EdiNation spec library.

Sample 276 file

A claim status request for claims under one provider. Paste it into EdiNation to see every element named and validated.

ISA*00*          *00*          *ZZ*1234567        *ZZ*11111          *170508*1141*^*00501*000000101*1*P*:~
GS*HC*XXXXXXX*XXXXX*20170617*1741*101*X*005010X212~
ST*276*0001*005010X212~
BHT*0010*13*ABC276XXX*20050915*1425~
HL*1**20*1~
NM1*PR*2*ABC INSURANCE*****PI*12345~
HL*2*1*21*1~
NM1*41*2*XYZ SERVICE*****46*X67E~
HL*3*2*19*1~
NM1*1P*2*HOME HOSPITAL*****XX*1666666661~
HL*4*3*22*0~
DMG*D8*19301210*M~
NM1*IL*1*SMITH*FRED****MI*123456789A~
TRN*1*ABCXYZ1~
REF*BLT*111~
REF*EJ*SM123456~
AMT*T3*8513.88~
DTP*472*RD8*20050831-20050906~
HL*5*3*22*0~
DMG*D8*19301115*F~
NM1*IL*1*JONES*MARY****MI*234567890A~
TRN*1*ABCXYZ2~
REF*BLT*111~
REF*EJ*JO234567~
AMT*T3*7599~
DTP*472*RD8*20050731-20050809~
HL*6*2*19*1~
NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666~
HL*7*6*22*1~
NM1*IL*1*MANN*JOHN****MI*345678901~
HL*8*7*23~
DMG*D8*19951101*M~
NM1*QC*1*MANN*JOSEPH~
TRN*1*ABCXYZ3~
REF*EJ*MA345678~
SVC*HC:99203*150*****1~
DTP*472*D8*20050501~
SE*36*0001~
GE*1*101~
IEA*1*000000101~

The same 276 as JSON

ediFabric turns every loop, segment and element into a named field. This is the transaction from the sample, in the JSON that ediFabric Native and Cloud return and accept.

{
  "ST": {
    "TransactionSetIdentifierCode_01": "276",
    "TransactionSetControlNumber_02": "0001",
    "ImplementationConventionPreference_03": "005010X212"
  },
  "BHT_BeginningOfHierarchicalTransaction": {
    "HierarchicalStructureCode_01": "0010",
    "TransactionSetPurposeCode_02": "13",
    "SubmitterTransactionIdentifier_03": "ABC276XXX",
    "TransactionSetCreationDate_04": "20050915",
    "TransactionSetCreationTime_05": "1425"
  },
  "Loop2000A": [
    {
      "HL_InformationSourceLevel": {
        "HierarchicalIDNumber_01": "1",
        "HierarchicalLevelCode_03": "20",
        "HierarchicalChildCode_04": "1"
      },
      "Loop2100A": {
        "NM1_PayerName": {
          "EntityIdentifierCode_01": "PR",
          "EntityTypeQualifier_02": "2",
          "ResponseContactLastorOrganizationName_03": "ABC INSURANCE",
          "IdentificationCodeQualifier_08": "PI",
          "ResponseContactIdentifier_09": "12345"
        }
      },
      "Loop2000B": [
        {
          "HL_InformationReceiverLevel": {
            "HierarchicalIDNumber_01": "2",
            "HierarchicalParentIDNumber_02": "1",
            "HierarchicalLevelCode_03": "21",
            "HierarchicalChildCode_04": "1"
          },
          "Loop2100B": {
            "NM1_InformationReceiverName": {
              "EntityIdentifierCode_01": "41",
              "EntityTypeQualifier_02": "2",
              "ResponseContactLastorOrganizationName_03": "XYZ SERVICE",
              "IdentificationCodeQualifier_08": "46",
              "ResponseContactIdentifier_09": "X67E"
            }
          },
          "Loop2000C": [
            {
              "HL_ServiceProviderLevel": {
                "HierarchicalIDNumber_01": "3",
                "HierarchicalParentIDNumber_02": "2",
                "HierarchicalLevelCode_03": "19",
                "HierarchicalChildCode_04": "1"
              },
              "Loop2100C": [
                {
                  "NM1_ProviderName": {
                    "EntityIdentifierCode_01": "1P",
                    "EntityTypeQualifier_02": "2",
                    "ResponseContactLastorOrganizationName_03": "HOME HOSPITAL",
                    "IdentificationCodeQualifier_08": "XX",
                    "ResponseContactIdentifier_09": "1666666661"
                  }
                }
              ],
              "Loop2000D": [
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "4",
                    "HierarchicalParentIDNumber_02": "3",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "0"
                  },
                  "DMG_SubscriberDemographicInformation": {
                    "DateTimePeriodFormatQualifier_01": "D8",
                    "DependentBirthDate_02": "19301210",
                    "DependentGenderCode_03": "M"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "SMITH",
                      "ResponseContactFirstName_04": "FRED",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "123456789A"
                    }
                  },
                  "Loop2200D": [
                    {
                      "TRN_ClaimStatusTrackingNumber": {
                        "TraceTypeCode_01": "1",
                        "CurrentTransactionTraceNumber_02": "ABCXYZ1"
                      },
                      "AllREF": {
                        "REF_InstitutionalBillTypeIdentification": {
                          "ReferenceIdentificationQualifier_01": "BLT",
                          "MemberGrouporPolicyNumber_02": "111"
                        },
                        "REF_PatientControlNumber": {
                          "ReferenceIdentificationQualifier_01": "EJ",
                          "MemberGrouporPolicyNumber_02": "SM123456"
                        }
                      },
                      "AMT_ClaimSubmittedCharges": {
                        "AmountQualifierCode_01": "T3",
                        "TotalClaimChargeAmount_02": "8513.88"
                      },
                      "DTP_ClaimServiceDate": {
                        "DateTimeQualifier_01": "472",
                        "DateTimePeriodFormatQualifier_02": "RD8",
                        "DateTimePeriod_03": "20050831-20050906"
                      }
                    }
                  ]
                },
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "5",
                    "HierarchicalParentIDNumber_02": "3",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "0"
                  },
                  "DMG_SubscriberDemographicInformation": {
                    "DateTimePeriodFormatQualifier_01": "D8",
                    "DependentBirthDate_02": "19301115",
                    "DependentGenderCode_03": "F"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "JONES",
                      "ResponseContactFirstName_04": "MARY",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "234567890A"
                    }
                  },
                  "Loop2200D": [
                    {
                      "TRN_ClaimStatusTrackingNumber": {
                        "TraceTypeCode_01": "1",
                        "CurrentTransactionTraceNumber_02": "ABCXYZ2"
                      },
                      "AllREF": {
                        "REF_InstitutionalBillTypeIdentification": {
                          "ReferenceIdentificationQualifier_01": "BLT",
                          "MemberGrouporPolicyNumber_02": "111"
                        },
                        "REF_PatientControlNumber": {
                          "ReferenceIdentificationQualifier_01": "EJ",
                          "MemberGrouporPolicyNumber_02": "JO234567"
                        }
                      },
                      "AMT_ClaimSubmittedCharges": {
                        "AmountQualifierCode_01": "T3",
                        "TotalClaimChargeAmount_02": "7599"
                      },
                      "DTP_ClaimServiceDate": {
                        "DateTimeQualifier_01": "472",
                        "DateTimePeriodFormatQualifier_02": "RD8",
                        "DateTimePeriod_03": "20050731-20050809"
                      }
                    }
                  ]
                }
              ]
            },
            {
              "HL_ServiceProviderLevel": {
                "HierarchicalIDNumber_01": "6",
                "HierarchicalParentIDNumber_02": "2",
                "HierarchicalLevelCode_03": "19",
                "HierarchicalChildCode_04": "1"
              },
              "Loop2100C": [
                {
                  "NM1_ProviderName": {
                    "EntityIdentifierCode_01": "1P",
                    "EntityTypeQualifier_02": "2",
                    "ResponseContactLastorOrganizationName_03": "HOME HOSPITAL PHYSICIANS",
                    "IdentificationCodeQualifier_08": "XX",
                    "ResponseContactIdentifier_09": "1666666666"
                  }
                }
              ],
              "Loop2000D": [
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "7",
                    "HierarchicalParentIDNumber_02": "6",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "1"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "MANN",
                      "ResponseContactFirstName_04": "JOHN",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "345678901"
                    }
                  },
                  "Loop2000E": [
                    {
                      "HL_DependentLevel": {
                        "HierarchicalIDNumber_01": "8",
                        "HierarchicalParentIDNumber_02": "7",
                        "HierarchicalLevelCode_03": "23"
                      },
                      "DMG_DependentDemographicInformation": {
                        "DateTimePeriodFormatQualifier_01": "D8",
                        "DependentBirthDate_02": "19951101",
                        "DependentGenderCode_03": "M"
                      },
                      "Loop2100E": {
                        "NM1_DependentName": {
                          "EntityIdentifierCode_01": "QC",
                          "EntityTypeQualifier_02": "1",
                          "ResponseContactLastorOrganizationName_03": "MANN",
                          "ResponseContactFirstName_04": "JOSEPH"
                        }
                      },
                      "Loop2200E": [
                        {
                          "TRN_ClaimStatusTrackingNumber": {
                            "TraceTypeCode_01": "1",
                            "CurrentTransactionTraceNumber_02": "ABCXYZ3"
                          },
                          "AllREF": {
                            "REF_PatientControlNumber": {
                              "ReferenceIdentificationQualifier_01": "EJ",
                              "MemberGrouporPolicyNumber_02": "MA345678"
                            }
                          },
                          "Loop2210E": [
                            {
                              "SVC_ServiceLineInformation": {
                                "CompositeMedicalProcedureIdentifier_01": {
                                  "ProductorServiceIDQualifier_01": "HC",
                                  "ProcedureCode_02": "99203"
                                },
                                "LineItemChargeAmount_02": "150",
                                "UnitsofServiceCount_07": "1"
                              },
                              "DTP_ServiceLineDate": {
                                "DateTimeQualifier_01": "472",
                                "DateTimePeriodFormatQualifier_02": "D8",
                                "DateTimePeriod_03": "20050501"
                              }
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "SE": {
    "NumberofIncludedSegments_01": "36",
    "TransactionSetControlNumber_02": "0001"
  }
}

Parse and validate a 276 file

Read the file into typed objects with ediFabric .NET, convert it to JSON in process with the ediFabric Native bindings for Python, Java and C, or post it to the ediFabric Cloud REST API from any language.

using EdiFabric.Templates.Hipaa5010;

License.SetSerial("YOUR_SERIAL_KEY");

using (var stream = File.OpenRead(@"C:\edi\RequestTransmission.txt"))
using (var reader = new X12Reader(stream, "EdiFabric.Templates.Hipaa"))
{
    var items = await reader.ReadToEndAsync();
    foreach (var transaction in items.OfType<TS276>())
    {
        if (transaction.IsValid(out MessageErrorContext errors))
            Console.WriteLine($"{transaction.ST.TransactionSetControlNumber_02} is valid");
        else
            Console.WriteLine(string.Join(Environment.NewLine, errors.Flatten()));
    }
}
import json
import edifabric_x12 as ef

serial = "YOUR_SERIAL_KEY"
ef.load_library()
ef.set_serial(serial)
ef.set_map(json.dumps({"default": serial, "maps": {}}))

edi = open("RequestTransmission.txt", "rb").read()
output, offset = ef.parse(edi, ef.ParseMode.JSON_VALIDATE)
transactions = output[:offset]
report = json.loads(output[offset:])
print(report["errors_count"])
import com.edifabric.nativex12.EdiFabricX12;
import com.edifabric.nativex12.ParseMode;
import com.edifabric.nativex12.ParseResult;

String serial = "YOUR_SERIAL_KEY";
EdiFabricX12.loadLibrary();
EdiFabricX12.setSerial(serial);
EdiFabricX12.setMap("{\"default\":\"" + serial + "\",\"maps\":{}}");

String edi = Files.readString(Path.of("RequestTransmission.txt"));
ParseResult result = EdiFabricX12.parse(edi, ParseMode.JSON_VALIDATE);
System.out.println(result.getTransactions());
System.out.println(result.getReport());
#include "edifabric_x12.h"

const char *serial = "YOUR_SERIAL_KEY";
ef_parse_result result;

if (ef_load_library(NULL) != 0)
    return 1;
ef_set_serial(serial);
ef_set_map("{\"default\":\"YOUR_SERIAL_KEY\",\"maps\":{}}");

char *edi = read_file("RequestTransmission.txt", NULL);   /* helper in example_all_functions.c */
if (ef_parse(edi, EF_PARSE_JSON_VALIDATE, NULL, &result) == 0) {
    /* transactions = output[0 .. offset), report = output[offset .. length) */
    fwrite(result.output.data, 1, (size_t)result.output.length, stdout);
    ef_free(result.output.data);
}
curl -X POST 'https://api.edination.com/v2/x12/read' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/octet-stream' \
--data-binary '@RequestTransmission.txt'

Generate a 276 file

Populate a TS276 object in .NET, or pass JSON in the shape shown above to ediFabric Native or ediFabric Cloud, and get a valid 276 file back.

using EdiFabric.Templates.Hipaa5010;

License.SetSerial("YOUR_SERIAL_KEY");

var transaction = new TS276();

transaction.ST = new ST();
transaction.ST.TransactionSetIdentifierCode_01 = "276";
transaction.ST.TransactionSetControlNumber_02 = "0001";
transaction.ST.ImplementationConventionPreference_03 = "005010X212";

transaction.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_3();
transaction.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0010";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "13";
transaction.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "ABC276XXX";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20050915";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "1425";

//  Repeating 2000A Loops
transaction.Loop2000A = new List<Loop_2000A_276>();

//  Begin 2000A Loop
var loop2000A = new Loop_2000A_276();

// ... set the remaining loops and segments the same way

// SegmentBuilders is in the Common project of the example repository
using (var stream = new MemoryStream())
{
    using (var writer = new X12Writer(stream))
    {
        writer.Write(SegmentBuilders.BuildIsa("1"));
        writer.Write(SegmentBuilders.BuildGs("1", "SENDER1", "RECEIVER1", "005010X212"));
        writer.Write(transaction);
    }
    Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray()));
}
import json
import edifabric_x12 as ef

serial = "YOUR_SERIAL_KEY"
ef.load_library()
ef.set_serial(serial)
ef.set_map(json.dumps({"default": serial, "maps": {}}))

# the transactions JSON returned by ef.parse, edited or produced by your application
transactions = open("RequestTransmission.json", "rb").read()
edi = ef.build(transactions, postfix="\r\n")
print(edi)
import com.edifabric.nativex12.EdiFabricX12;

String serial = "YOUR_SERIAL_KEY";
EdiFabricX12.loadLibrary();
EdiFabricX12.setSerial(serial);
EdiFabricX12.setMap("{\"default\":\"" + serial + "\",\"maps\":{}}");

// the transactions JSON returned by parse, edited or produced by your application
String transactions = Files.readString(Path.of("RequestTransmission.json"));
String edi = EdiFabricX12.build(transactions, "\r\n");
System.out.println(edi);
#include "edifabric_x12.h"

ef_buffer edi;

if (ef_load_library(NULL) != 0)
    return 1;
ef_set_serial("YOUR_SERIAL_KEY");
ef_set_map("{\"default\":\"YOUR_SERIAL_KEY\",\"maps\":{}}");

/* the transactions JSON returned by ef_parse, edited or produced by your application */
char *transactions = read_file("RequestTransmission.json", NULL);
if (ef_build(transactions, "\r\n", &edi) == 0) {
    fwrite(edi.data, 1, (size_t)edi.length, stdout);
    ef_free(edi.data);
}
# the JSON returned by /read, edited or produced by your application
curl -X POST 'https://api.edination.com/v2/x12/write' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/json' \
--data-binary '@RequestTransmission.json' \
-o 'RequestTransmission.txt'

276 questions

What response does a payer send to a 276?

A 277 claim status response (005010X212) with an STC status for each claim, and a 999 for the file.

How is a claim identified in a 276?

By the TRN trace number, the patient control number in REF, the claim charge amount in AMT and the service dates in DTP. The payer's claim number can be sent in REF*1K when known.

Should I poll with 276 requests?

Payers publish limits. The 277CA and the 835 already report acceptance and payment, so a 276 is usually sent only when a claim has not been reported within the expected time.

How do I parse and generate X12 276 files in .NET, Python, Java and C?

In .NET, install EdiFabric and EdiFabric.Templates.Hipaa, read the file with X12Reader into TS276 objects and write them back with X12Writer. From Python, Java or C, use ediFabric Native, which converts 276 files to JSON and JSON back to X12 inside your process. From any other language, post the file to the ediFabric Cloud REST API.

Parse your first 276 in five minutes

The Community plan is free forever and needs no credit card. It includes ediFabric .NET, Native and Cloud.