Canonical Remittance Advice Implementation Guide and Specifications

Modified on Tue, May 26 at 9:37 AM

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

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article