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

# Reject a supplier invoice

> OAuth scope: `supplier_invoice.write`

Rejects a supplier invoice. Only **`to_review`**, **`to_approve`**, and **`awaiting_payment`** invoices are eligible. On success, **`status`** is **`rejected`**. If the invoice is in any other status, the call fails with **`400 Bad Request`** (invalid transition).

**Idempotency and retries:** There is no separate idempotency key; the outcome depends on the invoice's **current `status`**. Calling again after the invoice is already **`rejected`** returns **`400`** (invalid transition), not a no-op success.




## OpenAPI

````yaml post /v2/supplier_invoices/{id}/reject
openapi: 3.1.1
info:
  version: v2
  title: Qonto
servers:
  - url: https://thirdparty.qonto.com
    description: Production URL
  - url: https://thirdparty-sandbox.staging.qonto.co
    description: Sandbox URL
security:
  - OAuth:
      - organization.read
      - membership.read
      - membership.write
      - attachment.write
      - internal_transfer.write
      - payment.write
      - supplier_invoice.write
      - supplier_invoice.read
      - client_invoices.read
      - client_invoice.write
      - client.read
      - client.write
      - product.read
      - product.write
      - request_review.write
      - request_review.read
      - team.read
      - team.write
      - request_transfers.write
      - insurance_contract.read
      - insurance_contract.write
      - card.read
      - card.write
      - bank_account.write
      - beneficiary.trust
      - webhook
      - payment_link.write
      - payment_link.read
      - sepa_direct_debit.read
      - sepa_direct_debit.write
      - terminal.read
      - terminal.write
  - SecretKey: []
paths:
  /v2/supplier_invoices/{id}/reject:
    parameters:
      - $ref: '#/components/parameters/X-Qonto-Staging-Token'
    post:
      tags:
        - Supplier Invoices
      summary: Reject a supplier invoice
      description: >
        OAuth scope: `supplier_invoice.write`


        Rejects a supplier invoice. Only **`to_review`**, **`to_approve`**, and
        **`awaiting_payment`** invoices are eligible. On success, **`status`**
        is **`rejected`**. If the invoice is in any other status, the call fails
        with **`400 Bad Request`** (invalid transition).


        **Idempotency and retries:** There is no separate idempotency key; the
        outcome depends on the invoice's **current `status`**. Calling again
        after the invoice is already **`rejected`** returns **`400`** (invalid
        transition), not a no-op success.
      operationId: reject_supplier_invoice
      parameters:
        - name: id
          in: path
          description: The ID of the supplier invoice to reject
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RejectSupplierInvoiceRequest'
      responses:
        '200':
          description: The supplier invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierInvoice'
        '400':
          $ref: '#/components/responses/400-Bad-request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-Not-Found'
        '500':
          $ref: '#/components/responses/500-Internal-Server-Error'
      security:
        - OAuth:
            - supplier_invoice.write
        - SecretKey: []
components:
  parameters:
    X-Qonto-Staging-Token:
      name: X-Qonto-Staging-Token
      in: header
      description: >-
        Required only for Sandbox API requests; to get one, please sign up to
        the [Developer Portal](https://developers.qonto.com/).
      schema:
        type: string
  schemas:
    RejectSupplierInvoiceRequest:
      type: object
      required:
        - supplier_invoice
      properties:
        supplier_invoice:
          type: object
          required:
            - declined_note
          properties:
            declined_note:
              type: string
              description: >-
                Arbitrary note provided by the approver to explain the rejection
                reason.
              example: This invoice is not valid
    SupplierInvoice:
      type: object
      required:
        - id
        - status
        - organization_id
        - source_type
        - attachment_id
        - updated_at
        - created_at
        - file_name
        - declined_note
        - is_einvoice
        - has_discrepancies
        - display_attachment_id
      properties:
        id:
          type: string
          format: uuid
          example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        is_einvoice:
          type: boolean
          example: false
          description: >-
            indicates if the invoice is an e-invoice, currently ONLY for the
            German organizations
        has_discrepancies:
          type: boolean
          example: false
        e_invoice_type:
          type: string
          example: zugferd
          enum:
            - zugferd
            - xrechnung
        has_duplicates:
          type: boolean
          example: false
        organization_id:
          type: string
          format: uuid
          example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        file_name:
          type: string
          example: my-invoice.pdf
        invoice_number:
          type: string
          example: QONTO-JAN-2022
        supplier_name:
          type: string
          example: McDonald's
        vat_number:
          type:
            - string
            - 'null'
          example: IT12345678901
          description: VAT number of the invoice issuer
        tin:
          type:
            - string
            - 'null'
          example: '1234567890'
          description: Tax Identification Number (TIN) of the invoice issuer
        description:
          type: string
          example: This is an invoice for Ronald!
        total_amount:
          type: object
          properties:
            value:
              type: string
              example: '22.10'
            currency:
              type: string
              example: EUR
        total_amount_excluding_taxes:
          type:
            - object
            - 'null'
          properties:
            value:
              type: string
              example: '18.42'
            currency:
              type: string
              example: EUR
        total_tax_amount:
          type:
            - object
            - 'null'
          properties:
            value:
              type: string
              example: '3.68'
            currency:
              type: string
              example: EUR
        taxes:
          type:
            - array
            - 'null'
          description: Individual tax entries on the invoice
          items:
            $ref: '#/components/schemas/SupplierInvoiceTax'
        issue_date:
          type: string
          example: '2022-03-01'
        due_date:
          type: string
          example: '2022-03-01'
        payment_date:
          type: string
          example: '2022-03-01'
        scheduled_date:
          type: string
          example: '2022-03-01'
        status:
          $ref: '#/components/schemas/SupplierInvoiceStatus'
        iban:
          type: string
          example: FR1420041010050500013M02606
        initiator_id:
          type: string
          format: uuid
        source_type:
          type: string
          example: email
          enum:
            - email
            - e_invoicing
            - direct_upload
        source:
          type: string
          example: email_forward
          enum:
            - email_forward
            - e_invoicing
            - supplier_invoices
            - pay_by_invoice
            - integration
            - regate
            - generic_upload
            - pay_later
        created_at:
          type: string
          example: '2022-03-04T17:58:30+02:00'
        updated_at:
          type: string
          example: '2022-03-04T17:58:30+02:00'
        attachment_id:
          type: string
          format: uuid
        display_attachment_id:
          type: string
          format: uuid
        is_attachment_invoice:
          type: boolean
        attachment_category:
          type: string
          description: The category of the attachment
          example: INVOICE
          enum:
            - INVOICE
            - EXPENSE_RECEIPT
            - CARD_RECEIPT
            - CREDIT_CARD_RECEIPT
            - CREDIT_NOTE
            - OTHER_FINANCIAL_DOCUMENT
            - OTHER_NON_FINANCIAL_DOCUMENT
            - UNKNOWN
        is_attachment_non_financial:
          type: boolean
        analyzed_at:
          type: string
          example: '2022-03-04T17:58:30+02:00'
        matched_transactions_ids:
          type: array
          deprecated: true
          description: >-
            Deprecated: This field contains transfer IDs, not transaction IDs.
            Use matched_transactions instead.
          items:
            type: string
            format: uuid
            example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        matched_transactions:
          type:
            - array
            - 'null'
          description: Array of payments (transfers/transactions) linked to this invoice
          items:
            type: object
            properties:
              subject_id:
                type: string
                format: uuid
                description: ID of the payment subject (e.g., transfer ID)
                example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
              subject_type:
                type: string
                enum:
                  - transfer
                description: Type of the payment subject
                example: transfer
              transaction_id:
                type: string
                format: uuid
                description: ID of the associated transaction
                example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        transfer_ids:
          type: array
          items:
            type:
              - string
              - 'null'
            format: uuid
            example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
          description: IDs of the transfer payments associated with this invoice, if any
        request_transfer:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
            initiator_id:
              type: string
              format: uuid
              example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        einvoicing_lifecycle_events:
          type: array
          items:
            $ref: '#/components/schemas/EInvoicingLifecycleEvent'
        meta:
          type: object
          properties:
            integration_type:
              type: string
              example: amazon
            connector:
              type: string
              example: grover
            accounting_recorded_at:
              type: string
              format: date-time
            accounting_recorded_source:
              type: string
              example: regate
        available_actions:
          type: object
          properties:
            delete:
              type: boolean
              description: Indicates if the invoice can be deleted
            archive:
              type: boolean
              description: Indicates if the invoice can be archived
            unarchive:
              type: boolean
              description: Indicates if the invoice can be unarchived
            pay:
              type: boolean
              description: Indicates if the invoice can be paid
            reasons:
              type:
                - object
                - 'null'
              properties:
                pay:
                  type: array
                  items:
                    type: string
                    enum:
                      - is_credit_note
                      - missing_iban
                      - missing_data
                      - invalid_status
                      - incorrect_approval_workflow
                  description: List of reasons why the invoice cannot be paid
                delete:
                  type: array
                  items:
                    type: string
                    enum:
                      - invalid_status
                      - linked_self_invoice
                      - is_recorded
                  description: List of reasons why the invoice cannot be deleted
                archive:
                  type: array
                  items:
                    type: string
                    enum:
                      - invalid_status
                  description: List of reasons why the invoice cannot be archived
                unarchive:
                  type: array
                  items:
                    type: string
                    enum:
                      - invalid_status
                  description: List of reasons why the invoice cannot be unarchived
              description: Detailed reasons for why certain actions are not available
          description: Available actions for the invoice
        declined_note:
          type: string
          description: Note specified when invoice was archived
          default: ''
        approval_workflow:
          type:
            - object
            - 'null'
          properties:
            approver_ids:
              description: >-
                Membership IDs of the users who are next in line to approve the
                invoice
              type: array
              minItems: 0
              items:
                type: string
                format: uuid
            supplier_invoice_request_id:
              type:
                - string
                - 'null'
              format: uuid
            verified_by:
              description: >-
                ID of the membership that verified the supplier invoice and send
                it to approval workflow
              type:
                - string
                - 'null'
              format: uuid
            last_approved_by:
              description: >-
                ID of the last membership that approved the supplier invoice
                request
              type:
                - string
                - 'null'
              format: uuid
          required:
            - approver_ids
            - supplier_invoice_request_id
            - verified_by
            - last_approved_by
        payable_amount:
          type:
            - object
            - 'null'
          properties:
            value:
              type: string
              example: '22.10'
            currency:
              type: string
              example: EUR
        total_amount_credit_notes:
          type:
            - object
            - 'null'
          properties:
            value:
              type: string
              example: '22.10'
            currency:
              type: string
              example: EUR
        is_credit_note:
          type: boolean
          example: false
        has_suggested_credit_notes:
          type: boolean
          example: false
        related_invoices:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/SupplierInvoiceRelatedInvoice'
        suggested_transactions:
          type:
            - array
            - 'null'
          description: suggested transactions for the invoice
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
                description: id of the suggested transaction
              score:
                type: string
                example: '0.8'
                description: match confidence score
    SupplierInvoiceTax:
      type: object
      description: Individual tax entry on an invoice
      properties:
        tax_amount:
          type:
            - object
            - 'null'
          properties:
            value:
              type: string
              example: '3.68'
            currency:
              type: string
              example: EUR
        tax_rate:
          type:
            - string
            - 'null'
          example: '0.20'
          description: Tax rate as a decimal (e.g., 0.20 for 20%)
    SupplierInvoiceStatus:
      type: string
      example: to_review
      oneOf:
        - const: to_review
          description: Initial status for invoices.
        - const: to_pay
          description: Deprecated status - use to_review instead.
        - const: to_approve
          description: >-
            Invoice has been assigned an approval workflow and requires approval
            before payment.
        - const: awaiting_payment
          description: Invoice has completed the approval process and is ready for payment.
        - const: pending
          description: >-
            Invoices that have been requested for payment by users who lack the
            necessary payment permissions.
        - const: scheduled
          description: >-
            Invoice payment has been scheduled but not yet executed. Payment is
            queued and will be automatically processed at the scheduled time.
        - const: paid
          description: Payment has been completed and received by the supplier.
        - const: archived
          description: >-
            Invoice has been moved to archive for record-keeping purposes. Can
            be accessed and unarchived if needed.
        - const: rejected
          description: Invoice has been formally declined by approvers
        - const: discarded
          description: Invoice has been discarded and is no longer available.
    EInvoicingLifecycleEvent:
      type: object
      properties:
        status_code:
          $ref: '#/components/schemas/EInvoicingLifecycleEventStatusCode'
        reason:
          type: string
          description: The reason label associated with a given event
          example: DOUBLE FACTURE
        reason_message:
          type: string
          description: >-
            The reason message associated with a given event (comment provided
            by the user generating the event)
          example: I already received this invoice
        timestamp:
          type: string
          description: The timestamp of the event
          format: date-time
          example: '2024-12-04T11:05:16.4497Z'
      example:
        status_code: 200
        reason: DOUBLE FACTURE
        reason_message: I already received this invoice
        timestamp: '2024-12-04T11:05:16.4497Z'
    SupplierInvoiceRelatedInvoice:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48
        invoice_number:
          type:
            - string
            - 'null'
          example: QONTO-JAN-2022
        total_amount:
          type: object
          properties:
            value:
              type: string
              example: '22.10'
            currency:
              type: string
              example: EUR
        attachment_id:
          type: string
          format: uuid
        file_name:
          type: string
          example: my-invoice.pdf
    BadRequestResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/BadRequestError'
      required:
        - errors
    UnauthorizedResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/UnauthorizedError'
      required:
        - errors
    ForbiddenResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ForbiddenError'
      required:
        - errors
    NotFoundError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
        source:
          type: object
          properties:
            parameter:
              type: string
              description: The parameter that causes the error.
      required:
        - code
        - detail
      x-examples:
        Object not found:
          code: not_found
          detail: Object not found
          source:
            parameter: id
    EInvoicingLifecycleEventStatusCode:
      type: integer
      enum:
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 209
        - 210
        - 211
        - 212
        - 213
        - 214
      description: >
        Status code of the operation. - 200: Déposée (Submitted) - 201: Emise
        par la plateforme (Issued by the platform) - 202: Reçue de la plateforme
        (Received from the platform) - 203: Mise à disposition (Made available)
        - 204: Prise en charge (Taken over) - 205: Approuvée (Approved) - 206:
        Approuvée partiellement (Partially approved) - 207: En litige (In
        dispute) - 208: Suspendue (Suspended) - 209: Complétée (Completed) -
        210: Refusée (Refused) - 211: Paiement transmis (Payment sent) - 212:
        Encaissée (Collected) - 213: Rejetée (Rejected) - 214: Visée (Vised)
      example: 200
    BadRequestError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
        source:
          type: object
          properties:
            pointer:
              type: string
              description: >-
                The property in the request body that caused the error
                (optional).
            parameter:
              type: string
              description: The query parameter that caused the error (optional).
      required:
        - code
        - detail
      x-examples:
        Authorization field missing:
          code: bad_request
          detail: Authorization field missing
    UnauthorizedError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
      required:
        - code
        - detail
      x-examples:
        Invalid credentials:
          code: unauthorized
          detail: Invalid credentials
    ForbiddenError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
      required:
        - code
        - detail
      x-examples:
        Insufficient permissions:
          code: forbidden
          detail: User does not have sufficient permissions for this action.
  responses:
    400-Bad-request:
      description: Returns a bad request error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestResponseBody'
          examples:
            Authorization field missing:
              value:
                errors:
                  - code: bad_request
                    detail: Authorization field missing
    401-Unauthorized:
      description: Returns an unauthorized error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnauthorizedResponseBody'
          examples:
            authorization_header_missing:
              value:
                errors:
                  - code: authorization_header_missing
                    detail: authorization header missing
            authorization_token_invalid:
              value:
                errors:
                  - code: authorization_token_invalid
                    detail: authorization token invalid
    403-Forbidden:
      description: Returns a forbidden error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ForbiddenResponseBody'
          examples:
            Insufficient permissions:
              value:
                errors:
                  - code: forbidden
                    detail: User does not have sufficient permissions for this action.
    404-Not-Found:
      description: Returns a not found error.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  $ref: '#/components/schemas/NotFoundError'
    500-Internal-Server-Error:
      description: Returns an internal server error.
  securitySchemes:
    OAuth:
      type: oauth2
      description: >
        Bearer authorization header: `Bearer <token>`, where `<token>` is the
        access token received from the authorization server at the end of the
        [OAuth 2.0
        flow](/get-started/business-api/authentication/oauth/oauth-flow).
      flows:
        authorizationCode:
          refreshUrl: https://oauth.qonto.com/oauth2/token
          authorizationUrl: https://oauth.qonto.com/oauth2/auth
          scopes:
            attachment.read: Retrieve attachments
            attachment.write: Upload attachments and remove attachments from transactions
            bank_account.write: Create, update and close bank accounts
            beneficiary.trust: Trust SEPA beneficiaries
            card.read: Retrieve cards
            card.write: Create or update cards
            client.read: Retrieve clients
            client.write: Create clients
            client_invoice.write: Create client invoices
            client_invoices.read: Retrieve client invoices and credit notes
            einvoicing.read: Retrieve e-invoicing settings
            embed_auth_link.write: Create Embed auth links
            insurance_contract.read: Retrieve insurance contracts
            insurance_contract.write: Create and update insurance contracts
            internal_transfer.write: >-
              Create internal transfers (between 2 Qonto accounts of the same
              organization)
            international_transfer.write: Create international transfers
            membership.read: Retrieve the authentified membership
            membership.write: Invite team members
            offline_access: Retrieve a refresh token
            organization.read: >-
              Retrieve organization, bank accounts, transactions, transfers,
              beneficiaries, labels, memberships, requests & statements
            payment.write: Create external transfers and untrust beneficiaries
            payment_link.read: >-
              Retrieve payment links, their payments, and the available payment
              methods
            payment_link.write: >-
              Connect to the payment links provider, create and deactivate
              payment links
            product.read: Retrieve products
            product.write: Create products
            request_cards.write: Create card requests
            request_review.write: Approve or decline requests
            request_transfers.write: Create transfer requests
            sepa_direct_debit.read: View SEPA Direct Debit payments
            sepa_direct_debit.write: Manage SEPA Direct Debit payments
            supplier_invoice.read: Retrieve supplier invoices
            supplier_invoice.write: Create supplier invoices
            team.read: Retrieve teams
            team.write: Create teams
            terminal.read: View your payment terminals
            terminal.write: Configure your terminals and initiate payments
            webhook: >-
              Receive a notification each time a particular event occurs in
              Qonto
          tokenUrl: https://oauth.qonto.com/oauth2/token
    SecretKey:
      type: apiKey
      description: cf. [API key](/get-started/business-api/authentication/api-key)
      name: Authorization
      in: header

````