> ## Documentation Index
> Fetch the complete documentation index at: https://invopop-fi-party-endpoints.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Finland

> Send and receive Finnish e-invoices across the domestic operator network.

export const fiFinvoiceImportWorkflow = {
  "name": "Finvoice import invoice",
  "description": "Import a received invoice",
  "schema": "bill/invoice",
  "steps": [{
    "id": "bc178046-9172-11f1-ac3d-92000767c8b7",
    "name": "Import received invoice",
    "provider": "gov-fi.import"
  }, {
    "id": "bc178096-9172-11f1-90ae-92000767c8b7",
    "name": "Set folder",
    "provider": "silo.folder",
    "summary": "Set folder to `Invoices · Expenses`{.font-medium}",
    "config": {
      "folder": "expenses"
    }
  }, {
    "id": "bc1780dc-9172-11f1-b338-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `registered`{.state .registered}",
    "config": {
      "state": "registered"
    }
  }],
  "rescue": [{
    "id": "bc17811a-9172-11f1-ae07-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `error`{.state .error}",
    "config": {
      "state": "error"
    }
  }]
};

export const fiFinvoiceSyncWorkflow = {
  "name": "Finvoice sync received invoices",
  "description": "Sweep a registered party's inbox at the operator and dispatch import jobs",
  "schema": "org/party",
  "steps": [{
    "id": "bc178004-9172-11f1-b2b4-92000767c8b7",
    "name": "Sync received invoices",
    "provider": "gov-fi.sync"
  }],
  "rescue": []
};

export const fiFinvoiceRegisterWorkflow = {
  "name": "Finvoice register party",
  "description": "Register a party so it can send e-invoices in Finland, once its representative has signed the authorization. Finnish parties can also receive",
  "schema": "org/party",
  "steps": [{
    "id": "bc177ef2-9172-11f1-8c54-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `processing`{.state .processing}",
    "config": {
      "state": "processing"
    }
  }, {
    "id": "874e856a-a0b4-11f1-a9bb-92000767c8b7",
    "name": "Sign authorisation for Finland",
    "provider": "gov-fi.sign"
  }, {
    "id": "875129e9-a0b4-11f1-b569-92000767c8b7",
    "name": "Wait for Finland agreement approval",
    "provider": "gov-fi.wait.approval"
  }, {
    "id": "bc177f3b-9172-11f1-8204-92000767c8b7",
    "name": "Register party in Finland",
    "provider": "gov-fi.register"
  }, {
    "id": "bc177f7d-9172-11f1-bb70-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `registered`{.state .registered}",
    "config": {
      "state": "registered"
    }
  }],
  "rescue": [{
    "id": "bc177fc4-9172-11f1-a165-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `error`{.state .error}",
    "config": {
      "state": "error"
    }
  }]
};

export const fiFinvoiceSendInvoiceWorkflow = {
  "name": "Finvoice send invoice",
  "description": "Issue an invoice to a Finnish receiver",
  "schema": "bill/invoice",
  "steps": [{
    "id": "bc138fa6-9172-11f1-b7bf-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `processing`{.state .processing}",
    "config": {
      "state": "processing"
    }
  }, {
    "id": "bc177c32-9172-11f1-9d66-92000767c8b7",
    "name": "Add sequential code",
    "provider": "sequence.enumerate",
    "summary": "Dynamic · Finvoice · 000001",
    "config": {
      "name": "Finvoice",
      "padding": 6,
      "start": 1
    }
  }, {
    "id": "bc177d5b-9172-11f1-b7a4-92000767c8b7",
    "name": "Sign envelope",
    "provider": "silo.close"
  }, {
    "id": "bc177de4-9172-11f1-83e5-92000767c8b7",
    "name": "Send invoice",
    "provider": "gov-fi.send"
  }, {
    "id": "bc177e3d-9172-11f1-8812-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `sent`{.state .sent}",
    "config": {
      "state": "sent"
    }
  }],
  "rescue": [{
    "id": "bc177e9e-9172-11f1-8438-92000767c8b7",
    "name": "Set state",
    "provider": "silo.state",
    "summary": "Set state to `error`{.state .error}",
    "config": {
      "state": "error"
    }
  }]
};

<Tabs>
  <Tab title="Description">
    <Columns cols="2">
      <div class="flex flex-col grow items-center justify-center">
        <Card title="Register suppliers" icon="https://assets.invopop.com/flags/fi.svg" href="/guides/fi-finvoice-supplier" horizontal>
          Supplier registration guide ›
        </Card>

        <Card title="Issue invoices" icon="https://assets.invopop.com/flags/fi.svg" href="/guides/fi-finvoice" horizontal>
          Issuing guide ›
        </Card>

        <Card title="Receive invoices" icon="https://assets.invopop.com/flags/fi.svg" href="/guides/fi-finvoice-receiving" horizontal>
          Receiving guide ›
        </Card>
      </div>

      | | |
      | - | - |
      | Developer | [Invopop](https://invopop.com) |
      | Category | Government |
      | Scope | B2B, B2G |
      | Country | [Finland](/compliance/finland) |
    </Columns>

    Finland has no government clearance system for invoices. Instead, e-invoices travel over two networks that run side by side: the domestic operator network, an unbranded mesh of accredited operators where around 370,000 companies receive their invoices as *Finvoice* or *TEAPPSXML*, and Peppol, with roughly 13,000 Finnish end users (about 0.24% of annual volume). Neither network alone covers Finnish receivers.

    This app covers the **domestic operator network**, through Invopop's partner [Apix Messaging](https://www.apix.fi), an accredited Finnish operator. You send one GOBL invoice with the receiver's e-invoice address, and the receiver gets it in the format its operator expects, such as Finvoice or TEAPPSXML.

    If your receiver is only on Peppol, use the [Peppol app](/apps/peppol). The national registry at [verkkolaskuosoite.fi](https://verkkolaskuosoite.fi) lists addresses on both networks, so one lookup tells you which app to use.

    Before sending, the app asks the operator how it would reach the receiver. If the receiver can't get an e-invoice on the domestic network, the app refuses the invoice, and the error names the channel the operator would have used.

    E-invoicing is mandatory for invoices to Finnish public bodies under Act 241/2019, and voluntary between businesses, though businesses above a EUR 10,000 turnover threshold have a statutory right to request e-invoices from their suppliers.

    #### Key features

    * **Workflow automation:** Register parties, issue invoices, and import received ones as steps in your workflows.
    * **Domestic network delivery:** Each receiver on the domestic operator network gets the invoice in the format its own operator expects.
    * **Verified onboarding:** Each party's representative signs an authorization agreement and verifies their identity before the party is registered.
    * **Per-party provisioning:** Each registered party gets its own operator account. A Finnish party also gets its own e-invoice address.
    * **Finvoice-safe validation:** The [`fi-finvoice-v3` addon](https://docs.gobl.org/addons/fi-finvoice-v3) requires the payment data Finvoice makes mandatory, so invoices that would fail conversion are rejected before they are sent.
    * **Reachability pre-check:** Receivers that would get paper, email, or a consumer bank channel are refused up front, never silently delivered another way.
    * **Invoice reception:** Each registered Finnish party's inbox is polled on a schedule and received invoices are imported automatically.

    Check out the guides below to get started:

    * [Supplier registration](/guides/fi-finvoice-supplier) · [Issuing invoices](/guides/fi-finvoice) · [Receiving invoices](/guides/fi-finvoice-receiving)

    ## FAQ

    Invoicing questions

    <AccordionGroup>
      <Accordion title="Can I invoice a Finnish business that isn't reachable on Peppol?">
        Yes. Most Finnish businesses receive e-invoices through the domestic operator network, and the [Finland app](/apps/finland) delivers there. You send one GOBL invoice with the receiver's e-invoice address, and it arrives in the format the receiver's operator expects. You can check which network a receiver is on at [verkkolaskuosoite.fi](https://verkkolaskuosoite.fi). For a receiver only on Peppol, use the [Peppol app](/apps/peppol).
      </Accordion>

      <Accordion title="Why does every Finnish invoice need bank account details?">
        Because in Finland an e-invoice doubles as a payment order. Finvoice was created by the banks (it's published by Finance Finland, the banking association) and grew out of the bank network, where the receiver approves the invoice for payment directly in their bank. That's why every Finvoice invoice, credit notes included, must carry the payment order: an IBAN, a payment reference, and a dated due date. Most Finnish receivers get their invoices as Finvoice, and one missing this data would fail on its way to the receiver, where we can't see it, so the [`fi-finvoice-v3` addon](https://docs.gobl.org/addons/fi-finvoice-v3) rejects it up front instead.
      </Accordion>

      <Accordion title="Why was my invoice refused before it was sent anywhere?">
        Three checks run before anything leaves the platform: the supplier must have an electronic address (`supplier-address-missing`), the invoice must carry a payment bank account (`payment-account-missing`), and the receiver must be reachable as a true e-invoice (`receiver-not-einvoice`). The last one matters most: receivers only reachable on paper, by email, or through the consumer bank channels (e-lasku, suoramaksu, Netposti) are rejected up front, with the channel the operator would have used named in the error, rather than quietly delivered another way.
      </Accordion>

      <Accordion title="What does a submission with an unknown outcome mean?">
        If the connection to the operator fails after the request may have already been written, we can't tell whether the invoice was accepted, and resubmitting could deliver it twice. The job reports the attempt with its timestamp under the `send-unconfirmed` code instead of retrying. Check with support before sending the invoice again.
      </Accordion>

      <Accordion title="How do I invoice the Finnish state?">
        Business-to-government is the segment where e-invoicing is mandatory in Finland, and the state applies its own reference conventions: order numbers must start with `V1`, agreement numbers with `VSK1`, and posting references with `TK1`, with at most one of each per invoice. Set the order number in `ordering.purchases` and the agreement number in `ordering.contracts` on the GOBL invoice. Invopop doesn't validate or normalise these prefixes, so format them exactly as the contracting authority provided them, or the state will reject the invoice.
      </Accordion>

      <Accordion title="What happens after the invoice is accepted?">
        The operator's synchronous accept is the final programmatic signal: there is no delivery status API to poll afterwards. If a receiving operator later rejects the invoice, that rejection arrives by email in production. No news after acceptance is good news.
      </Accordion>
    </AccordionGroup>

    Registering supplier questions

    <AccordionGroup>
      <Accordion title="How do I register a Finnish supplier?">
        Upload the supplier as a GOBL party with `tax_id.country = FI` and the Business ID (y-tunnus), then run the [Finland app](/apps/finland)'s registration workflow. Registration provisions the party its own operator account and allocates its e-invoice address — a party must be registered before it can send or receive anything. See the [supplier registration guide](/guides/fi-finvoice-supplier).
      </Accordion>

      <Accordion title="What Peppol scheme does Finland use for participant IDs?">
        Scheme `0216`, wrapping the party's OVT code — `0037` followed by the Business ID without its hyphen. Under Finland's Peppol Authority Specific Requirements, the OVT code is the mandatory participant identifier for Finnish organisations on Peppol. The `0037` at the start of the code itself is a country prefix, not the scheme.
      </Accordion>

      <Accordion title="What is a Finnish e-invoice address?">
        An OVT code: `0037` followed by the party's Business ID (y-tunnus) without its hyphen, sometimes with a five-character suffix for routing inside large organisations (for example `003726174164`). On Peppol, the same code is wrapped in scheme `0216` (`0216:003726174164`). You can look any counterparty up in the national registry at [verkkolaskuosoite.fi](https://verkkolaskuosoite.fi): since 2024 it mirrors the Peppol address list too, so one lookup covers both networks.
      </Accordion>

      <Accordion title="Which address form should I put on a party record?">
        For a Finnish party, the OVT code, as an endpoint: `iso6523-actorid-upis::0216:` followed by the code. Registration adds it to the party for you. A supplier outside Finland uses its own electronic address, such as `iso6523-actorid-upis::0007:` followed by a Swedish Org.nr. Other forms circulate on the Finnish network (IBAN-style addresses from the older bank channel, operator-prefixed ones such as `TE0037…`), but for a Finnish party the OVT code is the canonical form, and the one the routing pre-check and the generated e-invoice use.
      </Accordion>

      <Accordion title="Why hasn't my party's registration completed yet?">
        Registration provisions the party its own account with the operator, and the job stays queued until every service is in force. For a Finnish party, it also waits until the operator has allocated its e-invoice address, so it never reports success on an account that can't receive yet. A supplier outside Finland only sends, so its registration completes as soon as its sending service is active.
      </Accordion>

      <Accordion title="Can I register several Finnish parties in one workspace?">
        Yes. Each party gets its own operator account, its own e-invoice address, and its own reception polling schedule. Register each one separately by running the registration workflow on its party record.
      </Accordion>
    </AccordionGroup>

    Receiving questions

    <AccordionGroup>
      <Accordion title="How quickly do received invoices appear?">
        Reception is polled, not pushed: each registered Finnish party's inbox at the operator is swept on a schedule, every five minutes by default. Add the time the sender's own operator takes to deliver, and an invoice normally appears within minutes, but not instantly. If you're testing, allow up to a quarter of an hour before suspecting a problem.
      </Accordion>

      <Accordion title="What format do received invoices arrive in?">
        Each received document becomes one entry in your workspace carrying the GOBL invoice, the original XML as received from the network, and a PDF rendering, whatever format the sender issued.
      </Accordion>

      <Accordion title="What setup does receiving need?">
        Two things: the Finland app must be configured with a sync workflow and an import workflow, and the Finnish party must be registered. Registration checks the workflow configuration first, so set the workflows up before running it. Once registered, polling starts automatically; received invoices simply appear as new entries processed by your import workflow. A party outside Finland is registered to send only. To receive its invoices, register it in the [Peppol app](/apps/peppol).
      </Accordion>
    </AccordionGroup>

    More answers in our [Finland FAQ](/faq/finland) section
  </Tab>

  <Tab title="Limitations">
    | Capability | Status | Notes |
    | - | - | - |
    | Party registration | <Badge color="green">Available</Badge> | Signed authorization and identity check, then a per-party operator account |
    | Invoice delivery | <Badge color="green">Available</Badge> | Domestic operator network; Peppol receivers go through the [Peppol app](/apps/peppol) |
    | Invoice reception | <Badge color="green">Available</Badge> | Polled per registered Finnish party, five-minute default |
    | Delivery status tracking | <Badge color="yellow">Not available</Badge> | The synchronous accept is the final programmatic signal; later rejections arrive by email |
    | Party deregistration | <Badge color="yellow">In development</Badge> | Contact [support](mailto:support@invopop.com) to offboard a party |
    | Invopop PDF for receivers | <Badge color="yellow">In development</Badge> | Domestic-network receivers get the operator's PDF rendering |
    | Delivered document retrieval | <Badge color="yellow">Not available</Badge> | The Finvoice the operator delivers cannot be fetched back |
    | B2G reference validation | <Badge color="yellow">Not available</Badge> | Format state references (`V1`, `VSK1`) yourself; posting references (`TK1`) cannot be carried yet |
  </Tab>

  <Tab title="Actions">
    The following workflow actions will be available once you install and enable this app:

    <Card title="Send invoice" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      <div class="pop-count"><Icon icon="https://assets.invopop.com/icons/pops.svg" /> 2</div>
      Deliver a signed GOBL invoice to the receiver's operator as a compliant e-invoice. Checks the receiver is reachable as a true e-invoice before anything is sent.
    </Card>

    <Card title="Sign authorisation for Finland" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      <div class="pop-count"><Icon icon="https://assets.invopop.com/icons/pops.svg" /> 1</div>
      Sign the agreement for the company and representative. A Finnish party's agreement covers sending and receiving. A party outside Finland signs for sending only.
    </Card>

    <Card title="Wait for Finland agreement approval" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      Wait for approval on the uploaded documentation.
    </Card>

    <Card title="Register party in Finland" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      <div class="pop-count"><Icon icon="https://assets.invopop.com/icons/pops.svg" /> 100</div>
      Provision the party its own operator account and activate its services. A Finnish party also gets its e-invoice address, so it can receive. A party outside Finland is registered to send only. A party must be approved and registered before it can send.
    </Card>

    <Card title="Sync received invoices" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      Sweep a registered Finnish party's inbox at the operator and queue one import job for each new document. Runs automatically on the reception polling schedule.
    </Card>

    <Card title="Import received invoice" icon="https://assets.invopop.com/flags/fi.svg" horizontal>
      <div class="pop-count"><Icon icon="https://assets.invopop.com/icons/pops.svg" /> 3</div>
      Download one received document and convert it into a GOBL invoice, attaching the original XML and the PDF.
    </Card>
  </Tab>

  <Tab title="Workflows">
    Invoice workflows

    <AccordionGroup>
      <Accordion title="Finvoice send invoice">
        ```json Example Finvoice send invoice workflow theme={"system"}
        {
            "name": "Finvoice send invoice",
            "description": "Issue an invoice to a Finnish receiver",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "bc138fa6-9172-11f1-b7bf-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "bc177c32-9172-11f1-9d66-92000767c8b7",
                    "name": "Add sequential code",
                    "provider": "sequence.enumerate",
                    "summary": "Dynamic · Finvoice · 000001",
                    "config": {
                        "name": "Finvoice",
                        "padding": 6,
                        "start": 1
                    }
                },
                {
                    "id": "bc177d5b-9172-11f1-b7a4-92000767c8b7",
                    "name": "Sign envelope",
                    "provider": "silo.close"
                },
                {
                    "id": "bc177de4-9172-11f1-83e5-92000767c8b7",
                    "name": "Send invoice",
                    "provider": "gov-fi.send"
                },
                {
                    "id": "bc177e3d-9172-11f1-8812-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `sent`{.state .sent}",
                    "config": {
                        "state": "sent"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "bc177e9e-9172-11f1-8438-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>

    Party workflows

    <AccordionGroup>
      <Accordion title="Finvoice register party">
        ```json Example Finvoice register party workflow theme={"system"}
        {
            "name": "Finvoice register party",
            "description": "Register a party so it can send e-invoices in Finland, once its representative has signed the authorization. Finnish parties can also receive",
            "schema": "org/party",
            "steps": [
                {
                    "id": "bc177ef2-9172-11f1-8c54-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `processing`{.state .processing}",
                    "config": {
                        "state": "processing"
                    }
                },
                {
                    "id": "874e856a-a0b4-11f1-a9bb-92000767c8b7",
                    "name": "Sign authorisation for Finland",
                    "provider": "gov-fi.sign"
                },
                {
                    "id": "875129e9-a0b4-11f1-b569-92000767c8b7",
                    "name": "Wait for Finland agreement approval",
                    "provider": "gov-fi.wait.approval"
                },
                {
                    "id": "bc177f3b-9172-11f1-8204-92000767c8b7",
                    "name": "Register party in Finland",
                    "provider": "gov-fi.register"
                },
                {
                    "id": "bc177f7d-9172-11f1-bb70-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `registered`{.state .registered}",
                    "config": {
                        "state": "registered"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "bc177fc4-9172-11f1-a165-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>

    Reception workflows

    <AccordionGroup>
      <Accordion title="Finvoice sync received invoices">
        ```json Example Finvoice sync received invoices workflow theme={"system"}
        {
            "name": "Finvoice sync received invoices",
            "description": "Sweep a registered party's inbox at the operator and dispatch import jobs",
            "schema": "org/party",
            "steps": [
                {
                    "id": "bc178004-9172-11f1-b2b4-92000767c8b7",
                    "name": "Sync received invoices",
                    "provider": "gov-fi.sync"
                }
            ],
            "rescue": []
        }
        ```
      </Accordion>

      <Accordion title="Finvoice import invoice">
        ```json Example Finvoice import invoice workflow theme={"system"}
        {
            "name": "Finvoice import invoice",
            "description": "Import a received invoice",
            "schema": "bill/invoice",
            "steps": [
                {
                    "id": "bc178046-9172-11f1-ac3d-92000767c8b7",
                    "name": "Import received invoice",
                    "provider": "gov-fi.import"
                },
                {
                    "id": "bc178096-9172-11f1-90ae-92000767c8b7",
                    "name": "Set folder",
                    "provider": "silo.folder",
                    "summary": "Set folder to `Invoices · Expenses`{.font-medium}",
                    "config": {
                        "folder": "expenses"
                    }
                },
                {
                    "id": "bc1780dc-9172-11f1-b338-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `registered`{.state .registered}",
                    "config": {
                        "state": "registered"
                    }
                }
            ],
            "rescue": [
                {
                    "id": "bc17811a-9172-11f1-ae07-92000767c8b7",
                    "name": "Set state",
                    "provider": "silo.state",
                    "summary": "Set state to `error`{.state .error}",
                    "config": {
                        "state": "error"
                    }
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Documents">
    <AccordionGroup>
      <Accordion title="Finland supplier">
        A Finnish company with its Business ID (y-tunnus) as the tax ID and its e-invoice address as an endpoint: `iso6523-actorid-upis::0216:` followed by the OVT code (`0037` plus the Business ID without its hyphen). Registration adds the endpoint to the party.

        ```json Finland supplier example expandable theme={"system"}
        {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Aurora Ohjelmistot Oy",
            "tax_id": {
                "country": "FI",
                "code": "26174164"
            },
            "endpoints": [
                {
                    "uri": "iso6523-actorid-upis::0216:003726174164"
                }
            ],
            "addresses": [
                {
                    "num": "12",
                    "street": "Mannerheimintie",
                    "locality": "Helsinki",
                    "code": "00100",
                    "country": "FI"
                }
            ],
            "emails": [
                {
                    "addr": "laskutus@auroraohjelmistot.fi"
                }
            ],
            "people": [
                {
                    "name": {
                        "given": "Aino",
                        "surname": "Virtanen"
                    },
                    "role": "CEO",
                    "identities": [
                        {
                            "code": "PA1234567"
                        }
                    ]
                }
            ]
        }
        ```

        A supplier outside Finland uses its own country's tax ID and its own electronic address, such as a Swedish company's Org.nr under scheme `0007`. It can send through this app, but not receive. See [suppliers outside Finland](/guides/fi-finvoice-supplier#suppliers-outside-finland).
      </Accordion>

      <Accordion title="Finland customer">
        The receiving side of a Finnish invoice, with the same identity shape as a Finnish supplier: y-tunnus tax ID and an OVT e-invoice address under scheme `0216`. Look receivers up at [verkkolaskuosoite.fi](https://verkkolaskuosoite.fi).

        ```json Finland customer example expandable theme={"system"}
        {
            "$schema": "https://gobl.org/draft-0/org/party",
            "name": "Pohjola Rakennus Oy",
            "tax_id": {
                "country": "FI",
                "code": "11223349"
            },
            "endpoints": [
                {
                    "uri": "iso6523-actorid-upis::0216:003711223349"
                }
            ],
            "addresses": [
                {
                    "num": "8",
                    "street": "Hämeenkatu",
                    "locality": "Tampere",
                    "code": "33100",
                    "country": "FI"
                }
            ],
            "emails": [
                {
                    "addr": "ostolaskut@pohjolarakennus.fi"
                }
            ]
        }
        ```
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="Example B2B invoice">
        In this example, we're issuing a B2B invoice from a Finnish supplier to another Finnish business.

        Notice:

        * the `$addons` field is set to `fi-finvoice-v3`, which enforces the payment data Finvoice requires on every Finnish invoice,
        * both parties carry their e-invoice address as an endpoint: `iso6523-actorid-upis::0216:` followed by an OVT code (`0037` followed by the Business ID without its hyphen),
        * the `payment` block carries an IBAN, a payment reference (an ISO 11649 `RF` reference here), and a dated due date; all three are required,
        * the invoice includes VAT at the standard Finnish rate of 25.5%, and,
        * there are no calculations in some fields; these will be made automatically when uploading.

        <CodeGroup>
          ```json Finland B2B invoice theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": ["fi-finvoice-v3"],
            "type": "standard",
            "series": "SAMPLE",
            "code": "0042",
            "issue_date": "2026-08-01",
            "currency": "EUR",
            "supplier": {
              "name": "Aurora Ohjelmistot Oy",
              "tax_id": {
                "country": "FI",
                "code": "26174164"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003726174164"
                }
              ],
              "addresses": [
                {
                  "num": "12",
                  "street": "Mannerheimintie",
                  "locality": "Helsinki",
                  "code": "00100",
                  "country": "FI"
                }
              ]
            },
            "customer": {
              "name": "Pohjola Rakennus Oy",
              "tax_id": {
                "country": "FI",
                "code": "11223349"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003711223349"
                }
              ],
              "addresses": [
                {
                  "num": "8",
                  "street": "Hämeenkatu",
                  "locality": "Tampere",
                  "code": "33100",
                  "country": "FI"
                }
              ]
            },
            "lines": [
              {
                "quantity": "10",
                "item": {
                  "name": "Software development services",
                  "price": "85.00"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "percent": "25.5%"
                  }
                ]
              }
            ],
            "payment": {
              "instructions": {
                "key": "credit-transfer",
                "ref": "RF1310023",
                "credit_transfer": [
                  {
                    "iban": "FI2112345600000785",
                    "bic": "NDEAFIHH"
                  }
                ]
              },
              "terms": {
                "due_dates": [
                  {
                    "date": "2026-08-15",
                    "percent": "100%"
                  }
                ]
              }
            }
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "FI",
          	"$addons": [
          		"eu-en16931-v2017",
          		"fi-finvoice-v3"
          	],
          	"type": "standard",
          	"series": "SAMPLE",
          	"code": "0042",
          	"issue_date": "2026-08-01",
          	"currency": "EUR",
          	"tax": {
          		"ext": {
          			"untdid-document-type": "380"
          		}
          	},
          	"supplier": {
          		"name": "Aurora Ohjelmistot Oy",
          		"tax_id": {
          			"country": "FI",
          			"code": "26174164"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003726174164"
          			}
          		],
          		"addresses": [
          			{
          				"num": "12",
          				"street": "Mannerheimintie",
          				"locality": "Helsinki",
          				"code": "00100",
          				"country": "FI"
          			}
          		]
          	},
          	"customer": {
          		"name": "Pohjola Rakennus Oy",
          		"tax_id": {
          			"country": "FI",
          			"code": "11223349"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003711223349"
          			}
          		],
          		"addresses": [
          			{
          				"num": "8",
          				"street": "Hämeenkatu",
          				"locality": "Tampere",
          				"code": "33100",
          				"country": "FI"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "10",
          			"item": {
          				"name": "Software development services",
          				"price": "85.00",
          				"unit": "one"
          			},
          			"sum": "850.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"percent": "25.5%",
          					"ext": {
          						"untdid-tax-category": "S"
          					}
          				}
          			],
          			"total": "850.00"
          		}
          	],
          	"payment": {
          		"terms": {
          			"due_dates": [
          				{
          					"date": "2026-08-15",
          					"amount": "1066.75",
          					"percent": "100%"
          				}
          			]
          		},
          		"instructions": {
          			"key": "credit-transfer",
          			"ref": "RF1310023",
          			"credit_transfer": [
          				{
          					"iban": "FI2112345600000785",
          					"bic": "NDEAFIHH"
          				}
          			],
          			"ext": {
          				"untdid-payment-means": "30"
          			}
          		}
          	},
          	"totals": {
          		"sum": "850.00",
          		"total": "850.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"ext": {
          								"untdid-tax-category": "S"
          							},
          							"base": "850.00",
          							"percent": "25.5%",
          							"amount": "216.75"
          						}
          					],
          					"amount": "216.75"
          				}
          			],
          			"sum": "216.75"
          		},
          		"tax": "216.75",
          		"total_with_tax": "1066.75",
          		"payable": "1066.75"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>

      <Accordion title="Example B2G invoice">
        In this example, we're invoicing a Finnish public body, the segment where e-invoicing is mandatory.

        Notice:

        * the `ordering.purchases` code starts with `V1` and the `ordering.contracts` code starts with `VSK1`, following the Finnish state's reference conventions; the state rejects invoices that don't follow them,
        * there is at most one order number and one agreement number, as the state requires,
        * the payment reference here is a Finnish *viitenumero* (banking reference number), the domestic alternative to the `RF` form, and,
        * everything else works exactly like the B2B invoice, payment block included.

        <CodeGroup>
          ```json Finland B2G invoice theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": ["fi-finvoice-v3"],
            "type": "standard",
            "series": "SAMPLE",
            "code": "0043",
            "issue_date": "2026-08-01",
            "currency": "EUR",
            "supplier": {
              "name": "Aurora Ohjelmistot Oy",
              "tax_id": {
                "country": "FI",
                "code": "26174164"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003726174164"
                }
              ],
              "addresses": [
                {
                  "num": "12",
                  "street": "Mannerheimintie",
                  "locality": "Helsinki",
                  "code": "00100",
                  "country": "FI"
                }
              ]
            },
            "customer": {
              "name": "Suomen Valtion Virasto",
              "tax_id": {
                "country": "FI",
                "code": "54321096"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003754321096"
                }
              ],
              "addresses": [
                {
                  "num": "1",
                  "street": "Snellmaninkatu",
                  "locality": "Helsinki",
                  "code": "00170",
                  "country": "FI"
                }
              ]
            },
            "ordering": {
              "purchases": [
                {
                  "code": "V12026001"
                }
              ],
              "contracts": [
                {
                  "code": "VSK12026001"
                }
              ]
            },
            "lines": [
              {
                "quantity": "1",
                "item": {
                  "name": "Consulting services, July 2026",
                  "price": "4500.00"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "percent": "25.5%"
                  }
                ]
              }
            ],
            "payment": {
              "instructions": {
                "key": "credit-transfer",
                "ref": "100230",
                "credit_transfer": [
                  {
                    "iban": "FI2112345600000785",
                    "bic": "NDEAFIHH"
                  }
                ]
              },
              "terms": {
                "due_dates": [
                  {
                    "date": "2026-08-31",
                    "percent": "100%"
                  }
                ]
              }
            }
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "FI",
          	"$addons": [
          		"eu-en16931-v2017",
          		"fi-finvoice-v3"
          	],
          	"type": "standard",
          	"series": "SAMPLE",
          	"code": "0043",
          	"issue_date": "2026-08-01",
          	"currency": "EUR",
          	"tax": {
          		"ext": {
          			"untdid-document-type": "380"
          		}
          	},
          	"supplier": {
          		"name": "Aurora Ohjelmistot Oy",
          		"tax_id": {
          			"country": "FI",
          			"code": "26174164"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003726174164"
          			}
          		],
          		"addresses": [
          			{
          				"num": "12",
          				"street": "Mannerheimintie",
          				"locality": "Helsinki",
          				"code": "00100",
          				"country": "FI"
          			}
          		]
          	},
          	"customer": {
          		"name": "Suomen Valtion Virasto",
          		"tax_id": {
          			"country": "FI",
          			"code": "54321096"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003754321096"
          			}
          		],
          		"addresses": [
          			{
          				"num": "1",
          				"street": "Snellmaninkatu",
          				"locality": "Helsinki",
          				"code": "00170",
          				"country": "FI"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "1",
          			"item": {
          				"name": "Consulting services, July 2026",
          				"price": "4500.00",
          				"unit": "one"
          			},
          			"sum": "4500.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"percent": "25.5%",
          					"ext": {
          						"untdid-tax-category": "S"
          					}
          				}
          			],
          			"total": "4500.00"
          		}
          	],
          	"ordering": {
          		"contracts": [
          			{
          				"code": "VSK12026001"
          			}
          		],
          		"purchases": [
          			{
          				"code": "V12026001"
          			}
          		]
          	},
          	"payment": {
          		"terms": {
          			"due_dates": [
          				{
          					"date": "2026-08-31",
          					"amount": "5647.50",
          					"percent": "100%"
          				}
          			]
          		},
          		"instructions": {
          			"key": "credit-transfer",
          			"ref": "100230",
          			"credit_transfer": [
          				{
          					"iban": "FI2112345600000785",
          					"bic": "NDEAFIHH"
          				}
          			],
          			"ext": {
          				"untdid-payment-means": "30"
          			}
          		}
          	},
          	"totals": {
          		"sum": "4500.00",
          		"total": "4500.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"ext": {
          								"untdid-tax-category": "S"
          							},
          							"base": "4500.00",
          							"percent": "25.5%",
          							"amount": "1147.50"
          						}
          					],
          					"amount": "1147.50"
          				}
          			],
          			"sum": "1147.50"
          		},
          		"tax": "1147.50",
          		"total_with_tax": "5647.50",
          		"payable": "5647.50"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>

      <Accordion title="Example credit note">
        In this example, we're issuing a credit note that corrects a previously issued invoice.

        Notice:

        * the `type` is set to `credit-note`,
        * the `preceding` array references the original invoice by its `series`, `code`, and `issue_date`, along with a `reason`,
        * the `payment` block is still present and complete; Finvoice requires the payment data on credit notes too, unlike most other European formats, and,
        * there are no calculations in some fields; these will be made automatically when uploading.

        <CodeGroup>
          ```json Finland credit note theme={"system"}
          {
            "$schema": "https://gobl.org/draft-0/bill/invoice",
            "$addons": ["fi-finvoice-v3"],
            "type": "credit-note",
            "series": "SAMPLE-CN",
            "code": "0007",
            "issue_date": "2026-08-05",
            "currency": "EUR",
            "preceding": [
              {
                "series": "SAMPLE",
                "code": "0042",
                "issue_date": "2026-08-01",
                "reason": "Partial refund for undelivered services"
              }
            ],
            "supplier": {
              "name": "Aurora Ohjelmistot Oy",
              "tax_id": {
                "country": "FI",
                "code": "26174164"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003726174164"
                }
              ],
              "addresses": [
                {
                  "num": "12",
                  "street": "Mannerheimintie",
                  "locality": "Helsinki",
                  "code": "00100",
                  "country": "FI"
                }
              ]
            },
            "customer": {
              "name": "Pohjola Rakennus Oy",
              "tax_id": {
                "country": "FI",
                "code": "11223349"
              },
              "endpoints": [
                {
                  "uri": "iso6523-actorid-upis::0216:003711223349"
                }
              ],
              "addresses": [
                {
                  "num": "8",
                  "street": "Hämeenkatu",
                  "locality": "Tampere",
                  "code": "33100",
                  "country": "FI"
                }
              ]
            },
            "lines": [
              {
                "quantity": "2",
                "item": {
                  "name": "Software development services",
                  "price": "85.00"
                },
                "taxes": [
                  {
                    "cat": "VAT",
                    "percent": "25.5%"
                  }
                ]
              }
            ],
            "payment": {
              "instructions": {
                "key": "credit-transfer",
                "ref": "RF1310023",
                "credit_transfer": [
                  {
                    "iban": "FI2112345600000785",
                    "bic": "NDEAFIHH"
                  }
                ]
              },
              "terms": {
                "due_dates": [
                  {
                    "date": "2026-08-19",
                    "percent": "100%"
                  }
                ]
              }
            }
          }
          ```

          ```json Built version theme={"system"}
          {
          	"$schema": "https://gobl.org/draft-0/bill/invoice",
          	"$regime": "FI",
          	"$addons": [
          		"eu-en16931-v2017",
          		"fi-finvoice-v3"
          	],
          	"type": "credit-note",
          	"series": "SAMPLE-CN",
          	"code": "0007",
          	"issue_date": "2026-08-05",
          	"currency": "EUR",
          	"preceding": [
          		{
          			"issue_date": "2026-08-01",
          			"series": "SAMPLE",
          			"code": "0042",
          			"reason": "Partial refund for undelivered services"
          		}
          	],
          	"tax": {
          		"ext": {
          			"untdid-document-type": "381"
          		}
          	},
          	"supplier": {
          		"name": "Aurora Ohjelmistot Oy",
          		"tax_id": {
          			"country": "FI",
          			"code": "26174164"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003726174164"
          			}
          		],
          		"addresses": [
          			{
          				"num": "12",
          				"street": "Mannerheimintie",
          				"locality": "Helsinki",
          				"code": "00100",
          				"country": "FI"
          			}
          		]
          	},
          	"customer": {
          		"name": "Pohjola Rakennus Oy",
          		"tax_id": {
          			"country": "FI",
          			"code": "11223349"
          		},
          		"endpoints": [
          			{
          				"uri": "iso6523-actorid-upis::0216:003711223349"
          			}
          		],
          		"addresses": [
          			{
          				"num": "8",
          				"street": "Hämeenkatu",
          				"locality": "Tampere",
          				"code": "33100",
          				"country": "FI"
          			}
          		]
          	},
          	"lines": [
          		{
          			"i": 1,
          			"quantity": "2",
          			"item": {
          				"name": "Software development services",
          				"price": "85.00",
          				"unit": "one"
          			},
          			"sum": "170.00",
          			"taxes": [
          				{
          					"cat": "VAT",
          					"key": "standard",
          					"percent": "25.5%",
          					"ext": {
          						"untdid-tax-category": "S"
          					}
          				}
          			],
          			"total": "170.00"
          		}
          	],
          	"payment": {
          		"terms": {
          			"due_dates": [
          				{
          					"date": "2026-08-19",
          					"amount": "213.35",
          					"percent": "100%"
          				}
          			]
          		},
          		"instructions": {
          			"key": "credit-transfer",
          			"ref": "RF1310023",
          			"credit_transfer": [
          				{
          					"iban": "FI2112345600000785",
          					"bic": "NDEAFIHH"
          				}
          			],
          			"ext": {
          				"untdid-payment-means": "30"
          			}
          		}
          	},
          	"totals": {
          		"sum": "170.00",
          		"total": "170.00",
          		"taxes": {
          			"categories": [
          				{
          					"code": "VAT",
          					"rates": [
          						{
          							"key": "standard",
          							"ext": {
          								"untdid-tax-category": "S"
          							},
          							"base": "170.00",
          							"percent": "25.5%",
          							"amount": "43.35"
          						}
          					],
          					"amount": "43.35"
          				}
          			],
          			"sum": "43.35"
          		},
          		"tax": "43.35",
          		"total_with_tax": "213.35",
          		"payable": "213.35"
          	}
          }
          ```
        </CodeGroup>
      </Accordion>
    </AccordionGroup>

    Copy and paste these documents into the [GOBL builder](https://build.gobl.org) in order to preview and verify them.
  </Tab>
</Tabs>

***

<AccordionGroup>
  <Accordion title="🇫🇮 Invopop resources for Finland">
    | | |
    | - | - |
    | Compliance | <Icon icon="https://assets.invopop.com/flags/fi.svg" /> [Invoicing compliance in Finland](/compliance/finland)<br /> <Icon icon="timeline" /> [Compliance timeline](/timelines/finland) |
    | Apps | <Icon icon="https://assets.invopop.com/flags/fi.svg" /> [Finland](/apps/finland)<br /> <Icon icon="https://assets.invopop.com/apps/peppol/icon.svg" /> [Peppol](/apps/peppol) |
    | Guides | <Icon icon="book" /> [Supplier registration](/guides/fi-finvoice-supplier)<br /> <Icon icon="book" /> [Issuing invoices](/guides/fi-finvoice)<br /> <Icon icon="book" /> [Receiving invoices](/guides/fi-finvoice-receiving)<br /> <Icon icon="book" /> [Peppol guide](/guides/peppol) |
    | FAQ | <Icon icon="square-question" /> [Finland FAQ](/faq/finland) |
    | GOBL | <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [Finland Tax Regime](https://docs.gobl.org/regimes/fi)<br /> <Icon icon="https://assets.invopop.com/icons/gobl.svg" /> [EU EN 16931 Addon](https://docs.gobl.org/addons/eu-en16931-v2017) |
    | GitHub | <Icon icon="github" /> [gobl.fi.finvoice](https://github.com/invopop/gobl.fi.finvoice)<br /> <Icon icon="github" /> [gobl.ubl](https://github.com/invopop/gobl.ubl) |
  </Accordion>
</AccordionGroup>

<Card title="Participate in our community" icon="forumbee" href="https://community.invopop.com" arrow="true" horizontal>
  Ask and answer questions about the Finland app →
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.