Document types and type codes
Every invoicing format uses type codes to identify what kind of document is being sent. Maventa processes these codes during import and export, and automatically converts between format-specific codes when converting documents from one format to another.
This page covers the most commonly used formats. Maventa supports additional formats beyond those listed here.
How document types work
Each format has its own way of indicating the document type:
-
UBL-based formats (Peppol BIS, EHF, OIOUBL, SI-UBL) use the XML root element to determine the document type. An
<Invoice>element means it is an invoice, a<CreditNote>element means it is a credit note. TheInvoiceTypeCodefield provides additional detail (the subtype) but does not change the document type. -
Finvoice uses the
InvoiceTypeCodeelement (INV01, INV02, etc.) to determine both the document type and subtype. Codes not in the supported list are rejected. -
TEAPPS uses the
INVOICE_TYPEfield with numeric codes. Codes not in the supported list are rejected.
Finvoice
Finvoice 1.3 supports invoice and credit note. Versions 2.0 and later add direct payment and cancel.
| Type code | Name | Document type | Version |
|---|---|---|---|
| INV01 | Commercial Invoice | invoice | 1.3+ |
| INV02 | Credit Note | credit_note | 1.3+ |
| INV02 + OriginCode=Cancel | Cancellation Invoice | cancel | 2.0+ |
| INV03 | Interest Note | invoice | 1.3+ |
| INV04 | Internal Invoice | invoice | 1.3+ |
| INV05 | Collect Note | invoice | 1.3+ |
| INV08 | Reminder Invoice | invoice | 1.3+ |
| INV09 | Direct Payment | direct_payment | 2.0+ |
The Finvoice specification defines additional codes (INV06 Pro Forma Invoice, INV07 Self Billing, and various non-invoice codes like ORD01, TES01, PRI01) that Maventa does not support. Documents with these codes are identified as Finvoice but cannot be processed.
Default export codes: INV01 for invoices, INV02 for credit notes and cancellations, INV09 for direct payments.
Secure invoices (SEI codes)
Each INV code has a corresponding SEI (Secure E-Invoice) counterpart. Secure invoices are processed as the same document type as their INV equivalent, with an additional security classification flag.
| INV code | SEI equivalent | Document type |
|---|---|---|
| INV01 (Commercial Invoice) | SEI01 | invoice |
| INV02 (Credit Note) | SEI02 | credit_note |
| INV03 (Interest Note) | SEI03 | invoice |
| INV04 (Internal Invoice) | SEI04 | invoice |
| INV05 (Collect Note) | SEI05 | invoice |
| INV08 (Reminder Invoice) | SEI08 | invoice |
| INV09 (Direct Payment) | SEI09 | direct_payment |
SEI06 and SEI07 are defined in the Finvoice specification but are not supported, matching the fact that INV06 and INV07 are also not supported.
The security classification is preserved during conversion between Finvoice and TEAPPS. When converting to any other format, the security classification is lost and the document is treated as a standard invoice or credit note. See Secure invoice conversion behavior for details.
TEAPPS
TEAPPS 2.7.2 supports invoice and credit note. Version 3.0 adds direct payment and cancel.
| Type code | Name | Document type | Version |
|---|---|---|---|
| 00 | Commercial Invoice | invoice | 2.7.2+ |
| 00 (method_of_charge=01) | Direct Payment Invoice | direct_payment | 3.0 |
| 01 | Credit Note | credit_note | 2.7.2+ |
| 01 (method_of_charge=01) | Cancellation Invoice | cancel | 3.0 |
| 02 | Collecting Invoice | invoice | 2.7.2+ |
| 03 | Transit Invoice | invoice | 2.7.2+ |
| 04 | Credit Invoice | credit_note | 2.7.2+ |
| 05 | Credit of Transit Invoice | credit_note | 2.7.2+ |
| 06 | Interest Invoice | invoice | 2.7.2+ |
| 07 | Credit of Interest Invoice | credit_note | 2.7.2+ |
| 08 | Advance Notice | invoice | 2.7.2+ |
| 08 (method_of_charge=01) | Direct Payment Advance Notice | direct_payment | 3.0 |
| 09 | Reminder Invoice | invoice | 2.7.2+ |
| 20 | Vehicle Invoice | invoice | 2.7.2+ |
| 60 | Purchase Credit Note | credit_note | 2.7.2+ |
| 91 | Travel Invoice | invoice | 2.7.2+ |
| 99 | Test Invoice | invoice | 2.7.2+ |
Codes 30 (Debit Receipt), 31 (Credit Receipt), 32 (Warranty Receipt), 50 (Order), 51 (Order Confirmation), and 90 (Travel Plan) are defined in the TEAPPS specification but are not supported by Maventa.
Default export codes: 00 for invoices, 01 for credit notes.
TEAPPS does not have dedicated security invoice type codes. Instead, TEAPPS 3.0 carries security classification in a separate SECURITY_DETAILS element with a SECRECY_CLASS code and an optional SECRECY_DESCRIPTION. When a Finvoice secure invoice (SEI code) is converted to TEAPPS, the invoice type code is mapped to the standard TEAPPS equivalent and the SEI code is stored in SECRECY_CLASS. See Secure invoice conversion behavior for details.
Peppol BIS 3.0
Peppol BIS 3.0 uses UNCL 1001 invoice type codes. The table below lists the most commonly used codes. The full code list is defined in the Peppol BIS 3.0 specification and evolves over time — some codes may have country-specific restrictions or conditions.
| Type code | Name | Document type |
|---|---|---|
| 380 | Commercial Invoice | invoice |
| 381 | Credit Note | credit_note |
| 383 | Debit Note | invoice |
| 384 | Corrected Invoice | invoice |
| 386 | Prepayment Invoice | invoice |
| 389 | Self-Billed Invoice | self_billing_invoice |
| 261 | Self-Billed Credit Note | self_billing_credit_note |
| 326 | Partial Invoice | invoice |
| 393 | Factored Invoice | invoice |
| 396 | Factored Credit Note | credit_note |
Default export codes: 380 for invoices, 381 for credit notes.
OIOUBL (Danish)
Both versions 2.02 and 2.1 support the same types.
| Type code | Name | Document type |
|---|---|---|
| 325 | Proforma Invoice | invoice |
| 380 | Commercial Invoice | invoice |
| 381 | Credit Note | credit_note |
| 393 | Factored Invoice | invoice |
Also supports application_response as a separate document type.
Default export codes: 380 for invoices, 381 for credit notes.
SI-UBL 2.0 (Dutch)
| Type code | Name | Document type |
|---|---|---|
| 380 | Commercial Invoice | invoice |
| 381 | Credit Note | credit_note |
| 384 | Corrected Invoice | invoice |
| 389 | Self-Billed Invoice | invoice |
Subtype preservation during format conversion
When Maventa converts a document from one format to another, the document type (invoice, credit note) is always preserved. However, the specific subtype (such as Reminder Invoice or Interest Note) is only preserved if the target format recognizes the same subtype. If the target format does not have a matching subtype, the type code falls back to the default for that document type.
A type code is a label that identifies the kind of document. The actual data that makes a document special (for example, factoring party details on a factored invoice, or overdue payment calculations on an interest invoice) is carried in the document content and is converted independently of the type code. Even when a type code falls back to a generic value, the relevant content fields are still mapped to the target format if that format supports them. See Content-level feature support for details on which features each format can carry in its payload.
Default fallback codes
| Target format | Invoice default | Credit note default |
|---|---|---|
| Peppol BIS 3.0 | 380 (Commercial Invoice) | 381 (Credit Note) |
| Finvoice | INV01 (Commercial Invoice) | INV02 (Credit Note) |
| TEAPPS | 00 (Commercial Invoice) | 01 (Credit Note) |
| OIOUBL | 380 | 381 |
| SI-UBL | 380 | 381 |
Cross-format subtype compatibility
The following table shows which subtypes are shared between format families. A subtype is preserved during conversion only if both the source and target format define it.
The “Content” column indicates whether the document content associated with that subtype (such as factoring details or overdue payment data) can be carried in the target format’s payload, even when the type code itself falls back to a generic value.
| Subtype | Finvoice | TEAPPS | Peppol BIS 3.0 | OIOUBL | SI-UBL 2.0 | Content carried by |
|---|---|---|---|---|---|---|
| Commercial Invoice | INV01 | 00 | 380 | 380 | 380 | All formats |
| Credit Note | INV02 | 01 | 381 | 381 | 381 | All formats |
| Interest Invoice | INV03 | 06 | — | — | — | Row-level details: Finvoice, TEAPPS. Header rate: most formats |
| Internal Invoice | INV04 | — | — | — | — | No specific content |
| Collect Note | INV05 | 02 | — | — | — | No specific content beyond overdue payment details |
| Reminder Invoice | INV08 | 09 | — | — | — | Penalty interest: UBL formats, Finvoice, TEAPPS |
| Direct Payment | INV09 | 00/08 | — | — | — | Finvoice, TEAPPS only |
| Corrected Invoice | — | — | 384 | — | 384 | No specific content |
| Prepayment Invoice | — | — | 386 | — | — | Prepaid amount: UBL formats, Finvoice, TEAPPS |
| Self-Billed Invoice | — | — | 389 | — | 389 | Party reversal: Peppol BIS 3.0 only |
| Factored Invoice | — | — | 393 | 393 | — | Payee/factoring data: most formats |
| Partial Invoice | — | — | 326 | — | — | No specific content |
A dash (—) in the type code columns means the format does not have a dedicated type code for that subtype. When converting to a format that shows a dash, the type code falls back to the default (Commercial Invoice or Credit Note). However, the document content may still be converted if the target format supports the relevant payload fields.
Conversion examples
| Source format | Source code | Target format | Result code | What happens |
|---|---|---|---|---|
| Finvoice INV01 | Commercial Invoice | Peppol BIS 3.0 | 380 | Preserved |
| Finvoice INV02 | Credit Note | Peppol BIS 3.0 | 381 | Preserved |
| Finvoice INV03 | Interest Note | Peppol BIS 3.0 | 380 | Type code falls back to Commercial Invoice. Header-level penalty interest rate is carried in PaymentTerms. Row-level overdue payment details are lost. |
| Finvoice INV05 | Collect Note | Peppol BIS 3.0 | 380 | Type code falls back to Commercial Invoice. Overdue payment details on rows are lost. |
| Finvoice INV08 | Reminder Invoice | Peppol BIS 3.0 | 380 | Type code falls back to Commercial Invoice. Penalty interest data is carried in PaymentTerms. |
| Finvoice INV03 | Interest Note | TEAPPS | 06 | Preserved. Row-level overdue payment details are also preserved. |
| Finvoice INV08 | Reminder Invoice | TEAPPS | 09 | Preserved |
| OIOUBL 393 | Factored Invoice | Finvoice | INV01 | Type code falls back to Commercial Invoice. Factoring party details and bank accounts are mapped to FactoringAgreementDetails. |
| Peppol BIS 393 | Factored Invoice | Finvoice | INV01 | Type code falls back to Commercial Invoice. Payee party data is mapped to FactoringAgreementDetails. |
| Peppol BIS 384 | Corrected Invoice | Finvoice | INV01 | Type code falls back to Commercial Invoice |
| Peppol BIS 386 | Prepayment Invoice | Finvoice | INV01 | Type code falls back to Commercial Invoice. Prepaid amount is preserved. |
| Peppol BIS 393 | Factored Invoice | OIOUBL | 393 | Preserved. Payee party data is also preserved. |
| TEAPPS 09 | Reminder Invoice | Peppol BIS 3.0 | 380 | Type code falls back to Commercial Invoice. Penalty interest data is carried in PaymentTerms. |
| TEAPPS 06 | Interest Invoice | Peppol BIS 3.0 | 380 | Type code falls back to Commercial Invoice. Header-level interest rate is carried. Row-level overdue payment details are lost. |
| TEAPPS 06 | Interest Invoice | Finvoice | INV03 | Preserved. Row-level overdue payment details are also preserved. |
| Finvoice SEI05 | Secure Collect Note | Finvoice | SEI05 | Preserved (same format family) |
| Finvoice SEI05 | Secure Collect Note | TEAPPS 3.0 | 02 + security metadata | Security classification preserved as metadata |
| Finvoice SEI05 | Secure Collect Note | Peppol BIS 3.0 | 380 | Security classification and subtype both lost |
Secure invoice conversion behavior
Finvoice secure invoices (SEI codes) carry a security classification that indicates the document requires special handling. This classification is a feature specific to the Finnish invoicing ecosystem and is only fully supported in Finvoice and TEAPPS formats.
Finvoice to Finvoice: The SEI code is passed through as-is. A document sent as SEI05 (Secure Collect Note) is delivered as SEI05.
Finvoice to TEAPPS: The security classification is preserved as separate metadata. The invoice type code is mapped to the corresponding non-secure TEAPPS equivalent (for example, SEI05 maps to TEAPPS code 02, which is the Collecting Invoice). The security information travels alongside the document so it can be restored if the document is later converted back to Finvoice.
TEAPPS to Finvoice: If the TEAPPS document carries security metadata, the converter restores the SEI code in the Finvoice output. For example, a TEAPPS document with code 02 and a stored security code of SEI05 is exported as Finvoice SEI05.
Finvoice or TEAPPS to any other format: The security classification is lost. The document is converted using the underlying invoice subtype only (for example, SEI05 becomes a standard Commercial Invoice with code 380 in Peppol BIS 3.0). There is no mechanism to carry the security classification in UBL or other non-Finnish formats.
| Conversion | Type code result | Security classification |
|---|---|---|
| Finvoice SEI → Finvoice | SEI code preserved | Preserved |
| Finvoice SEI → TEAPPS 3.0 | Mapped to TEAPPS equivalent | Preserved as metadata |
| TEAPPS (with security) → Finvoice | SEI code restored | Restored |
| Finvoice SEI → Peppol BIS 3.0 | Falls back to 380/381 | Lost |
| Finvoice SEI → any other format | Falls back to default | Lost |
Content-level feature support
The type code tells the recipient what kind of document it is, but the actual data that makes a document special is carried in the document content. For example, a factored invoice contains factoring party details and bank accounts in its payload. When converting between formats, Maventa maps this content independently of the type code. Even if the target format does not have a dedicated type code for “factored invoice”, the factoring data is still converted if the target format has the relevant fields.
The following tables show which formats can carry specific content features in their payload. This is separate from whether the format has a dedicated type code for that feature.
Factoring and payee party
Factoring information identifies a third party (the factor) who receives payment on behalf of the seller. This data includes the factoring party name, address, bank accounts, and agreement details.
| Format | Support level |
|---|---|
| Finvoice | Full: FactoringAgreementDetails with party name, address, identifier, agreement ID, type code, bank accounts |
| TEAPPS | Full: FACTORING_INFORMATION with agreement number, factoring type, endorsement clause |
| Peppol BIS 3.0 | PayeeParty with name, identifiers, legal entity |
| OIOUBL, SI-UBL | PayeeParty (inherited from UBL base) |
Overdue payment and interest calculation details
Interest invoices and collect notes typically carry per-row details about the original overdue invoices: original invoice number, dates, amounts, interest rate, interest period, and calculated interest charges.
| Format | Support level |
|---|---|
| Finvoice | Full row-level: RowOverDuePaymentDetails with original invoice ID, dates, amounts, interest rate, interest period, paid/unpaid amounts, collection charges |
| TEAPPS | Full row-level: INFORMATION_OF_OVERDUE_PAYMENTS with interest charges, interest period, interest rate, collection surcharges, original invoice references |
| All UBL formats | Not supported. Row-level overdue payment details are lost during conversion to these formats. |
Penalty interest rate
A header-level interest rate that applies to late payments. This is a simpler field than the row-level overdue payment details above.
| Format | Support level |
|---|---|
| Finvoice | PaymentOverDueFinePercent, PaymentOverDueFineFreeText |
| TEAPPS | PAYMENT_OVERDUE_FINE with interest rate and free text |
| Peppol BIS 3.0, OIOUBL, SI-UBL | PenaltySurchargePercent and PenaltyPeriod in PaymentTerms |
Prepaid amount
The amount already paid before the invoice is issued, used for advance payments and prepayment invoices.
| Format | Support level |
|---|---|
| Peppol BIS 3.0, OIOUBL, SI-UBL | Full: PrepaidAmount in LegalMonetaryTotal plus PrepaidPayment details (ID, amount, date) |
| Finvoice 3.0 | InvoicePaidAmount (sum only, no detailed references) |
| TEAPPS | ADVANCE_PAYMENT (sum only) |
Direct payment
Direct payment (suoramaksu) is a Finnish payment method where the invoice amount is collected directly from the payer’s bank account. This is a concept specific to the Finnish invoicing ecosystem.
| Format | Support level |
|---|---|
| Finvoice | Full: OriginCode field, DirectDebitInfo with debited account details, dedicated document type |
| TEAPPS | Full: METHOD_OF_CHARGE field, dedicated document type |
| All other formats | Not supported. Direct payment data is lost during conversion. |
Self-billing
Self-billing is when the buyer creates the invoice on behalf of the seller. Beyond the type code, this requires reversing the party roles (the buyer becomes the accounting supplier).
| Format | Support level |
|---|---|
| Peppol BIS 3.0 | Full: dedicated document types with party endpoint reversal in mappings |
| SI-UBL 2.0 | Type code support (389) but no party reversal logic |
| All other formats | Not supported |
Construction invoice specifics
Construction invoices (type codes 875, 876, 877) are distinguished only by their type code. No format has construction-specific payload fields such as completion percentage or site details. The only related structural element is the standard contract reference field, which is available in most formats.