Fortnox Invoices API

Create, read, update, cancel, and list customer invoices, plus actions such as bookkeep, credit, e-mail, and print. Represents accounts-receivable sales invoices in a Fortnox company file.

OpenAPI Specification

fortnox-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Fortnox REST API (Representative Subset)
  description: >-
    Grounded OpenAPI description of the Fortnox REST API - the Swedish cloud
    accounting/ERP platform for SMBs and accounting bureaus. Base URL is
    https://api.fortnox.se/3/. Authentication is OAuth2 Authorization Code Flow:
    each request carries the Access-Token (Bearer JWT, 1h) header plus the
    Client-Secret header issued to your Fortnox app. The old fixed
    Access-Token/Client-Secret integration keys were deprecated 2025-04-30.


    SCOPE / FIDELITY NOTE: The Fortnox API exposes 40+ resources. This document
    ships a solid, representative SUBSET (Invoices, Customers, Articles, Orders,
    Offers, Vouchers, Accounts, Financial Years, Suppliers, Supplier Invoices,
    Projects) with pragmatic, partial field-level schemas. Paths, methods,
    identifiers, the wrapper-object response envelope (e.g. { "Invoice": {...} },
    { "Invoices": [...] }), and auth are grounded in Fortnox's developer
    documentation. Per-field property coverage is intentionally partial and
    MODELED/summarized from the docs, not transcribed field-for-field for every
    resource. Verify exact field sets and validation against
    https://api.fortnox.se/apidocs before production use.
  version: '3.0'
  contact:
    name: Fortnox Developer
    url: https://www.fortnox.se/developer
  license:
    name: Fortnox API License / Terms
    url: https://www.fortnox.se/developer
servers:
  - url: https://api.fortnox.se/3
    description: Fortnox REST API v3
security:
  - accessToken: []
    clientSecret: []
tags:
  - name: Invoices
    description: Accounts-receivable customer invoices.
  - name: Customers
    description: Customer register.
  - name: Articles
    description: Article (product/service) register.
  - name: Orders
    description: Sales orders.
  - name: Offers
    description: Offers (quotations).
  - name: Vouchers
    description: Accounting vouchers (journal entries).
  - name: Accounts
    description: Chart of accounts.
  - name: Financial Years
    description: Financial (accounting) years.
  - name: Suppliers
    description: Supplier register.
  - name: Supplier Invoices
    description: Inbound accounts-payable supplier invoices.
  - name: Projects
    description: Projects for tagging and reporting.
paths:
  /invoices:
    get:
      operationId: listInvoices
      tags: [Invoices]
      summary: List invoices
      description: Lists invoices. Supports filtering and pagination via query parameters.
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
        - name: filter
          in: query
          description: Predefined filter such as cancelled, fullypaid, unpaid, unpaidoverdue, unbooked.
          schema:
            type: string
      responses:
        '200':
          description: A list of invoices.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Invoices:
                    type: array
                    items:
                      $ref: '#/components/schemas/InvoiceListItem'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    post:
      operationId: createInvoice
      tags: [Invoices]
      summary: Create an invoice
      description: Creates a new invoice. The payload is wrapped in an `Invoice` object.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Invoice:
                  $ref: '#/components/schemas/Invoice'
      responses:
        '201':
          $ref: '#/components/responses/InvoiceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /invoices/{DocumentNumber}:
    parameters:
      - $ref: '#/components/parameters/DocumentNumber'
    get:
      operationId: getInvoice
      tags: [Invoices]
      summary: Retrieve an invoice
      responses:
        '200':
          $ref: '#/components/responses/InvoiceResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateInvoice
      tags: [Invoices]
      summary: Update an invoice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Invoice:
                  $ref: '#/components/schemas/Invoice'
      responses:
        '200':
          $ref: '#/components/responses/InvoiceResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers:
    get:
      operationId: listCustomers
      tags: [Customers]
      summary: List customers
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of customers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Customers:
                    type: array
                    items:
                      $ref: '#/components/schemas/Customer'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createCustomer
      tags: [Customers]
      summary: Create a customer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Customer:
                  $ref: '#/components/schemas/Customer'
      responses:
        '201':
          $ref: '#/components/responses/CustomerResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{CustomerNumber}:
    parameters:
      - $ref: '#/components/parameters/CustomerNumber'
    get:
      operationId: getCustomer
      tags: [Customers]
      summary: Retrieve a customer
      responses:
        '200':
          $ref: '#/components/responses/CustomerResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateCustomer
      tags: [Customers]
      summary: Update a customer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Customer:
                  $ref: '#/components/schemas/Customer'
      responses:
        '200':
          $ref: '#/components/responses/CustomerResponse'
    delete:
      operationId: deleteCustomer
      tags: [Customers]
      summary: Delete a customer
      responses:
        '204':
          description: Customer deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /articles:
    get:
      operationId: listArticles
      tags: [Articles]
      summary: List articles
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of articles.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Articles:
                    type: array
                    items:
                      $ref: '#/components/schemas/Article'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createArticle
      tags: [Articles]
      summary: Create an article
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Article:
                  $ref: '#/components/schemas/Article'
      responses:
        '201':
          $ref: '#/components/responses/ArticleResponse'
  /articles/{ArticleNumber}:
    parameters:
      - name: ArticleNumber
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getArticle
      tags: [Articles]
      summary: Retrieve an article
      responses:
        '200':
          $ref: '#/components/responses/ArticleResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateArticle
      tags: [Articles]
      summary: Update an article
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Article:
                  $ref: '#/components/schemas/Article'
      responses:
        '200':
          $ref: '#/components/responses/ArticleResponse'
    delete:
      operationId: deleteArticle
      tags: [Articles]
      summary: Delete an article
      responses:
        '204':
          description: Article deleted.
  /orders:
    get:
      operationId: listOrders
      tags: [Orders]
      summary: List orders
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of orders.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Orders:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrderListItem'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createOrder
      tags: [Orders]
      summary: Create an order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Order:
                  $ref: '#/components/schemas/Order'
      responses:
        '201':
          $ref: '#/components/responses/OrderResponse'
  /orders/{DocumentNumber}:
    parameters:
      - $ref: '#/components/parameters/DocumentNumber'
    get:
      operationId: getOrder
      tags: [Orders]
      summary: Retrieve an order
      responses:
        '200':
          $ref: '#/components/responses/OrderResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateOrder
      tags: [Orders]
      summary: Update an order
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Order:
                  $ref: '#/components/schemas/Order'
      responses:
        '200':
          $ref: '#/components/responses/OrderResponse'
  /offers:
    get:
      operationId: listOffers
      tags: [Offers]
      summary: List offers
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of offers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Offers:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferListItem'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createOffer
      tags: [Offers]
      summary: Create an offer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Offer:
                  $ref: '#/components/schemas/Offer'
      responses:
        '201':
          $ref: '#/components/responses/OfferResponse'
  /offers/{DocumentNumber}:
    parameters:
      - $ref: '#/components/parameters/DocumentNumber'
    get:
      operationId: getOffer
      tags: [Offers]
      summary: Retrieve an offer
      responses:
        '200':
          $ref: '#/components/responses/OfferResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /vouchers:
    get:
      operationId: listVouchers
      tags: [Vouchers]
      summary: List vouchers
      parameters:
        - name: financialyear
          in: query
          description: Financial year ID to scope the vouchers to.
          schema:
            type: integer
      responses:
        '200':
          description: A list of vouchers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Vouchers:
                    type: array
                    items:
                      $ref: '#/components/schemas/Voucher'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createVoucher
      tags: [Vouchers]
      summary: Create a voucher
      description: Posts a double-entry voucher into a voucher series.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Voucher:
                  $ref: '#/components/schemas/Voucher'
      responses:
        '201':
          $ref: '#/components/responses/VoucherResponse'
  /vouchers/{VoucherSeries}/{VoucherNumber}:
    parameters:
      - name: VoucherSeries
        in: path
        required: true
        schema:
          type: string
      - name: VoucherNumber
        in: path
        required: true
        schema:
          type: integer
      - name: financialyear
        in: query
        schema:
          type: integer
    get:
      operationId: getVoucher
      tags: [Vouchers]
      summary: Retrieve a voucher
      responses:
        '200':
          $ref: '#/components/responses/VoucherResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /accounts:
    get:
      operationId: listAccounts
      tags: [Accounts]
      summary: List accounts
      parameters:
        - name: financialyear
          in: query
          schema:
            type: integer
      responses:
        '200':
          description: A list of accounts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Accounts:
                    type: array
                    items:
                      $ref: '#/components/schemas/Account'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createAccount
      tags: [Accounts]
      summary: Create an account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Account:
                  $ref: '#/components/schemas/Account'
      responses:
        '201':
          $ref: '#/components/responses/AccountResponse'
  /accounts/{Number}:
    parameters:
      - name: Number
        in: path
        required: true
        schema:
          type: integer
      - name: financialyear
        in: query
        schema:
          type: integer
    get:
      operationId: getAccount
      tags: [Accounts]
      summary: Retrieve an account
      responses:
        '200':
          $ref: '#/components/responses/AccountResponse'
    put:
      operationId: updateAccount
      tags: [Accounts]
      summary: Update an account
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Account:
                  $ref: '#/components/schemas/Account'
      responses:
        '200':
          $ref: '#/components/responses/AccountResponse'
  /financialyears:
    get:
      operationId: listFinancialYears
      tags: [Financial Years]
      summary: List financial years
      responses:
        '200':
          description: A list of financial years.
          content:
            application/json:
              schema:
                type: object
                properties:
                  FinancialYears:
                    type: array
                    items:
                      $ref: '#/components/schemas/FinancialYear'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createFinancialYear
      tags: [Financial Years]
      summary: Create a financial year
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                FinancialYear:
                  $ref: '#/components/schemas/FinancialYear'
      responses:
        '201':
          description: Financial year created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  FinancialYear:
                    $ref: '#/components/schemas/FinancialYear'
  /suppliers:
    get:
      operationId: listSuppliers
      tags: [Suppliers]
      summary: List suppliers
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of suppliers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Suppliers:
                    type: array
                    items:
                      $ref: '#/components/schemas/Supplier'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createSupplier
      tags: [Suppliers]
      summary: Create a supplier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Supplier:
                  $ref: '#/components/schemas/Supplier'
      responses:
        '201':
          $ref: '#/components/responses/SupplierResponse'
  /suppliers/{SupplierNumber}:
    parameters:
      - name: SupplierNumber
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getSupplier
      tags: [Suppliers]
      summary: Retrieve a supplier
      responses:
        '200':
          $ref: '#/components/responses/SupplierResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateSupplier
      tags: [Suppliers]
      summary: Update a supplier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Supplier:
                  $ref: '#/components/schemas/Supplier'
      responses:
        '200':
          $ref: '#/components/responses/SupplierResponse'
  /supplierinvoices:
    get:
      operationId: listSupplierInvoices
      tags: [Supplier Invoices]
      summary: List supplier invoices
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: A list of supplier invoices.
          content:
            application/json:
              schema:
                type: object
                properties:
                  SupplierInvoices:
                    type: array
                    items:
                      $ref: '#/components/schemas/SupplierInvoice'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createSupplierInvoice
      tags: [Supplier Invoices]
      summary: Create a supplier invoice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                SupplierInvoice:
                  $ref: '#/components/schemas/SupplierInvoice'
      responses:
        '201':
          $ref: '#/components/responses/SupplierInvoiceResponse'
  /supplierinvoices/{GivenNumber}:
    parameters:
      - name: GivenNumber
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getSupplierInvoice
      tags: [Supplier Invoices]
      summary: Retrieve a supplier invoice
      responses:
        '200':
          $ref: '#/components/responses/SupplierInvoiceResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /projects:
    get:
      operationId: listProjects
      tags: [Projects]
      summary: List projects
      responses:
        '200':
          description: A list of projects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Projects:
                    type: array
                    items:
                      $ref: '#/components/schemas/Project'
                  MetaInformation:
                    $ref: '#/components/schemas/MetaInformation'
    post:
      operationId: createProject
      tags: [Projects]
      summary: Create a project
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Project:
                  $ref: '#/components/schemas/Project'
      responses:
        '201':
          $ref: '#/components/responses/ProjectResponse'
  /projects/{ProjectNumber}:
    parameters:
      - name: ProjectNumber
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getProject
      tags: [Projects]
      summary: Retrieve a project
      responses:
        '200':
          $ref: '#/components/responses/ProjectResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateProject
      tags: [Projects]
      summary: Update a project
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Project:
                  $ref: '#/components/schemas/Project'
      responses:
        '200':
          $ref: '#/components/responses/ProjectResponse'
    delete:
      operationId: deleteProject
      tags: [Projects]
      summary: Delete a project
      responses:
        '204':
          description: Project deleted.
components:
  securitySchemes:
    accessToken:
      type: apiKey
      in: header
      name: Access-Token
      description: >-
        OAuth2 Access-Token (Bearer JWT, valid 1 hour) obtained via the
        Authorization Code Flow from https://apps.fortnox.se/oauth-v1/token.
        Sent in the Access-Token header on every request.
    clientSecret:
      type: apiKey
      in: header
      name: Client-Secret
      description: >-
        The Client-Secret issued to your registered Fortnox developer
        application. Sent in the Client-Secret header alongside the Access-Token
        on every request.
  parameters:
    page:
      name: page
      in: query
      description: Page number for paginated results.
      schema:
        type: integer
        minimum: 1
    limit:
      name: limit
      in: query
      description: Number of records per page (max 500).
      schema:
        type: integer
        maximum: 500
    DocumentNumber:
      name: DocumentNumber
      in: path
      required: true
      description: The document number identifying the invoice/order/offer.
      schema:
        type: string
    CustomerNumber:
      name: CustomerNumber
      in: path
      required: true
      description: The customer number.
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid Access-Token / Client-Secret.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Malformed request or validation error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: >-
        Rate limit exceeded (300 requests/minute per access-token; ~25 per 5s
        sliding window).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InvoiceResponse:
      description: A single invoice.
      content:
        application/json:
          schema:
            type: object
            properties:
              Invoice:
                $ref: '#/components/schemas/Invoice'
    CustomerResponse:
      description: A single customer.
      content:
        application/json:
          schema:
            type: object
            properties:
              Customer:
                $ref: '#/components/schemas/Customer'
    ArticleResponse:
      description: A single article.
      content:
        application/json:
          schema:
            type: object
            properties:
              Article:
                $ref: '#/components/schemas/Article'
    OrderResponse:
      description: A single order.
      content:
        application/json:
          schema:
            type: object
            properties:
              Order:
                $ref: '#/components/schemas/Order'
    OfferResponse:
      description: A single offer.
      content:
        application/json:
          schema:
            type: object
            properties:
              Offer:
                $ref: '#/components/schemas/Offer'
    VoucherResponse:
      description: A single voucher.
      content:
        application/json:
          schema:
            type: object
            properties:
              Voucher:
                $ref: '#/components/schemas/Voucher'
    AccountResponse:
      description: A single account.
      content:
        application/json:
          schema:
            type: object
            properties:
              Account:
                $ref: '#/components/schemas/Account'
    SupplierResponse:
      description: A single supplier.
      content:
        application/json:
          schema:
            type: object
            properties:
              Supplier:
                $ref: '#/components/schemas/Supplier'
    SupplierInvoiceResponse:
      description: A single supplier invoice.
      content:
        application/json:
          schema:
            type: object
            properties:
              SupplierInvoice:
                $ref: '#/components/schemas/SupplierInvoice'
    ProjectResponse:
      description: A single project.
      content:
        application/json:
          schema:
            type: object
            properties:
              Project:
                $ref: '#/components/schemas/Project'
  schemas:
    MetaInformation:
      type: object
      description: Pagination metadata returned on list endpoints.
      properties:
        '@TotalResources':
          type: integer
        '@TotalPages':
          type: integer
        '@CurrentPage':
          type: integer
    ErrorResponse:
      type: object
      description: Fortnox error envelope.
      properties:
        ErrorInformation:
          type: object
          properties:
            Error:
              type: integer
            Message:
              type: string
            Code:
              type: integer
    InvoiceRow:
      type: object
      description: A single line item on an invoice, order, or offer.
      properties:
        ArticleNumber:
          type: string
        Description:
          type: string
        DeliveredQuantity:
          type: string
        Price:
          type: number
        VAT:
          type: number
        AccountNumber:
          type: integer
        Unit:
          type: string
    Invoice:
      type: object
      description: >-
        Accounts-receivable customer invoice. Partial/modeled field set - see
        https://api.fortnox.se/apidocs for the full schema.
      properties:
        DocumentNumber:
          type: string
          readOnly: true
        CustomerNumber:
          type: string
        CustomerName:
          type: string
        InvoiceDate:
          type: string
          format: date
        DueDate:
          type: string
          format: date
        Currency:
          type: string
          example: SEK
        Total:
          type: number
        Balance:
          type: number
        Booked:
          type: boolean
        Cancelled:
          type: boolean
        InvoiceRows:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceRow'
      required:
        - CustomerNumber
    InvoiceListItem:
      type: object
      properties:
        DocumentNumber:
          type: string
        CustomerNumber:
          type: string
        CustomerName:
          type: string
        InvoiceDate:
          type: string
          format: date
        Total:
          type: number
        Balance:
          type: number
        Currency:
          type: string
    Customer:
      type: object
      description: A customer in the customer register.
      properties:
        CustomerNumber:
          type: string
        Name:
          type: string
        OrganisationNumber:
          type: string
        Email:
          type: string
        Address1:
          type: string
        City:
          type: string
        ZipCode:
          type: string
        CountryCode:
          type: string
        Currency:
          type: string
        VATNumber:
          type: string
        Type:
          type: string
          enum: [COMPANY, PRIVATE]
      required:
        - Name
    Article:
      type: object
      description: A product or service article.
      properties:
        ArticleNumber:
          type: string
        Description:
          type: string
        Type:
          type: string
          enum: [STOCK, SERVICE]
        SalesPrice:
          type: number
        PurchasePrice:
          type: number
        Unit:
          type: string
        QuantityInStock:
          type: number
        SalesAccount:
          type: integer
        VAT:
          type: number
      required:
        - Description
    Order:
      type: object
      description: A sales order.
      properties:
        DocumentNumber:
          type: string
          readOnly: true
        CustomerNumber:
          type: string
        CustomerName:
          type: string
        OrderDate:
          type: string
          format: date
        DeliveryDate:
          type: string
          format: date
        Currency:
          type: string
        Total:
          type: number
        OrderRows:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceRow'
      required:
        - CustomerNumber
    OrderListItem:
      type: object
      properties:
        DocumentNumber:
          type: string
        CustomerNumber:
          type: string
        CustomerName:
          type: string
        OrderDate:
          type: string
          format: date
        Total:
          type: number
    Offer:
      type: object
      description: An offer (quotation).
      properties:
        DocumentNumber:
          type: string
          readOnly: true
        CustomerNumber:
          type: string
        CustomerName:
          type: string
        OfferDate:
          type: string
          format: date
        ExpireDate:
          type: string
          format: date
        Currency:
          type: string
        Total:
          type: number
        Off

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fortnox/refs/heads/main/openapi/fortnox-openapi.yml