Skip to main content

xInvoice Delivery Date

EN16931 field BT-72 (Actual delivery date) carries the date on which the goods were delivered or the service was rendered. mseDoc365 fills it from the posted document — in both syntaxes and for both document types:

SyntaxElement
CII (XRechnung)ApplicableHeaderTradeDelivery/ActualDeliverySupplyChainEvent/OccurrenceDateTime/DateTimeString
UBL (XRechnung-UBL / Peppol)Delivery/ActualDeliveryDate

Which BC date is used

The date is resolved once per document, in this order:

  1. Shipment Date of the posted sales invoice / credit memo, when it is filled.
  2. Posting Date of the same document, when no Shipment Date is set.

This is the "Liefer- oder Buchungsdatum" behaviour German invoice recipients expect: a document posted without a shipment date still carries a delivery date instead of omitting BT-72 altogether.

If the document has neither date, BT-72 stays empty and the surrounding delivery block is left out of the XML — unchanged from earlier versions.

Where to override it

The resolved value is written to the field Delivery or Posting Date on the mseDoc365 sales invoice buffer, and the XML schema line for BT-72 reads that field. Two consequences:

  • A customer extension can override the delivery date in its OnAfterCreateBuffer subscriber by writing that buffer field — no schema editing needed.
  • Repointing the schema line itself (mseDoc365 XML Schema → Lines → Source Table No. / Source Field No.) still works. Set the line's Locked flag so the mapping survives Update schema from standard.

Upgrading from an earlier version

The mapping lives in schema data, not in code. Existing installations keep their current BT-72 mapping until the schema is refreshed:

  • New installations get the new mapping immediately.
  • Existing installations pick it up by running Update schema from standard on the XRECHNUNG-OUT and XRECHNUNG-UBL-OUT schemas. Unlocked lines are rebuilt; locked lines keep the customer's own mapping.

Note for credit memos: before this change the CII syntax used the Posting Date while UBL used the Shipment Date. Both now follow the same Shipment-Date-then-Posting-Date rule.