From 7e03f60b9960daedecde2a16661dd9370e26d8e9 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 15:31:30 +0000 Subject: [PATCH] Document pay.Record and bill.Payment multi-method changes Generated-By: mintlify-agent --- addons/br-nfe-v4.mdx | 2 +- addons/es-facturae-v3.mdx | 21 +++++++++++++++++++ addons/gr-mydata-v1.mdx | 2 +- addons/it-sdi-v1.mdx | 2 +- addons/mx-cfdi-v4.mdx | 2 +- addons/pl-favat-v3.mdx | 2 +- docs.json | 2 +- draft-0/bill/payment.mdx | 8 ++++--- draft-0/bill/payment_details.mdx | 2 +- draft-0/pay/{advance.mdx => record.mdx} | 28 ++++++++++++++----------- 10 files changed, 49 insertions(+), 22 deletions(-) rename draft-0/pay/{advance.mdx => record.mdx} (59%) diff --git a/addons/br-nfe-v4.mdx b/addons/br-nfe-v4.mdx index dc5ee12..2abc26a 100644 --- a/addons/br-nfe-v4.mdx +++ b/addons/br-nfe-v4.mdx @@ -190,7 +190,7 @@ Indicates a special tax regime that a party is subject to. | ----- | ---- | ------------------------- | | `ext` | | `GOBL-BR-NFE-PAY-INSTRUCTIONS-01`
Payment instructions require 'br-nfe-payment-means' extension | - + | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | diff --git a/addons/es-facturae-v3.mdx b/addons/es-facturae-v3.mdx index cb94ed0..62358c4 100644 --- a/addons/es-facturae-v3.mdx +++ b/addons/es-facturae-v3.mdx @@ -127,6 +127,27 @@ options. See the [Extensions](#extensions) section for possible values. | `CR` | Copy of the Corrective | | `CC` | Copy of the Summary | +### FacturaE: Subsidy + +Indicates that an advance payment came from a public grant or subsidy. Set this extension on a payment [Record](/draft-0/pay/record)'s `ext` map (under `advances` in an invoice's [PaymentDetails](/draft-0/bill/payment_details), or as a `methods` entry on a [bill.Payment](/draft-0/bill/payment)) to flag subsidised advances when generating FacturaE output. + +```yaml +payment: + advances: + - key: credit-transfer + amount: "500.00" + ext: + es-facturae-subsidy: "S" +``` + + + +| Code | Name | +| ---- | ---- | +| `S` | Yes | +| `N` | No | + + ### FacturaE Change FacturaE requires a specific and single code that explains why the previous invoice is being corrected. diff --git a/addons/gr-mydata-v1.mdx b/addons/gr-mydata-v1.mdx index 3fcb1aa..c14ecbc 100644 --- a/addons/gr-mydata-v1.mdx +++ b/addons/gr-mydata-v1.mdx @@ -743,7 +743,7 @@ For example: | `key` | | `GOBL-GR-MYDATA-PAY-INSTRUCTIONS-01`
Payment instructions key is required | | `ext` | | `GOBL-GR-MYDATA-PAY-INSTRUCTIONS-02`
Payment instructions require 'gr-mydata-payment-means' extension |
- + | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | diff --git a/addons/it-sdi-v1.mdx b/addons/it-sdi-v1.mdx index aa9e408..02b452f 100644 --- a/addons/it-sdi-v1.mdx +++ b/addons/it-sdi-v1.mdx @@ -518,7 +518,7 @@ used to determine the correct schema to use when validating the document. | ----- | ---- | ------------------------- | | `ext` | | `GOBL-IT-SDI-PAY-INSTRUCTIONS-01`
Payment instructions require 'it-sdi-payment-means' extension |
- + | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | diff --git a/addons/mx-cfdi-v4.mdx b/addons/mx-cfdi-v4.mdx index 9fac0d0..6a94adf 100644 --- a/addons/mx-cfdi-v4.mdx +++ b/addons/mx-cfdi-v4.mdx @@ -291,7 +291,7 @@ Pattern: `\d{4}` | ----- | ---- | ------------------------- | | `ext` |
  • Ext require [mx-cfdi-payment-means]
| `GOBL-MX-CFDI-PAY-INSTRUCTIONS-01`
Payment instructions require 'mx-cfdi-payment-means' extension |
- + | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | diff --git a/addons/pl-favat-v3.mdx b/addons/pl-favat-v3.mdx index a35219c..dc79135 100644 --- a/addons/pl-favat-v3.mdx +++ b/addons/pl-favat-v3.mdx @@ -780,7 +780,7 @@ Example of a credit note effective on correction date: | ----- | ---- | ------------------------- | | `ext` |
  • Ext require [pl-favat-tax-category]
| `GOBL-PL-FAVAT-TAX-COMBO-01`
Tax combo requires 'pl-favat-tax-category' extension |
- + | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | diff --git a/docs.json b/docs.json index aa4b518..50488ec 100644 --- a/docs.json +++ b/docs.json @@ -273,13 +273,13 @@ { "group": "Pay", "pages": [ - "draft-0/pay/advance", "draft-0/pay/card", "draft-0/pay/credit_transfer", "draft-0/pay/direct_debit", "draft-0/pay/due_date", "draft-0/pay/instructions", "draft-0/pay/online", + "draft-0/pay/record", "draft-0/pay/terms" ] }, diff --git a/draft-0/bill/payment.mdx b/draft-0/bill/payment.mdx index 93cad3b..236a386 100644 --- a/draft-0/bill/payment.mdx +++ b/draft-0/bill/payment.mdx @@ -3,7 +3,7 @@ title: Payment comment: --- -A Payment is used to link an invoice or invoices with a payment transaction. +A Payment is used to link an invoice or invoices with a payment transaction. A single payment document may record multiple methods (for example, partly card and partly cash) — each method is a [pay.Record](/draft-0/pay/record) with its own amount and optional currency. The sum of method amounts, converted to the document currency via `exchange_rates` where needed, must equal the document `total`. ## Schema ID @@ -18,7 +18,6 @@ A Payment is used to link an invoice or invoices with a payment transaction. | Tags | `$tags` | array of [cbc.Key](/draft-0/cbc/key) | Tags are used to help identify specific tax scenarios or requirements that may apply changes to the contents of the document or imply a specific meaning. Converters may use tags to help identify specific situations that do not have a specific extension, for example; self-billed or partial invoices may be identified by their respective tags. | | UUID | `uuid` | string | Universally Unique Identifier. | | Type | `type` | [cbc.Key](/draft-0/cbc/key) | Type of payment document being issued. | -| Method | `method` | [pay.Instructions](/draft-0/pay/instructions) | Details on how the payment was made based on the original instructions. | | Series | `series` | [cbc.Code](/draft-0/cbc/code) | Series is used to identify groups of payments by date, business area, project, type, customer, a combination of any, or other company specific data. If the output format does not support the series as a separate field, it will be prepended to the code for presentation with a dash (`-`) for separation. | | Code | `code` | [cbc.Code](/draft-0/cbc/code) | Code is a sequential identifier that uniquely identifies the payment. The code can be left empty initially, but is **required** to **sign** the document. | | Issue Date | `issue_date` | [cal.Date](/draft-0/cal/date) | When the payment was issued. | @@ -32,6 +31,7 @@ A Payment is used to link an invoice or invoices with a payment transaction. | Customer | `customer` | [org.Party](/draft-0/org/party) | Legal entity that receives the goods or services. | | Payee | `payee` | [org.Party](/draft-0/org/party) | Legal entity that receives the payment if not the supplier. | | Lines | `lines` | array of [bill.PaymentLine](/draft-0/bill/payment_line) | List of documents that are being paid for. | +| Methods | `methods` | array of [pay.Record](/draft-0/pay/record) | Methods describes how the payment was settled. At least one method is required; multiple may be present when the payment was split across means (for example, partly card + partly cash). | | Ordering | `ordering` | [bill.Ordering](/draft-0/bill/ordering) | Ordering allows for additional information about the ordering process including references to other documents and alternative parties involved in the order-to-delivery process. | | Total | `total` | [num.Amount](/draft-0/num/amount) | Total amount to be paid in this payment, either positive or negative according to the line types and totals. Calculated automatically. | | Notes | `notes` | array of [org.Note](/draft-0/org/note) | Unstructured information that is relevant to the payment, such as correction or additional legal details. | @@ -53,8 +53,10 @@ A Payment is used to link an invoice or invoices with a payment transaction. | ----- | ---- | ------------------------- | | `type`
Calculated |
  • Present
| `GOBL-BILL-PAYMENT-01`
Payment type is required | | `type`
Calculated |
  • One of [request, advice, receipt]
| `GOBL-BILL-PAYMENT-02`
Payment type is not valid | -| `method` |
  • Present
| `GOBL-BILL-PAYMENT-03`
Payment method is required | +| `methods` |
  • Present
| `GOBL-BILL-PAYMENT-03`
At least one payment method is required | | `issue_date`
Calculated |
  • Present
| `GOBL-BILL-PAYMENT-04`
Payment issue date is required | | `currency`
Calculated |
  • Present
| `GOBL-BILL-PAYMENT-05`
Payment currency is required | | `supplier` |
  • Present
| `GOBL-BILL-PAYMENT-06`
Payment supplier is required | | `lines` |
  • Present
| `GOBL-BILL-PAYMENT-07`
Payment lines are required | +| Payment |
  • Methods sum equals total
| `GOBL-BILL-PAYMENT-08`
Methods sum must match total | +| `methods[*].key` |
  • Present
| `GOBL-BILL-PAYMENT-09`
Payment method key is required | diff --git a/draft-0/bill/payment_details.mdx b/draft-0/bill/payment_details.mdx index b05673b..4a31e8f 100644 --- a/draft-0/bill/payment_details.mdx +++ b/draft-0/bill/payment_details.mdx @@ -15,6 +15,6 @@ PaymentDetails contains details as to how the invoice should be paid. |-------|----------|------|-------------| | Payee | `payee` | [org.Party](/draft-0/org/party) | The party responsible for receiving payment of the invoice, if not the supplier. | | Terms | `terms` | [pay.Terms](/draft-0/pay/terms) | Payment terms or conditions. | -| Advances | `advances` | array of [pay.Advance](/draft-0/pay/advance) | Any amounts that have been paid in advance and should be deducted from the amount due. | +| Advances | `advances` | array of [pay.Record](/draft-0/pay/record) | Any amounts that have been paid in advance and should be deducted from the amount due. | | Instructions | `instructions` | [pay.Instructions](/draft-0/pay/instructions) | Details on how payment should be made. | diff --git a/draft-0/pay/advance.mdx b/draft-0/pay/record.mdx similarity index 59% rename from draft-0/pay/advance.mdx rename to draft-0/pay/record.mdx index 407c3f8..94ec2e5 100644 --- a/draft-0/pay/advance.mdx +++ b/draft-0/pay/record.mdx @@ -1,29 +1,32 @@ --- -title: Advance +title: Record comment: --- -Advance represents a single payment that has been made already, such as a deposit on an intent to purchase, or as credit from a previous invoice which was later corrected or cancelled. +Record represents an individual payment transaction made via a specific means (cash, card, credit-transfer, etc.), with its own amount and optional currency. Records are nested inside other structures: as advances on an invoice's [PaymentDetails](/draft-0/bill/payment_details), or as the methods used to settle a [bill.Payment](/draft-0/bill/payment). + +A single document may contain multiple records when a payment is split across means (for example, partly card and partly cash) or when several advances were collected before issuing the final invoice. ## Schema ID -`https://gobl.org/draft-0/pay/advance` +`https://gobl.org/draft-0/pay/record` ## Properties | Title | Property | Type | Description | |-------|----------|------|-------------| | UUID | `uuid` | string | Universally Unique Identifier. | -| Date | `date` | [cal.Date](/draft-0/cal/date) | When the advance was made. | -| Key | `key` | [cbc.Key](/draft-0/cbc/key) | The payment means used to make the advance. | -| Reference | `ref` | string | ID or reference for the advance. | -| Grant | `grant` | boolean | If this "advance" payment has come from a public grant or subsidy, set this to true. | -| Description | `description` | string | Details about the advance. | -| Percent | `percent` | [num.Percentage](/draft-0/num/percentage) | Percentage of the total amount payable that was paid. Note that multiple advances with percentages may lead to rounding errors, especially when the total advances sums to 100%. We recommend only including one advance with a percent value per document. | +| Date | `date` | [cal.Date](/draft-0/cal/date) | When the payment was made. | +| Key | `key` | [cbc.Key](/draft-0/cbc/key) | The payment means used. | +| Reference | `ref` | string | ID or reference for the payment. | +| Description | `description` | string | Description about the payment. | +| Percent | `percent` | [num.Percentage](/draft-0/num/percentage) | Percentage of the total amount payable that was paid. Note that multiple records with percentages may lead to rounding errors, especially when the total sums to 100%. We recommend only including one record with a percent value per document. | | Amount | `amount` | [num.Amount](/draft-0/num/amount) | How much was paid. | | Currency | `currency` | [currency.Code](/draft-0/currency/code) | If different from the parent document's base currency. | | Card | `card` | [pay.Card](/draft-0/pay/card) | Details of the payment that was made via a credit or debit card. | | Credit Transfer | `credit_transfer` | [pay.CreditTransfer](/draft-0/pay/credit_transfer) | Details about how the payment was made by credit (bank) transfer. | +| Direct Debit | `direct_debit` | [pay.DirectDebit](/draft-0/pay/direct_debit) | Details of the payment that was made via direct debit. | +| Online | `online` | array of [pay.Online](/draft-0/pay/online) | Details of the payment that was made via an online provider. | | Extensions | `ext` | [tax.Extensions](/draft-0/tax/extensions) | Tax extensions required by tax regimes or addons. | | Meta | `meta` | [cbc.Meta](/draft-0/cbc/meta) | Additional details useful for the parties involved. | @@ -32,7 +35,9 @@ Advance represents a single payment that has been made already, such as a deposi | Value | Description | |-------|-------------| | `any` | Any method available, no preference. | -| `card` | Payment card. | +| `card` | Payment by card. | +| `card+credit` | Payment by credit card. | +| `card+debit` | Payment by debit card. | | `credit-transfer` | Sender initiated bank or wire transfer. | | `credit-transfer+sepa` | Sender initiated bank or wire transfer via SEPA. | | `debit-transfer` | Receiver initiated bank or wire transfer. | @@ -51,5 +56,4 @@ Advance represents a single payment that has been made already, such as a deposi | Field | Test | Validation Code / Message | | ----- | ---- | ------------------------- | -| `description` |
  • Present
| `GOBL-PAY-ADVANCE-01`
Description is required | -| `key` |
  • Be or starts with one of [any, card, credit-transfer, credit-transfer+sepa, debit-transfer, cash, cheque, bank-draft, direct-debit, direct-debit+sepa, online, promissory-note, netting, other]
| `GOBL-PAY-ADVANCE-02`
Key must be valid | +| `key` |
  • Be or starts with one of [any, card, credit-transfer, credit-transfer+sepa, debit-transfer, cash, cheque, bank-draft, direct-debit, direct-debit+sepa, online, promissory-note, netting, other]
| `GOBL-PAY-RECORD-01`
Key must be valid |