> ## Documentation Index
> Fetch the complete documentation index at: https://help.onetsolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.

# [Services] List invoices for a service engagement



## OpenAPI

````yaml https://api.onetsolutions.net/schema get /v1/organizations/{organization_id}/services/{id}/invoices
openapi: 3.0.3
info:
  title: OnetSolutions API
  version: v1 (v1)
  description: >

    ## Overview


    The OnetSolutions API provides programmatic access to manage your cloud
    infrastructure, domains, and web hosting services.


    ## Authentication


    All API requests require authentication using one of the following methods:


    - **JWT Token**: Obtain a token via login endpoints and include it in the
    `Authorization: Bearer <token>` header

    - **API Key**: Generate an API key from your account settings and use it as
    `Authorization: Bearer sk-onetsolutions-...`


    ## Rate Limiting


    API requests are rate-limited to ensure fair usage:

    - **Standard**: 1000 requests per minute

    - **Burst**: 100 requests per second


    ## Pagination


    List endpoints return paginated results. Use `page` and `page_size` query
    parameters.


    ## Error Handling


    The API uses standard HTTP status codes:

    - `200` Success

    - `201` Created

    - `400` Bad Request

    - `401` Unauthorized

    - `403` Forbidden

    - `404` Not Found

    - `429` Too Many Requests
servers:
  - url: https://api.onetsolutions.net
    description: Production
security: []
tags:
  - name: Authentication
    description: >-
      Login, passwordless authentication, MFA, OAuth providers, and token
      management.
  - name: Organizations
    description: >-
      Organization management, members, roles, modules, audit logs, and
      notification settings.
  - name: Projects
    description: Project management, team members, and project-scoped resources.
  - name: Compute
    description: >-
      Cloud instances, volumes, snapshots, backups, VPCs, firewalls, SSH keys,
      uptime monitors, and instance tasks.
  - name: Domains
    description: >-
      Domain availability, registration, transfers, DNS zones, DNS records, and
      TLD information.
  - name: Web Hosting
    description: >-
      cPanel-based web hosting, emails, databases, subdomains, FTP accounts,
      addon domains, and SSL certificates.
paths:
  /v1/organizations/{organization_id}/services/{id}/invoices:
    get:
      tags:
        - Services
      summary: '[Services] List invoices for a service engagement'
      operationId: list_service_engagement_invoices
      parameters:
        - in: path
          name: id
          schema:
            type: string
          description: Service engagement ID
          required: true
        - in: path
          name: organization_id
          schema:
            type: string
          description: Unique identifier of the organization
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedInvoiceList'
          description: Paginated list of invoices
        '401':
          description: Authentication credentials were not provided or are invalid
        '403':
          description: User does not have permission
        '404':
          description: Service engagement not found
      security:
        - BearerAuth: []
components:
  schemas:
    PaginatedInvoiceList:
      type: object
      required:
        - count
        - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Invoice'
    Invoice:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        legacy_id:
          type: integer
          readOnly: true
        invoice_number:
          type: string
          readOnly: true
          description: 'Ex: INV-2025-00001'
        issue_date:
          type: string
          format: date
          description: Issue date
        due_date:
          type: string
          format: date
          description: Due date
        subtotal:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Sous-total HT
        tax_amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Montant TVA
        total:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Total TTC
        tax_rate:
          type: string
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          readOnly: true
          description: Taux TVA appliqué en %
        tax_country:
          type: string
          readOnly: true
          description: Pays pour la TVA
        is_reverse_charge:
          type: boolean
          readOnly: true
          description: Auto-liquidation B2B UE
        currency:
          type: string
          maxLength: 3
        status:
          enum:
            - draft
            - pending
            - paid
            - partially_paid
            - overdue
            - cancelled
            - refunded
          type: string
          description: |-
            * `draft` - Draft
            * `pending` - Pending Payment
            * `paid` - Paid
            * `partially_paid` - Partially Paid
            * `overdue` - Overdue
            * `cancelled` - Cancelled
            * `refunded` - Refunded
          x-spec-enum-id: 3df6f286433e3bb7
          readOnly: true
        paid_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        amount_paid:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
        refunded_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        cancelled_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        credit:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Credit/balance applied to this invoice
        notes:
          type: string
        pdf_file:
          type: string
          format: uri
          nullable: true
          readOnly: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceItem'
          readOnly: true
        payments:
          type: array
          items:
            $ref: '#/components/schemas/PaymentNested'
          readOnly: true
        balance_transactions:
          type: array
          items:
            $ref: '#/components/schemas/BalanceTransactionNested'
          readOnly: true
        promo_code_usages:
          type: array
          items:
            $ref: '#/components/schemas/PromoCodeUsageNested'
          readOnly: true
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderNested'
          readOnly: true
        billing_info:
          allOf:
            - $ref: '#/components/schemas/InvoiceBillingInfo'
          readOnly: true
        created:
          type: string
          format: date-time
          readOnly: true
        modified:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount_paid
        - balance_transactions
        - billing_info
        - cancelled_at
        - created
        - credit
        - due_date
        - id
        - invoice_number
        - is_reverse_charge
        - issue_date
        - items
        - legacy_id
        - modified
        - orders
        - paid_at
        - payments
        - pdf_file
        - promo_code_usages
        - refunded_at
        - status
        - subtotal
        - tax_amount
        - tax_country
        - tax_rate
        - total
    InvoiceItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        type:
          type: string
          description: 'Item type (ex: Hosting, Domain, etc.)'
          maxLength: 50
        description:
          type: string
          description: Item description with line breaks preserved
        quantity:
          type: string
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          description: Quantité (heures pour hourly)
        unit_price:
          type: string
          pattern: ^-?\d{0,8}(?:\.\d{0,4})?$
          description: Prix unitaire HT
        subtotal:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          description: Sous-total ligne HT
        taxed:
          type: boolean
          description: Whether this item is taxed
        instance:
          type: string
          format: uuid
          nullable: true
        metadata:
          description: Données supplémentaires
      required:
        - description
        - id
        - subtotal
        - unit_price
    PaymentNested:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        legacy_id:
          type: integer
          readOnly: true
        amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
        currency:
          type: string
          readOnly: true
        payment_method:
          type: object
          additionalProperties: {}
          readOnly: true
        status:
          enum:
            - pending
            - processing
            - completed
            - failed
            - refunded
          type: string
          description: |-
            * `pending` - Pending
            * `processing` - Processing
            * `completed` - Completed
            * `failed` - Failed
            * `refunded` - Refunded
          x-spec-enum-id: 13958f62b79d514f
          readOnly: true
        paid_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        created:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount
        - created
        - currency
        - id
        - legacy_id
        - paid_at
        - payment_method
        - status
    BalanceTransactionNested:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        legacy_id:
          type: integer
          readOnly: true
        transaction_type:
          enum:
            - topup
            - payment
            - refund
            - adjustment
            - promo
          type: string
          x-spec-enum-id: 6550f108f3ca7567
          readOnly: true
          description: |-
            Type de transaction

            * `topup` - Top-up (recharge)
            * `payment` - Payment (déduction)
            * `refund` - Refund (remboursement)
            * `adjustment` - Manual Adjustment
            * `promo` - Promo Code Credit
        amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Montant en EUR (positif = ajout, négatif = retrait)
        balance_before:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Solde avant la transaction
        balance_after:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Solde après la transaction
        created:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount
        - balance_after
        - balance_before
        - created
        - id
        - legacy_id
        - transaction_type
    PromoCodeUsageNested:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        promo_code_name:
          type: string
          readOnly: true
        discount_amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
          description: Montant de réduction appliqué en EUR
        created:
          type: string
          format: date-time
          readOnly: true
      required:
        - created
        - discount_amount
        - id
        - promo_code_name
    OrderNested:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        legacy_id:
          type: integer
          readOnly: true
        legacy_order_number:
          type: string
          readOnly: true
        order_date:
          type: string
          format: date-time
          readOnly: true
        amount:
          type: string
          pattern: ^-?\d{0,10}(?:\.\d{0,2})?$
          readOnly: true
        currency:
          type: string
          readOnly: true
        status:
          enum:
            - pending
            - active
            - fraud
            - cancelled
          type: string
          description: |-
            * `pending` - Pending
            * `active` - Active
            * `fraud` - Fraud
            * `cancelled` - Cancelled
          x-spec-enum-id: 338e1bf06321b7a3
          readOnly: true
        payment_gateway_name:
          type: string
          readOnly: true
          nullable: true
        created:
          type: string
          format: date-time
          readOnly: true
      required:
        - amount
        - created
        - currency
        - id
        - legacy_id
        - legacy_order_number
        - order_date
        - payment_gateway_name
        - status
    InvoiceBillingInfo:
      type: object
      properties:
        billing_name:
          type: string
          readOnly: true
        billing_email:
          type: string
          format: email
          readOnly: true
        company_name:
          type: string
          readOnly: true
        address_1:
          type: string
          readOnly: true
        address_2:
          type: string
          readOnly: true
        city:
          type: string
          readOnly: true
        state:
          type: string
          readOnly: true
        postcode:
          type: string
          readOnly: true
        country:
          type: string
          readOnly: true
        vat_number:
          type: string
          readOnly: true
        vat_validated:
          type: boolean
          readOnly: true
      required:
        - address_1
        - address_2
        - billing_email
        - billing_name
        - city
        - company_name
        - country
        - postcode
        - state
        - vat_number
        - vat_validated
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT or API Key
      description: >-
        Use `Authorization: Bearer <token>` header. Token can be a JWT token or
        an API key (format: `sk-onetsolutions-...`).

````