Sequential Invoice Numbering Guide: EU Compliant Gap-Free Invoice Numbers

Tax & Compliance Disclaimer: This guide provides general information about sequential invoice numbering requirements in the EU. It is not intended as tax, legal, or accounting advice. Invoice numbering regulations may have country-specific requirements and interpretations beyond the general EU framework described here. Record retention periods, acceptable formats, and audit procedures vary by member state. Always consult with a qualified accountant, tax advisor, or bookkeeper familiar with your specific EU country's invoice requirements and tax law before implementing an invoice numbering system. CSV2Invoice provides technical invoice generation tools but does not offer tax or legal advisory services.

Table of Contents

What is Sequential Invoice Numbering?

Sequential invoice numbering is a fundamental legal requirement in the EU where every invoice you issue must have a unique identifier that follows a continuous, gap-free, chronological sequence.

In simple terms:

  • Each invoice gets a unique number
  • Numbers increment by 1 each time (no gaps)
  • Numbers are issued in chronological order (by date/time)
  • The sequence is continuous from your first invoice to your current invoice

Compliant Sequential Numbering Example

✅ Correct sequence:

  • INV-2024-001 (March 1, 2024)
  • INV-2024-002 (March 2, 2024)
  • INV-2024-003 (March 2, 2024 - same day OK)
  • INV-2024-004 (March 5, 2024)
  • INV-2024-005 (March 7, 2024)

Result: No gaps, chronological order maintained, every number used exactly once.

Non-Compliant Sequential Numbering Example

❌ Incorrect sequence (has gap):

  • INV-2024-001 (March 1, 2024)
  • INV-2024-002 (March 2, 2024)
  • INV-2024-004 (March 5, 2024) ← Missing #003!
  • INV-2024-005 (March 7, 2024)

Problem: Gap at #003. Tax authorities will flag this and ask "Where is invoice #003? Is it unreported income?"

Sequential numbering applies to all invoice types:

  • Standard B2C invoices (to consumers)
  • B2B invoices (to businesses)
  • OSS invoices (digital services across EU)
  • IOSS invoices (imported goods under €150)
  • Reverse Charge invoices (cross-border B2B)
  • Credit notes and debit notes
  • Proforma invoices (if used for tax purposes)

Why Sequential Numbering is Legally Required

Sequential invoice numbering isn't just bureaucracy - it serves critical legal and tax enforcement purposes that protect both businesses and tax systems.

The Four Core Purposes

1. Fraud Prevention

Sequential numbering makes it nearly impossible to hide sales or create fake invoices:

  • Cannot delete invoices without evidence: If you void invoice #105, there's still a record that #105 existed (must document void reason)
  • Cannot issue duplicate invoices: Each number used exactly once prevents double-billing or duplicate tax deductions
  • Cannot backdate invoices: Chronological order prevents shifting income between tax periods
  • Cannot create fake expenses: Suppliers using sequential numbering can't create fraudulent expense invoices for your business

2. Complete Tax Reporting Verification

Tax authorities can quickly verify you've reported all income:

  • Count total invoices: If your system shows invoices #1 to #500, there should be exactly 500 invoices
  • Identify gaps instantly: Automated systems flag missing invoice numbers for investigation
  • Cross-reference bank deposits: Match invoice sequence to bank transactions to find unreported cash sales
  • Verify VAT returns: Sum all sequential invoices and compare to VAT return totals

3. Audit Trail Creation

Creates a permanent, tamper-proof record of all business transactions:

  • Chronological business history: Invoice sequence tells the story of business activity over time
  • Dispute resolution: Customers or suppliers can reference specific invoice numbers to resolve billing disputes
  • Financial analysis: Sequential records enable accurate cash flow and revenue trend analysis
  • Legal evidence: Court-admissible proof of transactions and payment terms

4. Digital Bookkeeping Compliance (GoBD)

Specific requirements in countries like Germany, Austria, and France:

  • Germany (GoBD): Requires continuous invoice numbering as proof of complete, unalterable records
  • France (LNE): Sequential numbering mandatory for certified invoicing systems
  • Italy (e-invoicing): SDI system validates sequential numbering in electronic invoices
  • Spain (SII): Real-time VAT reporting requires sequential invoice verification

What Happens During a Tax Audit

Tax auditors specifically look for invoice numbering compliance. Here's what they check:

  1. Gap analysis: Automated software scans for missing invoice numbers
  2. Chronological verification: Check dates match number sequence (no backdating)
  3. Void documentation: Request proof for every voided/cancelled invoice number
  4. Cross-system comparison: Compare invoice sequence to accounting software, bank statements, and VAT returns
  5. Sample invoice inspection: Request invoices at random positions in sequence to verify existence

If gaps are found: Auditor assumes missing invoices = unreported income and may reconstruct your revenue using industry benchmarks, bank deposit analysis, or expense ratios. Burden of proof shifts to you to prove the gap is innocent.

The Three Golden Rules of Sequential Numbering

These three rules define compliant sequential invoice numbering in all EU member states:

Rule 1: Unique (No Duplicates)

Every invoice number must be used exactly once throughout your entire business history.

Scenario Compliant? Explanation
INV-001 used for one invoice, INV-002 for another ✅ Yes Each number used once
INV-001 used for two different customers ❌ No Duplicate number - fraud indicator
INV-2023-001 (2023) and INV-2024-001 (2024) ✅ Yes Year prefix makes them unique
Voided INV-050, reused INV-050 for new invoice ❌ No Cannot reuse voided numbers

Rule 2: Sequential (Gap-Free)

Invoice numbers must increment by 1 with no missing numbers in the sequence.

Sequence Compliant? Issue
001, 002, 003, 004, 005 ✅ Yes No gaps, perfect sequence
001, 002, 004, 005 ❌ No Missing #003 - audit red flag
001, 003, 005, 007 (using odd numbers only) ❌ No Intentional gaps - fraud suspicion
001, 002, 003-VOID, 004, 005 ✅ Yes 003 exists (voided) with documentation

What to Do With Voided/Cancelled Invoices

If you need to void an invoice, you cannot skip the number. Instead:

  1. Keep the invoice in your records marked "VOID" or "CANCELLED"
  2. Document the reason for voiding (customer cancelled order, pricing error, duplicate, etc.)
  3. Store the void documentation with the invoice for 10 years
  4. Never reuse the voided number
  5. If replacement invoice needed, issue a new invoice with the next sequential number

Example: Invoice #105 issued with wrong price → Void #105 (keep with "VOID" stamp) → Issue corrected invoice as #106

Rule 3: Chronological (Time-Ordered)

Invoice numbers must increase in the order invoices are issued by date and time.

Sequence Compliant? Issue
INV-001 (Jan 10), INV-002 (Jan 15), INV-003 (Jan 20) ✅ Yes Numbers increase with dates
INV-001 (Jan 10), INV-002 (Jan 15), INV-003 (Jan 15) ✅ Yes Same-day invoices acceptable
INV-001 (Jan 10), INV-002 (Jan 20), INV-003 (Jan 15) ❌ No #003 dated before #002 - backdating suspicion
INV-100 (March 1), INV-099 (March 2) ❌ No Numbers going backward - fraud indicator

Common Chronological Violations and Penalties

Backdating invoices: Issuing invoice #500 dated December 31, 2023, after already issuing invoice #501 dated January 1, 2024 is illegal. This is often done to shift income between tax years to reduce tax liability.

Penalties: €500-€5,000 in Germany, €1,000-€10,000 in France, potential criminal charges for systematic backdating fraud.

How it's detected: Tax authorities compare invoice dates to bank deposit dates, email timestamps, shipping dates, and customer purchase orders. Digital forensics can reveal when invoices were actually created vs. their stated date.

Compliant Invoice Number Formats

The EU doesn't mandate a specific format - only that the numbering system must be unique, sequential, and chronological. Here are the most common compliant formats:

Format Options

Format Example Sequence Pros Cons
Simple Incrementing 1, 2, 3, 4, 5... Simplest possible, no confusion No context, difficult to organize long-term
Year-Prefixed 2024-001, 2024-002, 2024-003... Easy yearly audits, clear tax year separation Sequence resets annually (acceptable)
Year-Month Prefixed 2024-03-001, 2024-03-002... Monthly organization, easy quarterly reporting Resets monthly (acceptable but more complex)
Custom Prefix ACME-001, ACME-002, ACME-003... Branding, distinguishes from quotes/POs Prefix doesn't provide context
Leading Zeros INV-0001, INV-0002, INV-0003... Clean alignment in lists, professional appearance Must decide how many zeros upfront

Recommended Format: Year-Prefixed with Leading Zeros

Format: INV-YYYY-NNNN

Examples: INV-2024-0001, INV-2024-0002, INV-2024-0003

Why this format works best:

  • Tax year clarity: Auditors can instantly identify which tax year an invoice belongs to
  • Annual sequence reset: Start fresh at -0001 each year, simplifying year-end reconciliation
  • Professional appearance: Leading zeros create visual consistency in invoice lists
  • Future-proof: Four-digit counter (0001-9999) handles up to 10,000 invoices per year
  • Easy sorting: Alphabetical file sorting naturally creates chronological order

Real-World Implementation Example

Business: SaaS company processing ~200 invoices/month

Format chosen: INV-YYYY-NNNN

January 2024 invoices:

  • INV-2024-0001 (Jan 1)
  • INV-2024-0002 (Jan 1)
  • ...
  • INV-2024-0198 (Jan 31)

December 2024 invoices:

  • INV-2024-2401 (Dec 1 - continuing from Nov)
  • ...
  • INV-2024-2595 (Dec 31 - final invoice of year)

January 2025: Sequence resets to INV-2025-0001

Result: Clean yearly organization, easy to verify completeness (2,595 invoices issued in 2024), auditors can review year in isolation.

Multi-Sequence Systems (Advanced)

Some businesses maintain separate sequences for different invoice types. This is compliant if done correctly:

Invoice Type Sequence Format Example
Sales Invoices INV-YYYY-NNNN INV-2024-0001
Credit Notes CR-YYYY-NNNN CR-2024-0001
Proforma Invoices PF-YYYY-NNNN PF-2024-0001
Recurring Subscriptions SUB-YYYY-NNNN SUB-2024-0001

Important rules for multi-sequence systems:

  • Each sequence must be gap-free and chronological within its category
  • Document your numbering system policy and provide to auditors upon request
  • Cannot issue INV-050 on March 1 and INV-048 on March 5 (still violates chronological order within category)
  • Most tax advisors recommend single universal sequence to avoid complexity

Common Mistakes and How to Avoid Them

These are the most frequent sequential numbering errors businesses make, along with practical solutions:

Mistake #1: Using Platform Transaction IDs as Invoice Numbers

Example: Using Stripe charge ID "ch_3Oabc123xyz" or Shopify order "#1234" as the invoice number

Why it's wrong: Platform IDs are not sequential or chronological. They have gaps, use random characters, and don't meet EU numbering requirements.

Solution: Display platform ID as "Transaction Reference" or "Order ID" on invoice, but assign a separate compliant sequential invoice number.

Mistake #2: Starting Over After System Migration

Example: Switching from manual invoicing to automated system and starting numbering from #1 again

Why it's wrong: Creates duplicate invoice numbers across different time periods (e.g., manual INV-001 in 2023 and automated INV-001 in 2024 without year prefix)

Solution: Continue numbering from where you left off (if last manual invoice was #237, start automated system at #238), OR use year-prefixed format to make each sequence unique.

Mistake #3: Skipping Numbers for Cancelled Orders

Example: Customer cancels order, you skip invoice #105 and go straight from #104 to #106

Why it's wrong: Creates gap in sequence, triggers audit red flag

Solution: Either (1) Don't assign invoice number until order confirmed/shipped, OR (2) Issue invoice #105, then immediately void it with documentation if order cancelled.

Mistake #4: Separate Sequences Without Proper Documentation

Example: Using different numbering for EU vs. non-EU customers without formal policy

Why it's wrong: Auditors cannot verify sequence completeness without understanding your system

Solution: Document your numbering policy in writing, include in accounting procedures, provide to auditor if requested. Better: use single universal sequence.

Mistake #5: Backdating Invoices

Example: Issuing invoice #500 today but dating it last month to shift income to previous tax period

Why it's wrong: Violates chronological order, tax fraud indicator, carries criminal penalties in some jurisdictions

Solution: Always use actual invoice issuance date. If you need to bill for services performed last month, invoice today with note "Services rendered: [last month dates]".

Mistake #6: Not Documenting Voided Invoices

Example: Voiding invoice #203 due to pricing error but deleting all records

Why it's wrong: Creates unexplained gap, auditor assumes hidden income

Solution: Keep voided invoice permanently with "VOID" stamp + reason + date voided. Never delete invoice numbers from system.

Why Platform IDs Aren't Sequential Invoice Numbers

Payment platforms and e-commerce systems generate their own transaction identifiers, but these cannot serve as legally compliant EU invoice numbers:

Platform Their ID Format Why It's Not Compliant
Stripe ch_3Oabc123xyz789 Random characters, not sequential, not chronological, has gaps
PayPal PAY-1A234567BC890123D Random hash, cannot verify sequence continuity
Shopify #1234 Order numbers, may have gaps if orders cancelled, not invoices
WooCommerce #5678 Order IDs, gaps from deleted/draft orders, not invoice numbers
Paddle sub_123abc456def Subscription IDs, not chronological, has gaps

Real Example: Why Stripe IDs Fail Audits

Your Stripe charges in March 2024:

  • ch_3OabcDEF123 (March 1, €100)
  • ch_3OghiJKL789 (March 5, €200)
  • ch_3OxyzMNO456 (March 10, €150)

Tax auditor asks: "What happened to charges ch_3Odef through ch_3Oghi? These look like missing transaction IDs. Did you hide €50,000 in unreported income?"

The reality: Stripe IDs are globally unique across millions of customers. The gap between ch_3Oabc and ch_3Oghi represents transactions from completely different businesses. But the auditor doesn't know this - they just see a huge gap in your "sequence."

Solution: Issue proper sequential invoice numbers (INV-2024-0001, INV-2024-0002, INV-2024-0003) and list Stripe charge ID as "Transaction Reference" for payment tracking.

How to Handle Platform IDs on Compliant Invoices

Best practice structure:

  • Invoice Number: INV-2024-0042 (sequential, compliant, legally required)
  • Order Reference: Shopify Order #1234 (for your internal tracking)
  • Transaction ID: ch_3Oabc123xyz (for payment processor reconciliation)
  • Customer Reference: PO-ABC-789 (if customer provided purchase order number)

This approach satisfies tax authorities (compliant invoice number) while maintaining links to all platform systems for operational purposes.

Converting CSV to Sequential Invoices

Payment platforms export transaction data, but you must transform this into properly numbered invoices. CSV2Invoice automates the entire sequential numbering process.

The 4-Step Sequential Numbering Process

Step 1: Export Platform Data with Transaction Dates

Export transaction data ensuring it includes transaction/order dates for chronological sorting:

  • Stripe: Payments > Export > Include: Created date/time, Customer, Amount, Description
  • PayPal: Reports > Activity download > Include: Date, Time, Transaction ID, Gross amount
  • Shopify: Orders > Export > Include: Order date, Financial status, Customer, Total
  • WooCommerce: WooCommerce > Orders > Export > Include: Order date, Order status, Customer details
  • Paddle: Transactions > Export > Include: Created at, Customer, Amount

Critical: Transaction date/time is essential for chronological sorting. Without it, invoices cannot be numbered in correct order.

Step 2: System Automatically Sorts Chronologically

CSV2Invoice reads transaction dates and sorts all rows from oldest to newest:

  1. Parse dates: Handles all date formats (YYYY-MM-DD, DD/MM/YYYY, timestamps)
  2. Sort chronologically: Oldest transaction becomes invoice #1, newest becomes last number
  3. Handle same-day transactions: Maintains stable sort order for transactions on the same date
  4. Validate sequence: Confirms no date inversions after sorting

This ensures chronological order is maintained automatically - you don't manually sort.

Step 3: Assign Sequential Invoice Numbers

System assigns gap-free sequential numbers in chronological order:

  • Determine starting number: System asks for your next invoice number (e.g., if last invoice was INV-2024-0150, start at INV-2024-0151)
  • Increment by 1: Each row receives next number in sequence (0151, 0152, 0153...)
  • No gaps: Every transaction gets a number, no skipping
  • Link to platform ID: System maintains mapping of invoice number → transaction ID for audit trail

The system remembers your last invoice number and automatically continues the sequence on future uploads.

Step 4: Generate Professional Invoices with Dual IDs

Each invoice includes both compliant numbering and platform references:

  • Invoice Number (prominent): INV-2024-0042 (sequential, compliant)
  • Order Reference (if applicable): Shopify Order #1234
  • Transaction Reference: Stripe ch_3Oabc123xyz
  • Invoice Date: Matches transaction date for chronological compliance

Tax authorities see compliant sequential numbering. You maintain operational links to platform systems for payment reconciliation and customer support.

Maintaining Sequence Across Multiple Uploads

When you generate invoices monthly from platform CSV exports:

  1. January upload: 150 transactions → Assigned INV-2024-0001 through INV-2024-0150
  2. February upload: System remembers last number (0150) → Starts February invoices at INV-2024-0151
  3. March upload: Continues from February's last number automatically

The system maintains perfect sequence continuity across months without manual tracking. You never have to remember "what number am I on?" - it's automatic.

Platform-Specific Sequential Numbering Guides

Each platform exports transaction data differently and has unique date/time formats. Our platform-specific guides provide exact instructions:

Payment Processors

E-Commerce Platforms

SaaS Billing Platforms

Each platform guide includes:

  • Exact CSV export settings to capture transaction dates
  • Platform-specific date format handling (YYYY-MM-DD, DD/MM/YYYY, Unix timestamps, ISO 8601)
  • Timezone considerations (UTC, PST, EST, local timezone)
  • How to map platform IDs as reference fields (not invoice numbers)
  • Handling incomplete dates (orders vs. paid orders)
  • Maintaining sequence across multiple monthly exports

Can't find your platform?

CSV2Invoice supports 200+ platforms. Browse all sequential numbering guides or use the universal CSV mapper which automatically detects and sorts by any date field.

Frequently Asked Questions

What is sequential invoice numbering and why is it required?

Sequential invoice numbering is a legal requirement in the EU where every invoice must have a unique identifier that follows a continuous, gap-free, chronological sequence. For example: INV-2024-001, INV-2024-002, INV-2024-003 with no missing numbers. The sequence must be uninterrupted from the first invoice you issue to the last. This requirement exists to prevent invoice fraud, ensure complete tax reporting, create audit trails, and enable tax authorities to verify all business income has been reported. If invoice #107 exists and invoice #109 exists, tax authorities will ask 'Where is invoice #108?' and may assume you're hiding taxable income. Sequential numbering is mandatory in all EU member states and applies to all invoice types: B2B, B2C, OSS, IOSS, and Reverse Charge.

Can I use payment platform transaction IDs as invoice numbers?

No, payment platform transaction IDs (from Stripe, PayPal, Shopify, etc.) cannot be used as invoice numbers because they are not sequential and chronological. Platform IDs like 'ch_3Oabc123xyz' (Stripe), 'PAY-ABC123' (PayPal), or '#1234' (Shopify) have gaps, may not be chronological, and don't meet EU invoice numbering requirements. These IDs can appear on invoices as 'Transaction Reference' or 'Order ID' for tracking purposes, but you must also assign a separate, compliant sequential invoice number (e.g., INV-2024-001, INV-2024-002). Tax authorities specifically reject platform IDs during audits because they cannot verify the sequence is complete and gap-free.

What happens if I have gaps in my invoice numbering sequence?

Gaps in invoice numbering sequences create serious compliance issues and trigger automatic red flags in tax audits: (1) Tax authorities assume missing invoices represent unreported income, (2) You must prove each gap is legitimate (voided invoice, system error, test invoice) with documentation, (3) Penalties range from €50-€500 per missing invoice in most EU countries, (4) In severe cases, auditors may reconstruct your entire income using other evidence, (5) Burden of proof shifts to you - you must prove the gap is innocent, not the tax authority proving fraud. Common causes of gaps: Using platform order numbers which aren't sequential, Manual invoice numbering with human error, System migrations losing invoice sequence, Voiding invoices without proper documentation. Even legitimate gaps require documentation - you cannot simply skip numbers.

What invoice numbering format should I use for EU compliance?

The EU doesn't mandate a specific invoice numbering format, only that it must be unique, sequential, and gap-free. Common compliant formats include: (1) Simple incrementing: 1, 2, 3, 4, 5 (works but provides no context), (2) Year-prefixed: 2024-001, 2024-002, 2024-003 (resets each year, common practice), (3) ISO date-based: INV-2024-03-001, INV-2024-03-002 (resets each month), (4) Custom prefix: ACME-001, ACME-002, ACME-003 (company branding). Key requirements: Must increment by 1 each time, No gaps allowed (001, 002, 003 - not 001, 002, 005), Chronological (newer invoices have higher numbers), Leading zeros acceptable (001, 002 or 1, 2 both work). Best practice: Use year-prefixed format (2024-0001) which resets annually and makes audits easier - auditors can quickly verify sequence completeness within a tax year.

How do I implement sequential numbering for multiple invoice types?

Businesses issuing different invoice types (B2B, B2C, credit notes, proforma invoices) have two compliant options: (1) Single universal sequence (recommended): All invoice types share one sequence: INV-001 (B2B sale), INV-002 (B2C sale), INV-003 (Credit note), INV-004 (OSS invoice). This ensures complete chronological order and simplifies audits. (2) Separate sequences per type: B2B invoices: B2B-001, B2B-002; B2C invoices: B2C-001, B2C-002; Credit notes: CR-001, CR-002. Each sequence must be gap-free within its category. Important: If using separate sequences, you must maintain chronological order overall - cannot issue B2B-005 on March 1 and B2B-003 on March 3. Most tax advisors recommend a single universal sequence to avoid complexity and audit questions about why certain sequences have gaps relative to business volume.

What is chronological ordering and why does it matter?

Chronological ordering means invoice numbers must increase in the order invoices are issued by date/time. You cannot issue invoice #105 on March 1st and then issue invoice #103 on March 5th - this violates chronological order. Tax authorities use chronological order to detect invoice fraud patterns like backdating invoices to shift income between tax years, issuing invoices out of sequence to hide transactions, voiding legitimate invoices and replacing them with fraudulent ones. Violations of chronological order: Invoice #500 dated March 1, Invoice #499 dated March 2 (numbers going backward in time), Invoice #100 dated Jan 15, Invoice #105 dated Jan 10 (earlier date with higher number). Compliant chronological order: Invoice #100 dated Jan 10, Invoice #101 dated Jan 15, Invoice #102 dated Jan 15 (same-day OK), Invoice #103 dated Jan 20. Same-day invoices can be in any order as long as the sequence is maintained.

How do I convert payment platform CSV to sequentially numbered invoices?

Converting platform CSV exports to sequentially numbered invoices involves: (1) Export transaction data from your platform (Stripe, PayPal, Shopify, etc.) including transaction date, customer details, and amounts, (2) Sort transactions chronologically by transaction/order date (oldest first), (3) Assign sequential invoice numbers starting from your next available number (e.g., if last invoice was INV-2024-150, start at INV-2024-151), (4) Map platform transaction IDs as reference fields (not invoice numbers), (5) Generate professional PDF invoices with sequential numbers in chronological order, (6) Maintain invoice number register/log linking each number to platform transaction ID. CSV2Invoice automates this process: Reads transaction dates from CSV, Sorts chronologically automatically, Assigns gap-free sequential numbers, Links invoice numbers to original platform IDs for audit trail, Generates compliant PDFs with both invoice number and transaction reference. One-time setup ensures all future uploads maintain the correct sequence.

What platforms are supported for sequential invoice numbering?

CSV2Invoice supports sequential invoice numbering for 200+ payment platforms and e-commerce systems including: Payment processors (Stripe, PayPal, Square, Braintree, Adyen, Mollie), E-commerce platforms (Shopify, WooCommerce, Magento, BigCommerce, PrestaShop, OpenCart), SaaS billing systems (Paddle, Chargebee, Recurly, Zuora, Chargify), Course platforms (Teachable, Thinkific, Podia, Kajabi, LearnDash), Membership platforms (MemberPress, Patreon, Substack), Marketplaces (Gumroad, Lemonsqueezy, Sellfy, Etsy, eBay), Booking systems (Calendly, Acuity, SimplyBook.me), and Donation platforms (Donorbox, GiveWP, Charitable). Each platform guide includes specific instructions for: Exporting transaction dates correctly, Handling platform-specific date formats, Mapping transaction IDs as reference fields, Maintaining sequence across multiple CSV uploads. The system remembers your last invoice number and continues the sequence automatically.

Complete Platform Directory: All 208 Supported Platforms

Generate invoices with Sequential Numbering from any of these platforms. Click your platform for detailed CSV export instructions and field mapping guides:

Freelance & Service Platforms (8 platforms)