ECGrid Simplify
Canonical Remittance Advice Format Specification
Version: 1.0 Date: May 26, 2026 Owner: ECGrid Product
1. Purpose
This document defines the canonical Remittance Advice format used by ECGrid Simplify. It is the single source of truth for remittance advice structure, field definitions, data types, length limits, required fields, and serialization rules across XML and JSON.
The Remittance Advice (RA) document informs vendors of payments made, provides detailed breakdowns of invoice adjustments, deductions, and other payment modifications, and serves as proof of payment. Both XML and JSON representations convey the same logical remittance data. A JSON Schema (Simplify_Remittance_Advice.schema.json) provides machine-enforceable validation. This document is the human-readable companion.
2. Scope
In scope:
- Remittance advice document structure (header, payment details, and line items).
- Field-level definitions, data types, length limits, and validation rules.
- Canonical XML and JSON representations.
- Payment method information (check, ACH/EFT, wire transfer).
- Invoice-level payment details and adjustment tracking.
- Payer and payee party identification and contact details.
Out of scope:
- Transport (HTTPS, AS2, SFTP). Covered in ECGrid Simplify API docs.
- Functional acknowledgments and application responses.
- Accounting ledger posting and reconciliation logic.
- Bank-specific payment processing and clearing rules.
3. Document Structure
A Remittance Advice payload contains a single remittance notice. Each notice has a header section with payment metadata, payer/payee information, currency and date details, followed by one or more detail lines representing invoices or credit memos being paid.
- Top-level shape:
remittanceAdviceMessage
└── remittanceAdvice (required, exactly one)
├── header (required information)
│ ├── tradingPartnerId
│ ├── documentId
│ ├── paymentAmount
│ ├── paymentMethodCode
│ ├── paymentEffectiveDate
│ └── transactionHandlingCode
├── payee (party receiving payment)
├── payer (party making payment)
├── currency & dateInformation
└── detail[] (1..n invoice line items)
4. Header Fields
The header section contains remittance advice metadata and payment information.
Field | Type | Length | Req | Description | Example |
tradingPartnerId | string | 1–35 | Yes | ECGrid trading partner identifier. Routes the document. | SEV2TEST01 |
documentId | string | 1–35 | Yes | Unique identifier for this remittance advice document. | RA-2026-05-001 |
userId | string | 1–35 | No | User ID of the person creating the remittance advice. | USER789 |
sender | string | 2–17 | Yes | Sender ID (buyer/payer) in the qualifier namespace. | SEV2TEST02 |
senderQualifier | string | 1–4 | Yes | Qualifier for sender ID (e.g. SE, ZZ, 01, 14). | SE |
receiver | string | 2–17 | Yes | Receiver ID (vendor/payee) in the qualifier namespace. | SEV2TEST01 |
receiverQualifier | string | 1–4 | Yes | Qualifier for receiver ID. | SE |
groupSender | string | 1–9 | No | EDI functional group sender ID. | 1 |
groupReceiver | string | 1–9 | No | EDI functional group receiver ID. | 1 |
creationDateTime | string | 14–17 | Yes | Date/time remittance advice was created. YYYYMMDDHHMMSS. | 20260526143001 |
transactionHandlingCode | string | 1–3 | Yes | Handling code (e.g., 00=Original, 01=Replace, 04=Void). | 00 |
paymentAmount | number | 1–17 | Yes | Total payment amount. Up to 17 digits incl. decimals. | 5250.75 |
creditDebitCode | string | 1 | No | Credit (C) or Debit (D) code indicating payment direction. | C |
paymentMethodCode | string | 1–3 | Yes | Payment method (e.g., 01=Check, 02=ACH/EFT, 03=Wire, 04=Card). | 01 |
paymentFormatCode | string | 1–3 | No | Payment format code (e.g., EDI standard, proprietary). | EDI |
checkNumber | string | 1–20 | No | Check number (if paymentMethodCode = 01). | CHK-987654 |
electronicFundsTransferNumber | string | 1–35 | No | EFT/ACH transaction number (if paymentMethodCode = 02). | EFT-2026-05-001 |
dfiQualifier | string | 1–2 | No | DFI Qualifier for bank routing (e.g., 01=Routing Number, 02=SWIFT). | 01 |
dfiNumber | string | 1–12 | No | Depository Financial Institution number (e.g., bank routing number). | 021000021 |
accountNumber | string | 1–35 | No | Payment account number (partially masked for security). | ****3456 |
paymentEffectiveDate | string | 8 | Yes | Date payment is effective or cleared. YYYYMMDD. | 20260526 |
batchNumber | string | 1–20 | No | Batch number for grouping multiple remittances. | BATCH-001 |
vendorID | string | 1–35 | No | Vendor/supplier identifier. | VEND12345 |
5. Currency and Date Information
Field | Type | Length | Req | Description | Example |
currency.currencyId | string | 1–2 | Yes | Currency qualifier. Typically matches senderQualifier. | SE |
currency.currency | string | 3 | Yes | ISO 4217 currency code. 3 chars exact. | USD |
currency.currencyExchangeRate | number | 1–10 | No | Exchange rate if applicable (for multi-currency processing). | 1.00 |
dateInformation.transactionCreation.dateCode | string | 1–3 | No | Date code qualifier (e.g., 007=Effective Date). | 007 |
dateInformation.transactionCreation.date | string | 8 | No | Transaction creation date. YYYYMMDD. | 20260526 |
dateInformation.transactionCreation.time | string | 0 or 4 | No | Transaction creation time. HHMM (24-hour) or empty. | 1430 |
dateInformation.check.dateCode | string | 1–3 | No | Date code for check date (if applicable). | 007 |
dateInformation.check.date | string | 8 | No | Check date. YYYYMMDD. | 20260526 |
dateInformation.check.time | string | 0 or 4 | No | Check time or empty. |
|
6. Party Information Blocks
Payee (vendor receiving payment) and Payer (buyer making payment). Each contains address and contact details.
Field | Type | Length | Req | Description | Example |
partyIdentification | string | 1–80 | Yes | Party identifier value (DUNS, GLN, internal code, etc.). | 12345 |
partyIdentificationTypeCode | string | 1–5 | Yes | Qualifier for the identifier (e.g. 92=internal, 1=DUNS, UL=GLN). | 92 |
name | string | 1–60 | Yes | Legal name of the party. | Widget Supplier Inc |
name2 | string | 1–60 | No | Secondary name line. | Accounts Payable |
name3 | string | 1–60 | No | Tertiary name line. |
|
streetAddress1 | string | 1–55 | Yes | Street address line 1. | 456 Oak Ave |
streetAddress2 | string | 1–55 | No | Street address line 2. | Suite 200 |
streetAddress3 | string | 1–55 | No | Street address line 3. |
|
city | string | 2–30 | Yes | City. | Springfield |
cityCode | string | 1–10 | No | City code if applicable. |
|
stateCode | string | 2 | No | State or province code. 2 chars for US/CA. | IL |
postalCode | string | 3–15 | Yes | Postal/ZIP code. | 62701 |
countryCode | string | 2 | Yes | ISO 3166-1 alpha-2 country code. 2 chars exact. | US |
vatNumber | string | 1–20 | No | VAT/Tax ID number for the party. |
|
dockNumber | string | 1–10 | No | Dock number (for payee receiving locations). |
|
storeNumber | string | 1–10 | No | Store number or location code. | STORE-001 |
7. Detail Line Item
The detail array contains one or more line items representing invoices or credit memos being paid, including amounts, adjustments, and references.
Field | Type | Length | Req | Description | Example |
assignedNumber | integer | 1–6 | Yes | Sequential line number within the detail section. | 1 |
invoiceNumber | string | 1–22 | Yes | Vendor's invoice number being paid or adjusted. | INV-2026-05-001 |
invoiceDate | string | 8 | Yes | Date of the original invoice. YYYYMMDD. | 20260515 |
poNumber | string | 1–22 | No | Associated purchase order number. | 123456 |
paymentAmount | number | 1–17 | Yes | Amount being paid for this invoice. Up to 17 digits. | 1500.00 |
netInvoiceAmount | number | 1–17 | No | Net invoice amount before adjustments. | 1600.00 |
grossInvoiceAmount | number | 1–17 | No | Gross invoice amount including tax. | 1760.00 |
discountedAmount | number | 1–17 | No | Total discount taken (early payment, volume, etc.). | 100.00 |
departmentNumber | string | 1–10 | No | Department number associated with invoice. | DEPT-001 |
storeNumber | string | 1–10 | No | Store number for retail transactions. | STORE-002 |
carrierRefNumber | string | 1–35 | No | Carrier or shipping reference number. | BOL-2026-0001 |
freightBillNumber | string | 1–35 | No | Freight bill or shipping invoice number. | FREIGHT-001 |
returnGoodsNumber | string | 1–35 | No | Return goods authorization (RGA) number if applicable. | RGA-2026-001 |
8. Adjustment Information
Adjustments represent deductions, credits, or other modifications to invoice amounts (e.g., damaged goods, early payment discounts, freight allowances).
Field | Type | Length | Req | Description | Example |
adjustment.amount | number | 1–17 | Yes | Adjustment amount (positive or negative). | 50.00 |
adjustment.reasonCode | string | 1–3 | Yes | Reason code (e.g., 01=Damage, 02=Early Payment, 03=Freight, 04=Return). | 02 |
adjustment.adjustmentMemo | string | 1–80 | No | Short memo or reason description. | Early Payment Discount 2% |
adjustment.description | string | 1–255 | No | Detailed description of the adjustment. | Deduction for 2 units damaged in shipment |
adjustment.departmentNumber | string | 1–10 | No | Department associated with adjustment. | DEPT-001 |
adjustment.poNumber | string | 1–22 | No | PO number associated with adjustment. | 123456 |
adjustment.storeNumber | string | 1–10 | No | Store number associated with adjustment. | STORE-001 |
adjustment.baseItem.lineItemNumber | integer | 1–6 | No | Line item number on original invoice being adjusted. | 3 |
adjustment.baseItem.invoicedQty | number | 1–15 | No | Quantity invoiced for the line. | 100.0 |
adjustment.baseItem.qtyUOM | string | 2–3 | No | Unit of measure (e.g. EA, CS, LB). | EA |
adjustment.baseItem.unitPriceNet | number | 1–17 | No | Net unit price for the line. | 15.00 |
adjustment.baseItem.priceUOM | string | 2–3 | No | Unit of measure for pricing. | EA |
9. Naming Conventions
- XML: PascalCase for all element names (e.g. RemittanceAdvice, PaymentAmount, InvoiceNumber).
- JSON: camelCase for all field names (e.g. remittanceAdvice, paymentAmount, invoiceNumber).
- Field semantics and length limits are identical across both. Only casing differs.
- Empty optional values in XML use self-closing tags (e.g. <CheckNumber/>). In JSON, use empty string for string fields or null for objects.
10. XML Example
<RemittanceAdviceMessage>
<RemittanceAdvice>
<TradingPartnerId>SEV2TEST01</TradingPartnerId>
<DocumentId>RA-2026-05-001</DocumentId>
<SenderQualifier>SE</SenderQualifier>
<Sender>SEV2TEST02</Sender>
<ReceiverQualifier>SE</ReceiverQualifier>
<Receiver>SEV2TEST01</Receiver>
<CreationDateTime>20260526143001</CreationDateTime>
<TransactionHandlingCode>00</TransactionHandlingCode>
<PaymentAmount>5250.75</PaymentAmount>
<CreditDebitCode>C</CreditDebitCode>
<PaymentMethodCode>01</PaymentMethodCode>
<CheckNumber>CHK-987654</CheckNumber>
<PaymentEffectiveDate>20260526</PaymentEffectiveDate>
<VendorID>VEND12345</VendorID>
<Currency>
<CurrencyId>SE</CurrencyId>
<Currency>USD</Currency>
</Currency>
<DateInformation>
<TransactionCreation>
<DateCode>007</DateCode>
<Date>20260526</Date>
<Time>1430</Time>
</TransactionCreation>
</DateInformation>
<Payee>
<PartyIdentification>12345</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Widget Supplier Inc</Name>
<StreetAddress1>456 Oak Ave</StreetAddress1>
<City>Springfield</City>
<StateCode>IL</StateCode>
<PostalCode>62701</PostalCode>
<CountryCode>US</CountryCode>
</Payee>
<Payer>
<PartyIdentification>54321</PartyIdentification>
<PartyIdentificationTypeCode>92</PartyIdentificationTypeCode>
<Name>Acme Corp</Name>
<StreetAddress1>123 Main St</StreetAddress1>
<City>Albany</City>
<StateCode>NY</StateCode>
<PostalCode>12207</PostalCode>
<CountryCode>US</CountryCode>
</Payer>
<Detail>
<AssignedNumber>1</AssignedNumber>
<InvoiceNumber>INV-2026-05-001</InvoiceNumber>
<InvoiceDate>20260515</InvoiceDate>
<PONumber>123456</PONumber>
<PaymentAmount>3500.00</PaymentAmount>
<NetInvoiceAmount>3600.00</NetInvoiceAmount>
<GrossInvoiceAmount>3960.00</GrossInvoiceAmount>
<DiscountedAmount>100.00</DiscountedAmount>
<DepartmentNumber>DEPT-001</DepartmentNumber>
<Adjustment>
<Amount>100.00</Amount>
<ReasonCode>02</ReasonCode>
<AdjustmentMemo>Early Payment Discount 2%</AdjustmentMemo>
<Description>2% discount for payment within 10 days</Description>
</Adjustment>
<DateInformation>
<TransactionCreation>
<Date>20260526</Date>
</TransactionCreation>
</DateInformation>
</Detail>
<Detail>
<AssignedNumber>2</AssignedNumber>
<InvoiceNumber>INV-2026-05-002</InvoiceNumber>
<InvoiceDate>20260520</InvoiceDate>
<PONumber>123457</PONumber>
<PaymentAmount>1750.75</PaymentAmount>
<NetInvoiceAmount>1750.75</NetInvoiceAmount>
<GrossInvoiceAmount>1925.83</GrossInvoiceAmount>
<DateInformation>
<TransactionCreation>
<Date>20260526</Date>
</TransactionCreation>
</DateInformation>
</Detail>
</RemittanceAdvice>
</RemittanceAdviceMessage>
11. JSON Example
{
"remittanceAdviceMessage": {
"remittanceAdvice": {
"tradingPartnerId": "SEV2TEST01",
"documentId": "RA-2026-05-001",
"senderQualifier": "SE",
"sender": "SEV2TEST02",
"receiverQualifier": "SE",
"receiver": "SEV2TEST01",
"creationDateTime": "20260526143001",
"transactionHandlingCode": "00",
"paymentAmount": 5250.75,
"creditDebitCode": "C",
"paymentMethodCode": "01",
"checkNumber": "CHK-987654",
"paymentEffectiveDate": "20260526",
"vendorID": "VEND12345",
"currency": {
"currencyId": "SE",
"currency": "USD"
},
"dateInformation": {
"transactionCreation": {
"dateCode": "007",
"date": "20260526",
"time": "1430"
}
},
"payee": {
"partyIdentification": "12345",
"partyIdentificationTypeCode": "92",
"name": "Widget Supplier Inc",
"streetAddress1": "456 Oak Ave",
"city": "Springfield",
"stateCode": "IL",
"postalCode": "62701",
"countryCode": "US"
},
"payer": {
"partyIdentification": "54321",
"partyIdentificationTypeCode": "92",
"name": "Acme Corp",
"streetAddress1": "123 Main St",
"city": "Albany",
"stateCode": "NY",
"postalCode": "12207",
"countryCode": "US"
},
"detail": [
{
"assignedNumber": 1,
"invoiceNumber": "INV-2026-05-001",
"invoiceDate": "20260515",
"poNumber": "123456",
"paymentAmount": 3500.00,
"netInvoiceAmount": 3600.00,
"grossInvoiceAmount": 3960.00,
"discountedAmount": 100.00,
"departmentNumber": "DEPT-001",
"adjustment": {
"amount": 100.00,
"reasonCode": "02",
"adjustmentMemo": "Early Payment Discount 2%",
"description": "2% discount for payment within 10 days"
},
"dateInformation": {
"transactionCreation": {
"date": "20260526"
}
}
},
{
"assignedNumber": 2,
"invoiceNumber": "INV-2026-05-002",
"invoiceDate": "20260520",
"poNumber": "123457",
"paymentAmount": 1750.75,
"netInvoiceAmount": 1750.75,
"grossInvoiceAmount": 1925.83,
"dateInformation": {
"transactionCreation": {
"date": "20260526"
}
}
}
]
}
}
}
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article