openapi: 3.0.3 info: title: Qonto version: v2 servers: - url: 'https://thirdparty.qonto.com' description: Production URL - url: 'https://thirdparty-sandbox.staging.qonto.co' description: Sandbox URL tags: - name: 'V2::Beneficiary' - name: 'V2::ExternalTransfer' - name: 'V2::Attachment' - name: 'V2::Label' - name: 'V2::Membership' - name: 'V2::Organization' - name: 'V2::Team' - name: 'V2::Transaction' - name: 'V2::InternalTransfer' - name: 'V2::Request' - name: 'V2::SupplierInvoice' - name: 'V2::ClientInvoice' - name: 'V2::CreditNote' - name: 'V2::Card' paths: '/v2/external_transfers/{id}': get: summary: Show an external transfer operationId: get_external_transfer parameters: - name: id in: path required: true schema: type: string example: 7b7a5ed6-3903-4782-889d-b4f64bd7bef9 - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns an external transfer content: application/json: schema: type: object required: - external_transfer properties: external_transfer: $ref: '#/components/schemas/ExternalTransfer' '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: External transfer not found source: parameter: id tags: - External Transfers description: | OAuth scope: `organization.read` --- Get a single external transfer. --- ## Attributes details ##### Initiator ID ID of the membership that initiated the external transfer.
When the external transfer is initiated through the API, the initiator is the authenticated membership. ##### Debit - `debit_iban`: Can be any of the organization's bank accounts. IBAN formatted ISO 13616. - `debit_amount`: The amount that will be debited from your Qonto account. - `debit_amount_cents`: The amount that will be debited from you Qonto account in an integer format. - `debit_currency`: Must be EUR. ISO 4217 formatted. ##### Credit - `credit_amount`: The amount that the beneficiary will receive. - `credit_amount_cents`: The amount that the beneficiary will receive in an integer format. - `credit_currency`: Equals debit currency if issued in the SEPA network (only supported currencies). ISO 4217 format. Allowed value for international transfers: AUD, CAD, CHF, CNY, CZK, DKK, GBP, HKD, HRK, HUF, ILS, JPY, NOK, NZD, PLN, RON, SEK, USD ##### FX rate - `rate_applied`: Foreign exchange rate applied to your transaction, formatted with 4 digits after comma. Ex: 1,1082 #### Timestamps Each external transfer contains three timestamps: * `created_at`, UTC, the time at which the external transfer was first recorded. * `processed_at`, UTC, when the external transfer has been started to be processed by Qonto. * `completed_at`, UTC, when the external transfer is in its final state, either settled or declined. * `scheduled_date`, YYYY-MM-DD, indicates when the external transfer was scheduled to be sent by Qonto. ##### Status `status` can contain the following values * `pending`: External transfer is created and has not been processed yet. If transfer is not processed within next minute, it means either execution date may not been reached yet or we are running some compliance checks on this transfer. * `processing`: External transfer processing means account balance is debited and a transaction has been created. Processing status can last up to multiple hours until transfer is sent in the network to the beneficiary. * `canceled`: When the external transfer is canceled by a user in the interface. This is a permanent status. * `declined`: When the external transfer is declined by the screening service, fraud service or, once sent on the network, for many various reasons which are listed in [those guidelines](https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2023-11/EPC135-18%20v5.0%20Guidance%20on%20Reason%20Codes%20for%20SCT%20R-transactions.pdf). This is a permanent status. * `settled`: When the external transfer is sent to the network, transfer is settled. This is a permanent status. security: - OAuth: - organization.read - SecretKey: [] /v2/external_transfers: get: summary: List external transfers operationId: list_external_transfers parameters: - schema: type: array items: type: string example: pending enum: - pending - processing - canceled - declined - settled default: pending in: query name: status required: false - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_from required: false - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_to required: false - schema: type: string example: '2019-01-10' in: query name: scheduled_date_from required: false - schema: type: string example: '2019-01-10' in: query name: scheduled_date_to required: false - schema: type: array items: type: string format: uuid in: query name: beneficiary_ids - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: lists external transfers content: application/json: schema: type: object properties: external_transfers: type: array items: $ref: '#/components/schemas/ExternalTransfer' meta: $ref: '#/components/schemas/Pagination' '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when updated_at is invalid: value: errors: - code: invalid detail: updated_at_from is not a valid date source: properties: pointer: /external_transfer/updated_at_from tags: - External Transfers description: | OAuth scope: `organization.read` --- Retrieve a list of external transfers. --- ## Attributes details ##### Initiator ID ID of the membership that initiated the external transfer.
When the external transfer is initiated through the API, the initiator is the authenticated membership. ##### Debit - `debit_iban`: Can be any of the organization's bank accounts. IBAN formatted ISO 13616. - `debit_amount`: The amount that will be debited from your Qonto account. - `debit_amount_cents`: The amount that will be debited from you Qonto account in an integer format. - `debit_currency`: Must be EUR. ISO 4217 formatted. ##### Credit - `credit_amount`: The amount that the beneficiary will receive. - `credit_amount_cents`: The amount that the beneficiary will receive in an integer format. - `credit_currency`: Equals debit currency if issued in the SEPA network (only supported currencies). ISO 4217 format. Allowed value for international transfers: AUD, CAD, CHF, CNY, CZK, DKK, GBP, HKD, HRK, HUF, ILS, JPY, NOK, NZD, PLN, RON, SEK, USD ##### FX rate - `rate_applied`: Foreign exchange rate applied to your transaction, formatted with 4 digits after comma. Ex: 1,1082 #### Timestamps Each external transfer contains three timestamps: * `created_at`, UTC, the time at which the external transfer was first recorded. * `processed_at`, UTC, when the external transfer has been started to be processed by Qonto. * `completed_at`, UTC, when the external transfer is in its final state, either settled or declined. * `scheduled_date`, YYYY-MM-DD, indicates when the external transfer was scheduled to be sent by Qonto. ##### Status `status` can contain the following values * `pending`: External transfer is created and has not been processed yet. If transfer is not processed within next minute, it means either execution date may not been reached yet or we are running some compliance checks on this transfer. * `processing`: External transfer processing means account balance is debited and a transaction has been created. Processing status can last up to multiple hours until transfer is sent in the network to the beneficiary. * `canceled`: When the external transfer is canceled by a user in the interface. This is a permanent status. * `declined`: When the external transfer is declined by the screening service, fraud service or, once sent on the network, for many various reasons which are listed in [those guidelines](https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2023-11/EPC135-18%20v5.0%20Guidance%20on%20Reason%20Codes%20for%20SCT%20R-transactions.pdf). This is a permanent status. * `settled`: When the external transfer is sent to the network, transfer is settled. This is a permanent status. ## Filters #### `status` External transfers can be filtered by status. The `status` query parameter accepts an array of statuses as value. The possible values are: `pending`, `processing`, `canceled`, `declined` and `settled`. For example, if you want to retrieve several External Transfers statuses, you can use the following filter: `status[]=processing&status[]=declined&status[]=settled` #### `beneficiary_ids` Allows filtering on a list of beneficiary IDs #### `updated_at` / `scheduled_date` External transfers can be filtered according to both `updated_at` and `scheduled_date` fields. This is particularly useful to retrieve only the latest external transfers in your application. Two filters are available : - **updated_at** - `updated_at_from`: Minimum value (e.g: `2019-01-10T11:47:53.123Z`) - `updated_at_to`: Maximum value - **scheduled_date** - `scheduled_date_from`: Minimum value - `scheduled_date_to`: Maximum value **Do note**: - *You can use one or the other `updated_at` filter (same for `scheduled_date`), or use them in combination if you want external transfers updated within a specific timeframe.* - *`updated_at` / `scheduled_date` filters should have a valid date time format (**ISO 8601** for instance)* ## Sorting External transfers can be sorted by a specific field and order. The `sort_by` query parameter accepts a string defining these two items with the `field:order` format. #### Field - `scheduled_date` and `updated_at` values are available. #### Order - Two values are available : `asc` (Ascending) / `desc` (Descending) - By default the order used to sort external transfers is `desc` **Do note**: You can use a combination of field and order to define how to sort external transfers: - Only field (e.g `updated_at`, order will have default value `desc`) - Only order (e.g `:asc`, field will have default value `updated_at`) - Both (e.g `updated_at:asc`) security: - OAuth: - organization.read - SecretKey: [] post: summary: Create an external transfer with trusted beneficiary operationId: create_external_transfer security: - OAuth: - payment.write parameters: - name: X-Qonto-Idempotency-Key schema: type: string required: true in: header description: This parameter is required. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID. - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: application/json: schema: type: object required: - external_transfer properties: external_transfer: type: object required: - beneficiary_id - debit_iban - reference - amount - currency properties: beneficiary_id: type: string format: uuid debit_iban: type: string reference: type: string note: type: string currency: type: string description: ISO 4217 scheduled_date: type: string example: '2021-07-12' amount: type: string attachment_ids: type: array items: type: string format: uuid responses: '200': description: returns an external transfer content: application/json: schema: type: object required: - external_transfer properties: external_transfer: $ref: '#/components/schemas/ExternalTransfer' '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when beneficiary is not trusted: value: errors: - code: untrusted_beneficiary detail: External transfers can only be initiated to trusted beneficiaries source: properties: pointer: /external_transfer/beneficiary_id when debit_iban cannot be found: value: errors: - code: not_found detail: Bank account was not found source: properties: pointer: /external_transfer/debit_iban when reference is missing: value: errors: - code: missing_key detail: reference is missing source: pointer: /external_transfer/reference when amount is missing: value: errors: - code: missing_key detail: amount is missing source: pointer: /external_transfer/amount when currency is missing: value: errors: - code: missing_key detail: currency is missing source: pointer: /external_transfer/currency when the iban is not in SEPA: value: errors: - code: iban_not_sepa detail: Beneficiary is not in SEPA source: pointer: /external_transfer/beneficiary_id when there are not enough funds in the account: value: errors: - code: insufficient_funds detail: The account has insufficient funds source: pointer: /external_transfer/debit_iban when attachment id cannot be found: value: errors: - code: not_found detail: Attachment not found id=6cc7f2dd-ea0d-4cc2-ba30-f3e1ce0a8eb4 source: pointer: /external_transfer/attachment_ids/1 when attachment_ids exceeds max limit: value: errors: - code: above_max_size detail: attachment_ids cannot be greater than 5 source: pointer: /external_transfer/attachment_ids tags: - External Transfers description: | OAuth scope: `payment.write` --- Automated creation of a instant external transfer with no user interaction involved once the beneficiary is trusted. --- This endpoint allows you to execute transfers for a given beneficiary. The beneficiary must be trusted for the transfer to be created. The beneficiary can **only** be trusted through the [Qonto web-app](https://app.qonto.com/) (for more details, please refer to [this article](https://support-fr.qonto.com/hc/en-us/articles/23947644174993-How-can-I-mark-a-payee-as-trustworthy#h_925061f25d)). The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID. ## Request parameter details #### `X-Qonto-Idempotency-Key` header This is a unique string (we advise to use a `uuid`) that identifies a transfer. This is used by Qonto to prevent "double spending" by accidentaly replaying the same API call. ##### Amount and Currency * The `amount` corresponds to the amount of the transaction in the `currency` of the bank account. Amounts must be https://www.w3.org/TR/payment-request/#dfn-valid-decimal-monetary-value * The `currency` should be EUR. ##### Reference * Transfer reference that can be used to enter transfer details to further describe the transfer * Maximum `reference` length is `99` characters ##### Debit iban * `debit_iban`: IBAN of account to debit ##### Attachments You can link up to 5 attachments per transfer by passing the `attachment_ids` parameter. You can upload your attachments using our [POST /v2/attachments](https://qonto-next.stoplight.io/docs/business-api/branches/create-attachments/b3A6MzU2NjMxMzU-upload-attachment) endpoint. **Note: For SEPA transfers above 30,000 EUR at least one attachment is required** /v2/external_transfers/checkout: post: summary: Create external transfers with beneficiary data operationId: external_transfers_checkout security: - OAuth: - payment.write requestBody: content: application/json: schema: type: object required: - external_transfers - debit_iban properties: debit_iban: type: string external_transfers: type: array items: type: object required: - credit_iban - credit_account_name - credit_account_currency - reference - currency - amount properties: credit_iban: type: string credit_account_name: type: string credit_account_currency: type: string description: ISO 4217 reference: type: string note: type: string currency: type: string description: ISO 4217 scheduled_date: type: string example: '2021-07-12' amount: type: string idempotency_key: type: string format: uuid attachment_ids: type: array items: type: string format: uuid responses: '200': description: returns an array of external transfers content: application/json: schema: type: object required: - external_transfers - errors properties: external_transfers: type: array items: $ref: '#/components/schemas/ExternalTransfer' errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: only successes: value: external_transfers: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 slug: my-slug debit_iban: string debit_amount: '12.55' debit_amount_cents: '1255' debit_currency: EUR initiator_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 beneficiary_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 credit_amount: '12.55' credit_amount_cents: '1255' credit_currency: EUR rate_applied: null payment_purpose: goods reference: my-reference note: Some note declined_reason: null status: pending scheduled_date: '2021-07-12' created_at: '2021-01-27T22:05:07.000Z' completed_at: '2021-01-27T22:05:07.000Z' processed_at: '2021-01-27T22:05:07.000Z' transaction_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 errors: [] partial successes and errors: value: external_transfers: - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 slug: my-slug debit_iban: string debit_amount: '12.55' debit_amount_cents: '1255' debit_currency: EUR initiator_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 beneficiary_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 credit_amount: '12.55' credit_amount_cents: '1255' credit_currency: EUR rate_applied: null payment_purpose: goods reference: my-reference note: Some note declined_reason: null status: pending scheduled_date: '2021-07-12' created_at: '2021-01-27T22:05:07.000Z' completed_at: '2021-01-27T22:05:07.000Z' processed_at: '2021-01-27T22:05:07.000Z' transaction_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6 errors: - code: not_found detail: Bank account was not found source: properties: pointer: /external_transfers/1/debit_iban only errors: value: external_transfers: [] errors: - code: not_found detail: Bank account was not found source: properties: pointer: /external_transfers/1/debit_iban '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. - code: forbidden detail: The organization’s price plan does not allow to do bulk transfer. '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when debit_iban cannot be found: value: errors: - code: not_found detail: Bank account was not found source: properties: pointer: /debit_iban tags: - External Transfers description: "OAuth scope: `payment.write`\n\n\n**Accessible only using [Strong Customer Authentication](https://api-doc.qonto.com/docs/business-api/ZG9jOjI5MDg3NzA4-strong-customer-authentication)**.\n\n\n>\U0001F4A1 Example of SCA usage: [**Postman visual flow**](https://www.postman.com/qontoteam/workspace/qonto-public-api/flow/6670429eb7bd63003156bd57)\n\n---\n\n**Solo basic plans**\n\n- Create a single instant external transfer with creditor data.\n- **Solo basic** plans are not allowed to do bulk transfers. If a bulk transfer is attempted, it will fail and an error will be returned.\n\n**Rest of plans**\n\nCreate a maximum of 400 instant external transfers with creditor data.\nThis API requires user interaction both for creation and approval of the external transfers. If you are interested in machine-to-machine communication without **Strong Customer Authentication**, check our [external transfer with trusted beneficiaries](https://api-doc.qonto.com/docs/business-api/47280509cae8c-create-an-external-transfer) endpoint.\n\n---\n\nThe API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID.\n\nWhen there is a `422` error, the easiest way to identify the invalid external transfer in the list, look at the `errors[x].source.pointer`. The structure of the pointer will be the root key which will always be `external_transfers`, followed by the index of the ID in the list. For example, `/external_transfers/1/amount` indicates that the second entry in the external transfers array is unprocessable due to its amount.\n\n## Max number of transfers : 400\n\n## Attributes details\n\n##### Initiator ID\nID of the membership that initiated the external transfer.\n
When the external transfer is initiated through the API, the initiator is the authenticated membership.\n\n##### Debit\n- `debit_iban`: Can be any of the organization's bank accounts. IBAN formatted ISO 13616.\n- `debit_amount`: The amount that will be debited from your Qonto account.\n- `debit_amount_cents`: The amount that will be debited from you Qonto account in an integer format.\n- `debit_currency`: Must be EUR. ISO 4217 formatted.\n\n##### Credit\n- `credit_amount`: The amount that the creditor will receive.\n- `credit_amount_cents`: The amount that the creditor will receive in an integer format.\n- `credit_currency`: Equals debit currency if issued in the SEPA network (only supported currencies). ISO 4217 format.\n\n##### FX rate\n- `rate_applied`: Foreign exchange rate applied to your transaction, formatted with 4 digits after comma. Ex: 1,1082\n\n#### Timestamps\n\nEach external transfer contains three timestamps:\n\n* `created_at`, UTC, the time at which the external transfer was first recorded.\n* `processed_at`, UTC, when the external transfer has been started to be processed by Qonto.\n* `completed_at`, UTC, when the external transfer is in its final state, either settled or declined.\n* `scheduled_date`, YYYY-MM-DD, indicates when the external transfer was scheduled to be sent by Qonto.\n\n##### Status\n`status` can contain the following values\n\n* `pending`: External transfer is created and has not been processed yet. If transfer is not processed within next minute, it means either execution date may not been reached yet or we are running some compliance checks on this transfer.\n* `processing`: External transfer processing means account balance is debited and a transaction has been created. Processing status can last up to multiple hours until transfer is sent in the network to the beneficiary.\n* `canceled`: When the external transfer is canceled by a user in the interface. This is a permanent status.\n* `declined`: When the external transfer is declined by the screening service, fraud service or, once sent on the network, for many various reasons which are listed in [those guidelines](https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2023-11/EPC135-18%20v5.0%20Guidance%20on%20Reason%20Codes%20for%20SCT%20R-transactions.pdf). This is a permanent status.\n* `settled`: When the external transfer is sent to the network, transfer is settled. This is a permanent status.\n\n## Request parameter details\n\n##### Idempotency_key\n\nThis is a unique string (we advise to use a `uuid`) that identifies a transfer. This is used by Qonto to prevent \"double spending\" by accidentaly replaying the same API call.\n\nThe `idempotency_key` must be the same for all the call sequence used during the SCA flow :\n\n- For each transfer, The `idempotency_key` is first set on the initial call, which will trigger the SCA flow.\n- The **same** `idempotency_key` **must** be used on the final call that includes the SCA token.\n\nThis is so because the two calls are actually related to the **same transfer**.\n\n##### Amount and Currency\n* The `amount` corresponds to the amount of the transaction in the `currency` of the bank account. Amounts must be https://www.w3.org/TR/payment-request/#dfn-valid-decimal-monetary-value\n* The `currency` should be EUR.\n\n##### Reference\n* Transfer reference that can be used to enter transfer details to further describe the transfer\n* Maximum `reference` length is `140` characters\n\n##### Debit iban\n* `debit_iban`: IBAN of account to debit\n\n##### Creditor\n* `credit_iban`: IBAN of account to credit\n* `credit_account_name`: The name of the credit account\n* `credit_account_currency`: Can be either the currency of the `debit_iban` or the currency of the creditor. Allowed values is only `EUR` at the moment.\n\n##### Attachments\nYou can link up to 5 attachments per transfer by passing the `attachment_ids` parameter. You can upload your attachments using our [POST /v2/attachments](https://qonto-next.stoplight.io/docs/business-api/branches/create-attachments/b3A6MzU2NjMxMzU-upload-attachment) endpoint. **Note: For SEPA transfers above 30,000 EUR at least one attachment is required**\n" parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/beneficiaries: get: summary: List beneficiaries operationId: list_beneficiaries parameters: - schema: type: boolean in: query name: trusted required: false - schema: type: array items: type: string example: pending enum: - pending - validated - declined default: validated in: query name: status required: false - schema: type: array items: type: string example: FR7616798000010000005663951 in: query name: iban required: false - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_from required: false - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_to required: false - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: lists beneficiaries for a given organization content: application/json: schema: type: object required: - beneficiaries - meta properties: beneficiaries: type: array items: $ref: '#/components/schemas/Beneficiary' meta: $ref: '#/components/schemas/Pagination' '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when updated_at is invalid: value: errors: - code: invalid detail: updated_at_from is not a valid date source: properties: pointer: /external_transfer/updated_at_from tags: - Beneficiaries description: | OAuth scope: `organization.read` --- Retrieve a list of beneficiaries. --- ## Attributes details #### Trusted `trusted` indicates whether you can automate transfer through API to the beneficiary or not. #### Timestamps Each beneficiary contains two timestamps: * `created_at`, UTC, the time at which the beneficiary was first recorded. * `updated_at`, UTC, the time at which the beneficiary was last updated. ##### Status `status` can contain the following values * `pending`: Beneficiary is created but no Strong Customer Authentication or Transfer has ever been done on this beneficiary. * `validated`: Beneficiary is created and at least one Strong Customer Authentication or Transfer has been done to this beneficiary. * `declined`: Beneficiary is malformatted and prevent from Qonto to processing transfer. ##### Bank account Fields in the `bank_account` object will be populated depending upon the type of the account. If the type is: - Swift BIC or SEPA: `iban`, `currency` and `bic` will be present. - Swift code: `account_number`, `swift_sort_code`, `intermediary_bank_bic` and `currency` will be present. - Swift routing number: `account_number`, `routing_number`, `intermediary_bank_bic` and `currency` will be present. ## Filters #### `status` Beneficiaries can be filtered by status. The `status` query parameter accepts an array of statuses as value. The possible values are: `pending`, `validated` and `declined`. For example, if you want to retrieve several Beneficiaries statuses, you can use the following filter: `status[]=pending&status[]=validated&status[]=declined` #### `trusted` Boolean property that can filter beneficiaries by `true` or `false`. #### `iban` Beneficiaries can be filtered by IBAN. The `iban` query parameter accepts an array of IBANs as value. #### `updated_at` Beneficiaries can be filtered by the `updated_at` field. This is particularly useful to retrieve only the latest beneficiaries in your application. - **updated_at** - `updated_at_from`: Minimum value (e.g: `2019-01-10T11:47:53.123Z`) - `updated_at_to`: Maximum value **Do note**: - *`updated_at` filters should have a valid date time format (**ISO 8601** for instance)* ## Sorting Beneficiaries can be sorted by a specific field and order. The `sort_by` query parameter accepts a string defining these two items with the `field:order` format. #### Field - `updated_at` value is available. #### Order - Two values are available : `asc` (Ascending) / `desc` (Descending) - By default the order used to sort beneficiaries is `desc` **Do note**: You can use a combination of field and order to define how to sort beneficiaries: - Only field (e.g `updated_at`, order will have default value `desc`) - Only order (e.g `:asc`, field will have default value `updated_at`) - Both (e.g `updated_at:asc`) security: - OAuth: - organization.read - SecretKey: [] '/v2/beneficiaries/{id}': get: summary: Show beneficiary operationId: get_beneficiary parameters: - name: id in: path required: true schema: type: string example: e72f6e43-0f27-4415-8781-ad648a89b47f - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns a beneficiary content: application/json: schema: type: object properties: beneficiary: $ref: '#/components/schemas/Beneficiary' '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: Beneficiary not found source: parameter: id tags: - Beneficiaries description: | OAuth scope: `organization.read` --- Get a single beneficiary. --- ## Attributes details #### Trusted `trusted` indicates whether you can automate transfer through API to the beneficiary or not. #### Timestamps Each beneficiary contains two timestamps: * `created_at`, UTC, the time at which the beneficiary was first recorded. * `updated_at`, UTC, the time at which the beneficiary was last updated. ##### Status `status` can contain the following values * `pending`: Beneficiary is created but no Strong Customer Authentication or Transfer has ever been done on this beneficiary. * `validated`: Beneficiary is created and at least one Strong Customer Authentication or Transfer has been done to this beneficiary. * `declined`: Beneficiary is malformatted and prevent from Qonto to processing transfer. ##### Bank account Fields in the `bank_account` object will be populated depending upon the type of the account. If the type is: - Swift BIC or SEPA: `iban`, `currency` and `bic` will be present. - Swift code: `account_number`, `swift_sort_code`, `intermediary_bank_bic` and `currency` will be present. - Swift routing number: `account_number`, `routing_number`, `intermediary_bank_bic` and `currency` will be present. security: - OAuth: - membership.read - SecretKey: [] /v2/beneficiaries/untrust: patch: summary: Untrust a list of beneficiaries operationId: untrust_beneficiaries security: - OAuth: - payment.write - SecretKey: [] requestBody: content: application/json: schema: type: object required: - ids properties: ids: type: array items: type: string format: uuid example: 921c60fc-df0e-4289-a864-38a438ad2366 responses: '200': description: returns the updated beneficiaries content: application/json: schema: type: object properties: beneficiaries: type: array items: $ref: '#/components/schemas/Beneficiary' '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when ids is missing or empty: value: errors: - code: missing_ids detail: IDs are missing when ids is more than the max allowed: value: errors: - code: ids_limit_reached detail: Size of ids cannot exceed 400 when at least one ID in the list is not found: value: errors: - code: not_found detail: Beneficiary not found for id=9ddeab87-2602-4d89-8eac-678407498447 source: pointer: /beneficiaries/1/id tags: - Beneficiaries description: | OAuth scope: `payment.write` --- Untrust an array of beneficiaries. Max number of IDs is 400. --- When there is a `422` error, the easiest way to identify which ID in the list is the invalid one, look at the `errors[x].source.pointer`. The structure of the pointer will be the root key which will always be `beneficiaries`, followed by the index of the ID in the list. For example, if in the array of IDs `["abc", "xyz"]` the first ID cannot be found the pointer will be `/beneficiaries/0/id`. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/attachments: post: summary: Upload attachment security: - OAuth: - attachment.write - SecretKey: [] parameters: - schema: type: string format: uuid in: header name: X-Qonto-Idempotency-Key description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. example: 4668aec5-4e9c-4a41-b6d1-fc3c13c70dd5 - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary examples: example: value: file: <% multipart/form-data file data %> example: file: test_image.png application/x-www-form-urlencoded: schema: type: object properties: file: type: string example: file: foobar.png description: |- OAuth scope: `payment.write` --- You have to specify multipart form data in order to attach the file to the request. When using `curl` it will look like that: ``` curl --request POST \ --url https://thirdparty.qonto.com/v2/attachments \ -H "Content-Type: multipart/form-data" \ -H "Authorization: {Auth}" \ -F file="@path/to/a/file.jpg" ``` responses: '200': description: returns an attachment ID content: application/json: schema: type: object properties: attachment: type: object properties: id: type: string example: attachment: id: 71c32755-d0c3-4d82-9a78-774caa9d8556 '400': description: returns a bad request error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when file is too big: value: errors: - code: file_too_big detail: File is too big source: pointer: /file when file is not the correct type: value: errors: - code: invalid_file_type detail: Invalid file type source: pointer: /file '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. tags: - Attachments description: |- OAuth scope: `attachment.write` --- Upload an attachment --- This endpoint allows you to upload an attachment to be then linked to an external transfer. Valid files are: JPEG, PNG and PDFs. The endpoint is particularly useful when you want to link an attachment to an external transfer via [POST /v2/external_transfers](https://api-doc.qonto.com/docs/business-api/b3A6MjM2NDE0OTk-create-an-external-transfer) and [POST /v2/external_transfers/checkout](https://api-doc.qonto.com/docs/business-api/b3A6MzAxODAwMDI-create-external-transfers-with-creditor-data). Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. '/v2/attachments/{id}': get: summary: Show attachment operationId: get_attachment security: - OAuth: - organization.read - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: e72f6e43-0f27-4415-8781-ad648a89b47f - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns an attachment content: application/json: schema: type: object properties: attachment: type: object properties: id: type: string created_at: type: string file_name: type: string file_size: type: string file_content_type: type: string url: type: string probative_attachment: type: object properties: status: type: string file_name: type: string file_content_type: type: string file_size: type: string url: type: string example: attachment: id: 71c32755-d0c3-4d82-9a78-774caa9d8556 created_at: '2021-03-23T14:21:51.000Z' file_name: Foobar file_size: '666' file_content_type: image/png url: 'https://my-s3.url.qonto.bucket.com/123456789' probative_attachment: status: unavailable file_name: statement.pdf file_content_type: application/pdf file_size: '666' url: 'https://my-s3.url.qonto.bucket.com/123456789' '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action description: | OAuth scope: `organization.read` --- Obtain the details (e.g: download URL) for a specific attachment. --- Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. You can retrieve the IDs of those attachments inside each Transaction object, by calling [List transactions](/reference/openapi_v2.yml/paths/~1v2~1transactions/get). Probative attachment is another version of attachment, compliant with [PAdES](https://en.wikipedia.org/wiki/PAdES) standard. **Important**: for security reasons, the `url` you retrieve for each Attachment is only valid for 30 minutes. If you need to download the file after more than 30 minutes, you will need to perform another authenticated call in order to generate a new download URL. Note: if you download the file using `curl`, replace the `\u0026` references by `&` in the `url` string. tags: - Attachments parameters: - schema: type: string name: id in: path required: true /v2/labels: get: operationId: get_labels summary: List labels responses: '200': description: list labels for a given organization content: application/json: schema: type: object properties: labels: type: array items: type: object properties: id: type: string name: type: string parent_id: type: string nullable: true meta: type: object properties: current_page: type: integer next_page: type: integer nullable: true prev_page: type: integer nullable: true total_pages: type: integer total_count: type: integer per_page: type: integer example: labels: - id: 171dba70-c75f-4337-b419-377a59bc9cf3 name: Fantastic Marble Wallet parent_id: null - id: 2487a014-618f-40e3-8a1f-eb76e883efc5 name: Fantastic Bronze Computer parent_id: 171dba70-c75f-4337-b419-377a59bc9cf3 meta: current_page: 1 next_page: null prev_page: null total_pages: 1 total_count: 2 per_page: 100 tags: - Labels description: | OAuth scope: `organization.read` --- Retrieve all labels within the organization. --- The response contains the list of labels that are linked to the authenticated company. The `id` field uniquely identifies the label and is used to identify the **label_ids** of a transaction (see [List transactions](/reference/openapi_v2.yml/paths/~1v2~1transactions/get)) ### Parent A label can be linked to another in order to create lists. The parent label can be identified thanks to the `parent_id` field. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' security: - OAuth: - organization.read - SecretKey: [] '/v2/labels/{id}': get: summary: Show label security: - OAuth: - organization.read - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: 2d9663fd-1748-4ed4-a590-48066ae9e1cb - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns a label content: application/json: schema: type: object properties: label: type: object properties: id: type: string name: type: string parent_id: type: string example: label: id: 2d9663fd-1748-4ed4-a590-48066ae9e1cb name: Lightweight Granite Pants parent_id: 053b8439-56a6-48ac-9fad-7b2973a53ae3 tags: - Labels description: | OAuth scope: `organization.read` --- Retrieve all labels within the organization. --- The response contains the list of labels that are linked to the authenticated company. The `id` field uniquely identifies the label and is used to identify the **label_ids** of a transaction (see [List transactions](/reference/openapi_v2.yml/paths/~1v2~1transactions/get)) ### Parent A label can be linked to another in order to create lists. The parent label can be identified thanks to the `parent_id` field. /v2/memberships: get: summary: List memberships security: - OAuth: - organization.read - SecretKey: [] responses: '200': description: list memberships for a given organization content: application/json: schema: type: object properties: memberships: type: array items: type: object properties: id: type: string format: uuid example: c9f9f051-7558-451c-b310-f4b8521424aa first_name: type: string example: Quinn Jast last_name: type: string example: Miss Stan Altenwerth role: type: string enum: - owner - admin - manager - reporting - employee example: owner residence_country: type: string nullable: true example: FR birthdate: type: string example: '2022-11-27' format: date nullable: true nationality: type: string nullable: true example: FR ubo: type: boolean nullable: true birth_country: type: string nullable: true example: IT status: type: string example: active meta: $ref: '#/components/schemas/Pagination' example: memberships: - id: c9f9f051-7558-451c-b310-f4b8521424aa first_name: Quinn Jast last_name: Miss Stan Altenwerth role: owner residence_country: FR birthdate: '1987-07-12' nationality: FR ubo: true birth_country: IT meta: current_page: 1 next_page: null prev_page: null total_pages: 1 total_count: 1 per_page: 100 '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: unauthorized detail: type: string example: Invalid credentials '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: forbidden detail: type: string example: Forbidden tags: - Memberships description: | OAuth scope: `organization.read` --- Retrieve all memberships within the organization. --- The response contains the list of memberships that are linked to the authenticated company. A member is a user who's been granted access to the Qonto account of a company. There is no limit currently to the number of memberships a company can have. The response contains the following attributes: - `id` - The membership's id. It uniquely identifies the membership - `first_name` - The first name of the membership - `last_name` - The last name of the membership - `role` - Role of the membership: `owner`, `admin`, `manager`, `reporting`, `employee` For Spain companies, the list also contains data about the UBOs (Ultimate Beneficiary Owner) of the company in addition to the fields above: - `residence_country` - Residential country of the member - `birthdate` - Date of birth of the member - `nationality` - The nationality of the member - `ubo` - The possession of the member: `true`, `false` - `birth_country` - The birth country of the member operationId: '' parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/membership: get: summary: Get details of a single membership security: - OAuth: - membership.read responses: '200': description: returns a membership. The membership returned is determined from the secret-key or OAuth2 token. content: application/json: schema: type: object properties: membership: type: object additionalProperties: false properties: id: type: string example: c9f9f051-7558-451c-b310-f4b8521424aa readOnly: true first_name: type: string example: Bruce Thomas Patrick readOnly: true last_name: type: string example: Wayne readOnly: true email: type: string example: batman@dc-comics.com readOnly: true phone_number: type: string example: '+49123456789' readOnly: true position: type: string example: Criminals threatener readOnly: true status: type: string example: active readOnly: true role: type: string example: owner locale: type: string example: de team_id: type: string example: d1f9f066-5642-462d-b421-a7d8521556bc example: membership: id: c9f9f051-7558-451c-b310-f4b8521424aa first_name: Bruce Thomas Patrick last_name: Wayne email: batman@dc-comics.com phone_number: '+49123456789' position: Criminals threatener status: active role: owner locale: de team_id: d1f9f066-5642-462d-b421-a7d8521556bc '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. tags: - Memberships description: |- OAuth scope: `membership.read` --- Retrieve the details of the authenticated Membership. --- The response contains the following attributes: - `id` - The membership's id - `first_name` - The first name of the membership - `last_name` - The last name of the membership - `email` - The email address of the membership - `phone_number` - The phone number of the membership - `position` - The professional position of the membership within the company (e.g.: CEO, financial manager) - `status` - Status of the membership (e.g: active) - `role` - The set of permissions of the membership within the organization's account (e.g.: owner, admin). - `locale` - The language chosen by the membership - `team_id` - The team's id that the membership belongs to operationId: '' parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/memberships/invite_employee_or_accountant: post: summary: Create and invite a new membership security: - OAuth: - membership.write requestBody: content: application/json: schema: type: object required: - membership properties: membership: type: object properties: email: type: string format: email example: client@qonto.com description: email of the person being invited to join the organization first_name: type: string example: Bruce Thomas Patrick description: first name of the person being invited to join the organization last_name: type: string example: Wayne description: last name of the person being invited to join the organization role: type: string example: employee enum: - reporting - employee description: role of the person being invited to join the organization team_id: type: string format: uuid description: unique identifier of the team the new membership is being assigned responses: '200': description: returns a created membership content: application/json: schema: type: object properties: membership: type: object properties: id: type: string format: uuid description: the membership's id first_name: type: string example: Bruce Thomas Patrick description: the first name of the membership being invited to join the organization last_name: type: string example: Wayne description: the last name of the membership being invited to join the organization email: type: string example: client@qonto.com description: the email address of the membership being invited to join the organization role: type: string example: employee enum: - reporting - employee description: the set of permissions of the membership within the organization's account locale: type: string description: the language chosen by the membership being invited to join the organization team_id: type: string format: uuid description: the team id to which the membership has been assigned '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: unauthorized detail: type: string example: Invalid credentials '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: forbidden detail: type: string example: Forbidden '422': description: returns an unprocessable entity error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string example: blank detail: type: string example: first_name must be filled source: type: object properties: pointer: type: string example: /first_name tags: - Memberships description: |- OAuth scope: `membership.write` --- Create a new membership and invite it to the authenticated organization. This endpoint allows to create a new member and invite them into the organization into a team which is defined in the request. Once the endpoint is called correctly, the new member is created and the user receives an invitation email. In this email, the user will receive instructions on how to activate the membership and join the authenticated organization’s Qonto account. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/organization: get: summary: Get organization and its bank accounts security: - OAuth: - organization.read - SecretKey: [] responses: '200': description: Returns the organization and its bank accounts. The organization returned is determined from the `secret_key` or the OAuth2.0 `access_token`. content: application/json: schema: type: object properties: organization: type: object properties: id: type: string x-stoplight: id: a4tzn5r281lzd description: UUID of the organization. name: type: string x-stoplight: id: js7fnxkykuhcw description: Name of the organization. slug: type: string example: elektro-tesla-gmbh-3066 description: Slug based on organization's legal name. legal_name: type: string example: Elektro Tesla GmbH description: Registered name of the organization. nullable: true locale: type: string example: de description: Default language set for the organization. legal_share_capital: type: number example: 1000 description: 'Informed share capital, expressed in euros.' legal_country: type: string example: DE description: Country of incorporation of the organization. legal_registration_date: type: string example: '2022-11-27' description: Date of incorporation of the organization. nullable: true legal_form: type: string example: GmbH description: Legal formation of the organization. legal_address: type: string example: Fritz-Arnold-Str. 18 85614 Kirchseeon GERMANY description: Address of the organization. legal_sector: type: string example: 6200Z description: Code of the organization's activity sector. nullable: true contract_signed_at: type: string example: '2022-12-01 08:57:00.123047' format: date-time description: 'Date and time, in UTC, the account was opened.' legal_number: type: string example: 12A34FC5 description: 'Unique number of registration (e.g.: SIRET in France).' bank_accounts: type: array items: type: object properties: id: type: string example: 018f71db-c635-78b5-b90a-ea05de98c2bf description: UUID of the bank account. slug: type: string description: Slug of the bank account based on the organ's slug. iban: description: Might be empty for external accounts (i.e. when `is_external_accounts == true`). type: string example: FR7616798000010000005663951 bic: type: string description: Might be empty for external accounts (i.e. when `is_external_accounts == true`). currency: type: string example: EUR description: Currency of the bank account. balance: type: number format: float description: 'Actual amount of money on the account, in euros.' balance_cents: type: integer description: 'Actual amount of money on the account, in euros.' authorized_balance: type: number format: float description: 'Amount available for payments, taking into account transactions that are being processed. [More information here](https://support.qonto.com/hc/en-us/articles/115000493249-How-is-the-balance-of-my-account-calculated-).' authorized_balance_cents: type: integer description: 'Amount available for payments, taking into account transactions that are being processed. [More information here](https://support.qonto.com/hc/en-us/articles/115000493249-How-is-the-balance-of-my-account-calculated-).' name: type: string description: Name of the bank account. updated_at: type: string description: 'Date and time, in UTC, of the last update of the bank account.' example: '2024-07-02T08:25:11.155Z' status: type: string enum: - active - closed description: Status of the bank account. main: type: boolean description: Sets to`true` if the bank account is used for billing. There is only one main account in a given organization. is_external_account: type: boolean x-stoplight: id: ctlffwlm10m1e description: 'Sets to `true` if the bank account is not a Qonto account (cf. https://support-fr.qonto.com/hc/en-us/articles/24231375285777-How-to-connect-my-external-accounts-to-my-Qonto-interface).' account_number: type: string x-stoplight: id: umtk10oh2g72w description: Might be empty for Qonto accounts (i.e. when `is_external_account == false`). nullable: true example: organization: id: cb47875a-9b12-416e-aa9a-265b9dfaeee7 slug: elektro-tesla-gmbh-3066 legal_name: Elektro Tesla GmbH legal_number: 12A34FC5 legal_sector: 6200Z legal_registration_date: '2022-11-27' legal_address: Fritz-Arnold-Str. 18 85614 Kirchseeon GERMANY legal_form: GmbH legal_country: DE legal_share_capital: 1000 locale: de contract_signed_at: '2022-12-01 08:57:00.123047' bank_accounts: - slug: super-bankaccount-5785 iban: FR7616798000010000005663951 bic: TRZOFR21XXX currency: EUR balance: 100 balance_cents: 10000 authorized_balance: 100 authorized_balance_cents: 10000 name: Main account updated_at: '2021-03-23T14:00:46.967Z' status: active main: true examples: Only Qonto bank accounts: value: organization: id: 3e29cef2-4808-421e-8c99-e83306c5e0ec name: Coopérative Boulangère Sud slug: cooperative-boulangere-sud-2161 legal_name: Coopérative Boulangère Sud locale: fr legal_share_capital: 0 legal_country: FR legal_registration_date: '2001-10-10' legal_form: SAS legal_address: 18 Rue De Navarin Chez Wework 75009 Paris FRANCE legal_sector: 6200Z contract_signed_at: '2023-07-17T16:13:41.370Z' legal_number: '81948962600039' bank_accounts: - id: 27e7e433-453c-4c32-bd3f-6802ae05940e slug: cooperative-boulangere-sud-2161-bank-account-3 iban: FR7616958000013622273207472 bic: QNTOFRP1XXX currency: EUR balance: 1 balance_cents: 100 authorized_balance: 121 authorized_balance_cents: 12100 name: Placements updated_at: '2024-07-02T08:25:11.155Z' status: active main: false is_external_account: false account_number: '' - id: 6dadba1e-a3a9-40eb-ba99-64532dbe56bc slug: cooperative-boulangere-sud-2161-bank-account-2 iban: FR7616958000012102312621849 bic: QNTOFRP1XXX currency: EUR balance: 0 balance_cents: 0 authorized_balance: 0 authorized_balance_cents: 0 name: Secondary account updated_at: '2023-10-13T15:23:31.360Z' status: closed main: false is_external_account: false account_number: '' - id: e97d6e4b-8179-47ae-88e9-3e43b230251e slug: cooperative-boulangere-sud-2161-bank-account-1 iban: FR7616958000018615533841513 bic: QNTOFRP1XXX currency: EUR balance: 41995921.54 balance_cents: 4199592154 authorized_balance: 41989694.29 authorized_balance_cents: 4198969429 name: Compte principal updated_at: '2024-08-01T10:35:09.089Z' status: active main: true is_external_account: false account_number: '' Includes external banks accounts: value: organization: id: 3e29cef2-4808-421e-8c99-e83306c5e0ec name: Coopérative Boulangère Sud slug: cooperative-boulangere-sud-2161 legal_name: 'Coopérative Boulangère Sud sandbox 2023-07-25T08:52:59Z' locale: fr legal_share_capital: 0 legal_country: FR legal_registration_date: '2001-10-10' legal_form: SAS legal_address: 18 Rue De Navarin Chez Wework 75009 Paris FRANCE legal_sector: 6200Z contract_signed_at: '2023-07-17T16:13:41.370Z' legal_number: '81948962600039' bank_accounts: - id: 27e7e433-453c-4c32-bd3f-6802ae05940e slug: cooperative-boulangere-sud-2161-bank-account-3 iban: FR7616958000013622273207472 bic: QNTOFRP1XXX currency: EUR balance: 1 balance_cents: 100 authorized_balance: 121 authorized_balance_cents: 12100 name: Placements updated_at: '2024-07-02T08:25:11.155Z' status: active main: false is_external_account: false account_number: '' - id: 6dadba1e-a3a9-40eb-ba99-64532dbe56bc slug: cooperative-boulangere-sud-2161-bank-account-2 iban: FR7616958000012102312621849 bic: QNTOFRP1XXX currency: EUR balance: 0 balance_cents: 0 authorized_balance: 0 authorized_balance_cents: 0 name: Secondary account updated_at: '2023-10-13T15:23:31.360Z' status: closed main: false is_external_account: false account_number: '' - id: e97d6e4b-8179-47ae-88e9-3e43b230251e slug: cooperative-boulangere-sud-2161-bank-account-1 iban: FR7616958000018615533841513 bic: QNTOFRP1XXX currency: EUR balance: 41995921.54 balance_cents: 4199592154 authorized_balance: 41989694.29 authorized_balance_cents: 4198969429 name: Compte principal updated_at: '2024-08-01T10:35:09.089Z' status: active main: true is_external_account: false account_number: '' - id: 0191221f-2452-735f-9144-bff2ca4fa8a4 slug: cooperative-boulangere-sud-2161-bank-account-4 iban: FR802043302626N265296869145 bic: '' currency: EUR balance: 9.02 balance_cents: 902 authorized_balance: 9.02 authorized_balance_cents: 902 name: Main Account Compte courant updated_at: '2024-08-05T10:39:13.000Z' status: active main: false is_external_account: true account_number: 0263765d-8d0e-41f0-a025-9dd2ed891507 '401': description: Returns an unauthorized error. content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action tags: - Organizations description: |- OAuth scope: `organization.read` --- Retrieves the details and the list of bank accounts for the authenticated organization. --- The bank account's `id` or `iban` will be required to retrieve the list of transactions inside that bank account, using [/v2/transactions](/reference/openapi_v2.yml/paths/~1v2~1transactions/get). parameters: - schema: type: boolean default: false in: query name: include_external_accounts description: 'By default includes only Qonto accounts. Set to ''true'' if you also want to include your [connected externals account(s)](https://support-fr.qonto.com/hc/en-us/articles/24231375285777-How-to-connect-my-external-accounts-to-my-Qonto-interface).' - $ref: '#/components/parameters/X-Qonto-Staging-Token' '/v2/transactions/{id}/attachments': post: summary: Upload attachment to a transaction security: - OAuth: - attachment.write - SecretKey: [] parameters: - name: id in: path required: true schema: type: string format: uuid example: 2751a41c-c17f-43f7-bd18-04efa6cd8e30 - schema: type: string format: uuid in: header name: X-Qonto-Idempotency-Key description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. example: 4668aec5-4e9c-4a41-b6d1-fc3c13c70dd5 - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary examples: example: value: file: <% multipart/form-data file data %> example: file: test_image.png application/x-www-form-urlencoded: schema: type: object properties: file: type: string example: file: foobar.png description: |- You have to specify multipart form data in order to attach the file to the request. When using `curl` it will look like that: ``` curl --request POST \ --url https://thirdparty.qonto.com/v2/transactions/{id}/attachments \ -H "Content-Type: multipart/form-data" \ -H "Authorization: {Auth}" \ -F file="@path/to/a/file.jpg" ``` responses: '200': description: accepts the file and returns a success status code headers: {} '400': description: returns a bad request error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: pointer: type: string example: errors: - code: missing_file detail: The request is missing a file parameter source: pointer: /file '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: Transaction not found source: parameter: id tags: - Attachments in Transactions description: |- OAuth scope: `attachment.write` --- Upload an attachment to a transaction --- This endpoint allows you to upload an attachment to a transaction. Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. Probative attachment is another version of attachment, compliant with [PAdES](https://en.wikipedia.org/wiki/PAdES) standard. **Important**: for security reasons, the `url` you retrieve for each Attachment is only valid for 30 minutes. If you need to download the file after more than 30 minutes, you will need to perform another authenticated call in order to generate a new download URL. > The uploaded file will be processed in the background. This means that the created attachment will not be visible immediately. get: summary: List attachments in a transaction security: - OAuth: - organization.read - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: aab86d8a-0d4c-4749-9a49-0ada88a9c423 - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns a list of attachments content: application/json: schema: type: object properties: attachments: type: array items: type: object properties: id: type: string created_at: type: string file_name: type: string file_size: type: string file_content_type: type: string url: type: string probative_attachment: type: object properties: status: type: string file_name: type: string file_content_type: type: string file_size: type: string url: type: string nullable: true example: attachments: - id: 9b048e2c-d546-415b-b001-d31a6d4ae1e3 created_at: '2021-01-27T22:05:07.000Z' file_name: Foobar file_size: '666' file_content_type: image/png url: 'https://my-s3.url.qonto.bucket.com/123456789' probative_attachment: status: available file_name: statement.pdf file_content_type: application/pdf file_size: '123' url: 'https://my-s3.url.qonto.bucket.com/123456789' '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: Transaction not found source: parameter: id tags: - Attachments in Transactions description: | OAuth scope: `organization.read` --- Retrieve the list of attachments within a transaction. --- Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. Probative attachment is another version of attachment, compliant with [PAdES](https://en.wikipedia.org/wiki/PAdES) standard. **Important**: for security reasons, the `url` you retrieve for each Attachment is only valid for 30 minutes. If you need to download the file after more than 30 minutes, you will need to perform another authenticated call in order to generate a new download URL. Note: if you download the file using `curl`, replace the `\u0026` references by `&` in the `url` string. delete: summary: Remove all attachments from a transaction security: - OAuth: - attachment.write - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: 2750ad5e-6c04-4096-88d8-ab43363bdb57 - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns a success status code '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: Transaction not found source: parameter: id tags: - Attachments in Transactions description: |- OAuth scope: `attachment.write` --- Remove all attachments from a transaction --- This endpoint allows you to remove all attachments from a transaction. Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. /v2/transactions: get: summary: List transactions security: - OAuth: - organization.read - SecretKey: [] parameters: - schema: type: string example: 018f71db-c635-78b5-b90a-ea05de98c2bf in: query name: bank_account_id description: 'The `id` of the bank account for which transactions will be retrieved. Use [/v2/organization](openapi_v2.yml/paths/~1v2~1organization/get) to get this parameter. If both `bank_account_id` and `iban` are specified, `bank_account_id` takes precedence.' allowReserved: false - schema: type: string example: FR7616798000010000005663951 in: query name: iban description: 'The IBAN of the bank account for which transactions will be retrieved. Use [/v2/organization](openapi_v2.yml/paths/~1v2~1organization/get) to get this parameter. If both `bank_account_id` and `iban` are specified, `bank_account_id` takes precedence.' - schema: type: string enum: - vat_details - labels - attachments in: query name: 'includes[]' description: 'Use this query parameter to embed the associated resources (labels, attachments and/or VAT details) of the transactions in the JSON response.' - schema: type: string example: 'status[]=completed&status[]=declined&status[]=pending' enum: - pending - declined - completed default: completed in: query name: 'status[]' description: 'Transactions can be filtered by their `status` attribute.
Possible values:
- `pending`: a transaction that is processing and has impacted the bank account''s `auth_balance` but not its `balance`;
- `declined`: a transaction that has been declined;
- `completed`: a transaction that is completed, and has impacted the bank account''s `balance`.' - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_from description: 'Transactions can be filtered by their `updated_at` attribute. This filter can be used in combination with the `updated_at_to` query parameter to get transactions updated within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). ' - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: updated_at_to description: Transactions can be filtered by their `updated_at` attribute. This filter can be used in combination with the `updated_at_to` query parameter to get transactions updated within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: emitted_at_from description: Transactions can be filtered by their `emitted_at` attribute. Can be use in combination with the `emitted_at_to` query parameter to get transactions emitted within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: emitted_at_to description: Transactions can be filtered by their `emitted_at` attribute. This filter can be used in combination with the `emitted_at_from` query parameter to get transactions emitted within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: settled_at_from description: Transactions can be filtered by their `settled_at` attribute. This filter can be used in combination with the `settled_at_to` query parameter to get transactions settled within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). - schema: type: string example: '2019-01-10T11:47:53.123Z' in: query name: settled_at_to description: Transactions can be filtered by their `settled_at` attribute. This filter can be used in combination with the `settled_at_from` query parameter to get transactions settled within a specific timeframe. Please use a valid date time format (**ISO 8601** for instance). - schema: type: string enum: - credit - debit in: query name: side description: Transactions can be filtered by their `side` attribute. - schema: type: string example: 'operation_type[]=card&operation_type[]=transfer&operation_type[]=income' in: query name: 'operation_type[]' description: Transactions can be filtered by their `operation_type` attribute. - schema: type: boolean enum: - 'true' - 'false' in: query name: with_attachments description: Transactions can be filtered based on the presence of one or more attachments. - schema: type: string default: '`settled_at:desc`' in: query name: sort_by description: "Transactions can be sorted by a specific field and order (`field:order` format).
\U0001F449 Field: `updated_at`, `settled_at` or `emitted_at`
\U0001F449 Order: `asc` (Ascending) / `desc` (Descending)" - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: 'Contains the list of transactions that contributed to the given bank account''s balances (e.g., incomes, transfers, cards). All transactions visible in Qonto''s UI can be fetched, as of API V2.' content: application/json: schema: type: object properties: transactions: type: array items: $ref: '#/components/schemas/Transaction' meta: type: object properties: current_page: type: integer next_page: type: integer nullable: true prev_page: type: integer nullable: true total_pages: type: integer total_count: type: integer per_page: type: integer maximum: 100 minimum: 0 default: 100 example: transactions: - transaction_id: super-transaction-7468 amount: 0.43 amount_cents: 43 settled_balance: 111.1 settled_balance_cents: 11110 attachment_ids: [] local_amount: 0.43 local_amount_cents: 43 side: debit operation_type: transfer currency: EUR local_currency: EUR label: Ferry-Purdy settled_at: '2021-03-03T16:06:38.000Z' emitted_at: '2021-02-25T16:22:37.000Z' updated_at: '2020-12-12T19:52:10.000Z' status: completed note: Rhea Ernser reference: null vat_amount: null vat_amount_cents: null vat_rate: null initiator_id: ccdcef78-1aa1-4d44-b991-b10005a4ad1a label_ids: - 6450e541-0a6f-4153-a46e-34d98848e280 attachment_lost: false attachment_required: true card_last_digits: '1234' category: gas_station id: df346899-3595-421a-8b26-f9d9616ce496 subject_type: transfer transfer: counterparty_account_number: NL93RABO3730976796 counterparty_account_number_format: IBAN counterparty_bank_identifier: RABO counterparty_bank_identifier_format: SWIFT_BIC meta: current_page: 1 next_page: null prev_page: null total_pages: 1 total_count: 1 per_page: 100 examples: Example 1: value: transactions: - id: string transaction_id: string amount: '10,00' amount_cents: 1000 settled_balance: 0 settled_balance_cents: 0 attachment_ids: - string local_amount: '10,87' local_amount_cents: 1087 logo: small: 'https://qonto.com/customized-qonto-brand-logos/small.png' medium: 'https://qonto.com/customized-qonto-brand-logos/medium.png' side: string operation_type: string currency: string local_currency: USD label: string settled_at: string emitted_at: string updated_at: string status: string note: string reference: string vat_amount: 0 vat_amount_cents: 0 vat_rate: 10 initiator_id: string label_ids: - string attachment_lost: true attachment_required: true card_last_digits: string category: string subject_type: string bank_account_id: string is_external_transaction: true attachments: - id: string created_at: string file_name: string file_size: string file_content_type: string url: string probative_attachment: status: string labels: - id: string name: string parent_id: string vat_details: items: - amount: string amount_cents: string amount_excluding_vat: string amount_excluding_vat_cents: string rate: string transfer: counterparty_account_number: string counterparty_account_number_format: string counterparty_bank_identifier: string counterparty_bank_identifier_format: string income: counterparty_account_number: string counterparty_account_number_format: string counterparty_bank_identifier: string counterparty_bank_identifier_format: string swift_income: counterparty_account_number: string counterparty_account_number_format: string counterparty_bank_identifier: string counterparty_bank_identifier_format: string direct_debit: counterparty_account_number: string counterparty_account_number_format: string counterparty_bank_identifier: string counterparty_bank_identifier_format: string check: check_number: string check_key: string financing_installment: total_installments_number: 0 current_installment_number: 0 pagopa_payment: notice_number: string creditor_fiscal_code: string iuv: string meta: current_page: 0 next_page: null prev_page: null total_pages: 0 total_count: 0 per_page: 100 '400': description: Returns a bad request response. content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string message: type: string example: errors: - code: sort_invalid message: Sort field is invalid - code: date_invalid message: The datetime in settled_at_from param isn't well formatted (ISO 8601) or year is out of range - code: status_invalid message: At least one status isn't valid '404': description: Returns a not found error. content: text/plain: schema: type: string example: ' ' '422': description: Returns errors. content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: bank_account_id or iban missing: value: errors: - code: missing detail: bank_account_id or iban is missing tags: - Transactions description: "OAuth scope: `organization.read`\n\n---\n\nRetrieves all transactions for a **given bank account** identified either by its `bank_account_id` either by its `iban` (cf. [Query Parameters](https://api-doc.qonto.com/docs/business-api/2c89e53f7f645-list-transactions#Query-Parameters) \U0001F447)\n" parameters: [] '/v2/transactions/{id}': get: summary: Show transaction security: - OAuth: - organization.read - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: 7b7a5ed6-3903-4782-889d-b4f64bd7bef9 description: UUID of the transaction to retrieve. - schema: type: string enum: - vat_details - labels - attachments in: query name: 'includes[]' description: 'Use this query parameter to embed the associated resources (labels, attachments and/or VAT details) of the transactions in the JSON response.' - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: Returns a transaction. content: application/json: schema: type: object properties: transaction: $ref: '#/components/schemas/Transaction' example: transaction: transaction_id: super-transaction-6576 amount: 52.4 amount_cents: 5240 settled_balance: 111.1 settled_balance_cents: 11110 attachment_ids: [] local_amount: 52.4 local_amount_cents: 5240 side: debit operation_type: transfer currency: EUR local_currency: EUR label: Stamm and Sons settled_at: '2021-03-14T17:17:02.000Z' emitted_at: '2021-03-06T12:33:13.000Z' updated_at: '2021-03-21T21:32:03.000Z' status: completed note: Jacynthe Kuhic reference: null vat_amount: null vat_amount_cents: null vat_rate: null initiator_id: 6e5468a1-22ad-4974-bf9f-45652511d39c label_ids: - 872a75d8-b85c-467e-b8f0-091ea48ef68f attachment_lost: false attachment_required: true card_last_digits: '1234' category: gas_station id: 7b7a5ed6-3903-4782-889d-b4f64bd7bef9 attachments: - id: ea54f563-eaee-4dcb-b08e-688dc9937d23 created_at: '2021-03-18T11:52:07.000Z' file_name: Foobar file_size: '666' file_content_type: image/png url: 'https://qonto-dev.s3.eu-central-1.amazonaws.com/test/uploads/attachment/ea54f563-eaee-4dcb-b08e-688dc9937d23/%23%3CRack%3A%3ATest%3A%3AUploadedFile%3A0x00005635fc7cf8e8%3E?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAZ4DSTCECB4IXGFVF%2F20210521%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210521T080955Z&X-Amz-Expires=1800&X-Amz-SignedHeaders=host&X-Amz-Signature=b6b8977aff8529018d15a05f3e36cc5b59e325d675b6538ff55005aa8e2eb3ed' probative_attachment: status: unavailable labels: - id: 211e69c1-f27f-4b45-a623-bec44a715ee7 name: Durable Silk Table parent_id: null subject_type: transfer transfer: counterparty_account_number: NL93RABO3730976796 counterparty_account_number_format: IBAN counterparty_bank_identifier: RABO counterparty_bank_identifier_format: SWIFT_BIC '404': description: Returns a not found error. content: text/plain: schema: type: string example: ' ' tags: - Transactions description: |- OAuth scope: `organization.read` --- Retrieves a single transaction for a given bank account. --- The response contains a single transaction that contributed to the bank account's balances (e.g., incomes, transfers, cards). All transactions visible in Qonto's UI can be fetched, as of API V2. parameters: - schema: type: string example: 7b7a5ed6-3903-4782-889d-b4f64bd7bef9 name: id in: path required: true description: UUID of the transaction. '/v2/transactions/{id}/attachments/{id}': delete: summary: Remove an attachment from a transaction security: - OAuth: - attachment.write - SecretKey: [] parameters: - name: id in: path required: true schema: type: string example: 644cf847-125e-4ec9-920d-0d09aaeb4bbc - name: id in: path required: true schema: type: string example: 38269301-a7f4-49b4-b9b4-539078fd4a43 - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns a success status code '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. '404': description: returns a not found error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string example: errors: - code: not_found detail: Transaction not found source: parameter: id tags: - Attachments in Transactions description: |- OAuth scope: `attachment.write` --- Remove an attachment from a transaction --- This endpoint allows you to remove a specific attachment from a transaction. Inside Qonto, attachments are files uploaded onto transactions by users. Attachments typically correspond to the *invoice* or *receipt*, and are used to justify the transactions from a bookkeeping standpoint. /v2/internal_transfers: post: summary: Create internal transfer parameters: - name: X-Qonto-Idempotency-Key schema: type: string format: uuid required: true in: header description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. example: 219439cf-b519-4d62-86d0-57b6d15ebaa5 - $ref: '#/components/parameters/X-Qonto-Staging-Token' tags: - Internal Transfers description: |- OAuth scope: `internal_transfer.write` --- Instant transfers between accounts of the same organization --- This endpoint allows you to execute transfers between accounts of the same organization. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID. --- You can obtain details for each organization account using [Show organization](/reference/openapi_v2.yml/paths/~1v2~1organizations~1%7Bid%7D/get) --- ## Request parameter details
##### Amount and Currency * The `amount` corresponds to the amount of the transaction in the `currency` of the bank account. Amounts must be https://www.w3.org/TR/payment-request/#dfn-valid-decimal-monetary-value * The `currency` field only accepts “EUR” * More information: https://www.w3.org/TR/payment-request/#paymentcurrencyamount-dictionary
##### Reference * Transfer reference that can be used to enter transfer details to further describe the transfer * Maximum `reference` length is `99` characters
##### Side * `credit_iban`: IBAN of account to credit * `debit_iban`: IBAN of account to debit security: - OAuth: - internal_transfer.write - SecretKey: [] requestBody: content: application/json: schema: type: object properties: internal_transfer: type: object required: - debit_iban - credit_iban - reference - amount - currency properties: debit_iban: type: string credit_iban: type: string reference: type: string amount: type: string currency: type: string required: - internal_transfer example: internal_transfer: debit_iban: IT12M3609201600032486198434 credit_iban: IT13M3609201600032486198435 reference: Internal transfer amount: '12345.67' currency: EUR responses: '200': description: returns a success status code content: application/json: schema: type: object properties: internal_transfer: type: object description: '' properties: id: type: string description: Transfer ID slug: type: string description: Transfer slug status: type: string description: Transfer status (always pending) amount: type: string description: Transfer amount amount_cents: type: string description: Transfer amount in cents currency: type: string description: Transfer currency (EUR only) reference: type: string description: Transfer reference created_at: type: string description: Transfer creation time example: internal_transfer: id: 0ded2767-f44d-48b4-9e98-b8b6d9359c07 slug: yottanet-6666-1-transfer-52 status: pending amount: '12345.67' amount_cents: '1234567' currency: EUR reference: Internal transfer created_at: '2021-05-11T10:22:55.090Z' '400': description: returns a bad request error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: pointer: type: string example: errors: - code: insufficient_funds detail: Insufficient funds source: pointer: /amount '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unauthorized detail: You must be authenticated to perform this action '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action. x-internal: false /v2/requests: get: summary: List requests operationId: list_requests parameters: - name: status in: query schema: type: array items: type: string enum: - pending - approved - canceled - declined - name: request_type in: query schema: type: array items: type: string enum: - transfer - multi_transfer - flash_card - virtual_card - name: created_at_from in: query schema: type: string format: date-time example: '2019-01-10T11:47:53.123Z' - name: processed_at_from in: query schema: type: string format: date-time example: '2019-01-10T11:47:53.123Z' - name: sort_by in: query schema: type: string enum: - 'created_at:asc' - 'created_at:desc' - 'processed_at:asc' - 'processed_at:desc' - 'status:asc' - 'status:desc' - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: lists requests for a given organization content: application/json: schema: type: object required: - requests - meta properties: requests: type: array items: oneOf: - $ref: '#/components/schemas/RequestFlashCard' - $ref: '#/components/schemas/RequestVirtualCard' - $ref: '#/components/schemas/RequestMultiTransfer' - $ref: '#/components/schemas/RequestTransfer' meta: $ref: '#/components/schemas/Pagination' example: meta: current_page: 1 next_page: null prev_page: null total_pages: 1 total_count: 4 per_page: 25 requests: - id: 965b8c57-72fd-4d12-8d85-56874104c81a request_type: virtual_card status: pending initiator_id: cc32875a-a590-44c7-bdc1-0680ae72b0db approver_id: null note: Library subscription declined_note: null payment_monthly_limit: '5.00' currency: EUR processed_at: null created_at: '2021-11-24T10:34:51.706Z' - id: fd6d72c0-557d-4d51-8502-d7ce86cb72ea request_type: flash_card status: canceled initiator_id: dbbb579a-f8a5-41df-8cea-09e040464366 approver_id: null note: Restaurant declined_note: null pre_expires_at: '2022-03-15T22:59:59.999Z' payment_lifespan_limit: '250.00' currency: EUR processed_at: '2021-11-24T10:33:59.965Z' created_at: '2021-11-24T10:33:23.817Z' - id: 68e38bca-064c-4b50-8343-26ce40f617af request_type: multi_transfer status: approved initiator_id: 300d309f-a7e0-4db2-af3b-003ce0a676a4 approver_id: 087a7f4f-d316-4bad-810f-84807634cb9f note: Scheduled multi transfer (for Aug 2022) declined_note: null total_transfers_amount: '25561.80' total_transfers_amount_currency: EUR total_transfers_count: 43 scheduled_date: '2022-08-15' processed_at: '2021-11-24T10:34:51.706Z' created_at: '2021-11-10T12:22:28.790Z' - id: 57d28d6f-3a22-4573-990a-c62d2f7d67f0 request_type: transfer status: declined initiator_id: dbbb579a-f8a5-41df-8cea-09e040464366 approver_id: 788571b5-1aea-4aec-bb7b-366288a4ba68 note: Provider subscription declined_note: This is not in our policy creditor_name: John Doe amount: '30.00' currency: EUR scheduled_date: '2021-10-06' recurrence: monthly last_recurrence_date: null processed_at: '2021-10-06T16:14:28.284Z' created_at: '2021-10-06T16:14:11.673Z' '422': description: Returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when created_at_at_from is invalid: value: errors: - code: invalid detail: created_at_from is not a valid date source: properties: pointer: /created_at_from tags: - Requests description: "OAuth scope: `organization.read`\n\n_This endpoint is only accessible by organizations in a Business or Enterprise plan._\n\n---\nRetrieve all requests within an organization.\n\n---\nThe response contains the list of requests linked to the authenticated organization.\nThis allows to include request updates and treatment in any other workflows or tools\nused for the day-to-day work.\n\n---\n\n## Attributes details\n\n#### Request Type\n`request_type` is an array that can take 4 different values:\n- `flash_card`: a flash card is a non-physical card with a budget and a last day of validity.\n The card becomes inactive after the budget is totally spent or the last date of validity is past.\n- `virtual_card`: a virtual card is a non-physical card with a monthly budget.\n Card holder can spend that amount every calendar month. Above that, transactions will be refused.\n- `transfer`: a transfer of money from one Qonto account to another account.\n- `multi_transfer`: several transfers executed at the same time.\n A document can be provided to create a multi-transfer which is composed of many different transfers.\n\n#### Status\n`status` is an array that can take 4 different values:\n\n- `pending`: the request is waiting for a final status.\n- `approved`: the request has been approved by one of the authorized members.\n All admins and owners can approve a request.\n- `declined`: the request has been declined by one of the authorized members.\n All admins and owners can decline a request.\n- `canceled`: the request has been canceled by its initiator.\n\n#### Initiator ID\n`initiator_id`: ID of the membership that initiated the request. When the request is initiated through the API, the initiator is the authenticated membership.\n\n#### Approver ID\n`approver_id:` Identifier of the membership who either approved or declined the request.\nIt matches with the ID of the membership object.\n\n#### Note\n`note`: mandatory note to explain the reason of the request.\nThis is a free format note.\n\n#### Declined note\n`declined_note`: it's a free format field filled in by the membership who declined the request.\n\n#### Dates\n- `created_at`: timestamp of creation of the request.\n Example: `2019-01-10T11:47:53.123Z`.\n- `processed_at`: timestamp of when the request decision is taken.\n Either Approved or Declined by an admin. Or canceled by the requester.\n Example: `2019-01-10T11:47:53.123Z`.\n\n#### Currency\n`currency`: Must be EUR. ISO 4217 formatted.\n\n#### Flash Card\nThe following fields are only present when `request_type = \"flash_card\"`.\n\n- `pre_expires_at`: expiry date has been chosen by the requester during the request creation.\n Expires happen always at midnight.\n Example: `2023-06-17T23:59:59Z`.\n- `payment_lifespan_limit`: maximum amount to be spent with that card in total.\n This amount is in the currency of `currency`.\n Example: `\"1500.00\"`.\n\n#### Virtual Card\nThe following fields are only present when `request_type = virtual_card`.\n\n- `payment_monthly_limit`: maximum amount to be spent with that card in total, per calendar month.\n This amount is in the currency of `currency`.\n Example: `\"1500.00\"`.\n\n#### Transfer\nThe following fields are only present when `request_type = transfer`.\n\n- `amount`: exact amount of the transfer to be approved.\n This amount is in the currency of `currency`.\n Example: `\"1234.56\"`.\n- `recurrence`: when it's not `null`, it means that transfer will be recreated\n on the given frequency until `last_date_recurrence`.\n Can be `null`, or `weekly` or `monthly`.\n- `last_recurrence_date`: limit date of the recurring transfer.\n No transfer happens after this date.\n Example: `2019-01-15`\n- `creditor_name`: full name of the beneficiary of the transfer. Max 140 chars long.\n- `scheduled_date`: Can be set by the requester to send the transfer later and not immediately.\n Can only be set in the future by the requester. Defaults to current date or next banking day.\n Example: `2019-01-15`.\n\n#### Multi-Transfer\nThe following fields are only present when `request_type = multi_transfer`.\n\n- `total_transfers_amount`: sum of all transfers amounts included in the multi-transfer.\n This amount is in the currency of `total_transfers_amount_currency`.\n Example: `\"1234.56\"`\n- `total_transfers_amount_currency`: Must be EUR. ISO 4217 formatted.\n Only Request in EUR are allowed. Allowed values:`EUR`.\n- `total_transfers_count`: number of transfers included in the multi-transfer.\n- `scheduled_date`: Can be set by the requester to send the transfer later and not immediately.\n Can only be set in the future by the requester. Defaults to current date or next banking day.\n Example: `2019-01-15`.\n\n## Filters\n`status`\n\nRequests can be filtered by status. The\_**`status`**\_query parameter accepts an array\nof statuses as value. Here is what statuses correspond to:\n\n- `pending`: a request still waiting for final status.\n- `approved`: a request that has been approved by approver. Final status.\n- `declined`: a request that has been declined by approver. Final status.\n- `canceled`: a request that has been canceled by requester. Final status.\n\nFor example, if you want to retrieve several requests statuses, you can use the following filter: `status[]=approved&status[]=declined&status[]=pending`\n\n**Do note**:\_*If no\_`status`\_is specified, the API will return\_all the requests.*\n
\n
\n\n`request_type`\n\nRequests can be filtered by type. The\_`request_type`\_query parameter accepts an array of\nstatuses as value. Here is what request types correspond to:\n\n- `flash_card`: a flash card is a non-physical card with a budget and a last day of validity.\n The card becomes inactive after the budget is totally spent or the last date of validity is past.\n- `virtual_card`: a virtual card is a non-physical card with a monthly budget.\n Card holder can spend that amount every calendar month. Above that, transactions will be refused.\n- `transfer`: a transfer of money from one Qonto account to another account.\n- `multi_transfer`: several transfers executed at the same time.\n A document can be provided to create a multi-transfer which is composed of many different transfers.\n\n**Do note**:\_*If no `request_type` specified, the API will return\_all the requests.*\n
\n
\n\n`processed_at_from` / `created_at_from`\n\nRequests can be filtered according to both\_`processed_at`\_and\_`created_at`\_fields.\nThis is particularly useful to retrieve only the latest updated requests in your application.\nTwo filters are available:\n\n- `processed_at_from`: minimum value (e.g:\_`2019-01-10T11:47:53.123Z`).\n- `created_at_from`: minimum value (e.g:\_`2019-01-10T11:47:53.123Z`).\n\n**Do note**: *`processed_at_from` / `created_at_from` filters should have a valid date time format (**ISO 8601**\_for instance)*\n\n## Sorting\nRequest list can be sorted by a specific field and order.\nThe\_`sort_by`\_query parameter accepts a string defining these two items with the\_`field:order`\_format.\n\n- `processed_at`: when request was processed.\n Two values are available:\_`asc`\_(ascending) /\_`desc`\_(descending)\n\n- `created_at`: when request was created.\n Two values are available:\_`asc`\_(ascending) /\_`desc`\_(descending)\n\n- `status`: reflects the information about the request status.\n Two values are available:\_`asc`\_(ascending) /\_`desc`\_(descending).\n Sorting by ascending gives a list of request with statuses in the given order: `pending`, `approved`, `declined`, `canceled`.\n\n**Do note**: *Use a combination of field and order to define how to sort the transfer list (e.g\_**`processed_at:asc`**).*\n*By default, requests are sorted by `created_at:desc`.*\n\n## Pagination\nDefault number of items per page is 25. [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination).\n" security: - OAuth: - organization.read - SecretKey: [] /v2/requests/flash_cards: post: summary: Create a flash card request tags: - Requests description: | Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `request_cards.write` --- Create a request of flash card that should be approved by a membership with permissions to review requests. --- The response contains the created request. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: application/json: schema: properties: request_flash_card: properties: note: type: string description: Description of a nature of request. Helps approver to understand the reason of this request. example: Library subscription payment_lifespan_limit: $ref: '#/components/schemas/card_payment_lifespan_limit' pre_expires_at: $ref: '#/components/schemas/card_pre_expires_at' security: - OAuth: - request_cards.write responses: '200': description: OK content: application/json: schema: type: object properties: request_flash_card: $ref: '#/components/schemas/RequestFlashCard' '400': $ref: '#/components/responses/400-Bad-request' '401': $ref: '#/components/responses/401-Unauthorized' '403': $ref: '#/components/responses/403-Forbidden' '422': $ref: '#/components/responses/422-Unprocessable-entity' /v2/requests/virtual_cards: post: summary: Create a virtual card request tags: - Requests description: | Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `request_cards.write` --- Create a request of virtual card that should be approved by a membership with permissions to review requests. --- The response contains the created request. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: application/json: schema: properties: request_virtual_card: properties: note: type: string description: Description of a nature of request. Helps approver to understand the reason of this request. example: Library subscription payment_monthly_limit: $ref: '#/components/schemas/card_payment_monthly_limit' security: - OAuth: - request_cards.write responses: '200': description: OK content: application/json: schema: type: object properties: request_virtual_card: $ref: '#/components/schemas/RequestVirtualCard' '400': $ref: '#/components/responses/400-Bad-request' '401': $ref: '#/components/responses/401-Unauthorized' '403': $ref: '#/components/responses/403-Forbidden' '422': $ref: '#/components/responses/422-Unprocessable-entity' /v2/requests/multi_transfers: post: summary: Create multi transfer request tags: - Requests description: | OAuth scope: `request_transfers.write` _This endpoint is accessible by organizations with all plans except Solo Basic._ --- Create a request of multi transfer that should be approved by a membership with permissions to review requests. --- The response contains the created request. parameters: - name: X-Qonto-Idempotency-Key in: header required: true description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID. schema: type: string - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: required: true content: application/json: schema: required: - request_multi_transfer properties: request_multi_transfer: type: object required: - note - transfers properties: note: type: string description: Description of a nature of request. Helps approver to understand the reason of this request. example: Salary of marketing departmenet. Please approve ASAP. transfers: type: array minItems: 1 maxItems: 400 items: type: object required: - amount - currency - credit_iban - credit_account_name - credit_account_currency - reference properties: amount: type: string description: 'Should be decimal with 2 digits after coma, ex: "1", "1.99", "1.1"' example: '2000.50' currency: type: string description: 'ISO 4217 formatted. Can be either the currency of the debit_iban or the currency of the beneficiary. Allowed values: EUR' example: EUR credit_iban: type: string description: International beneficiary Bank Account Identifier (IBAN) of creditor. Must respect ISO 13616. example: FR7630001007941234567890183 credit_account_name: type: string description: Free format for the name of the beneficiary. Limited to 140 chars. maxLength: 140 example: URSSAF credit_account_currency: type: string description: 'ISO 4217 formatted. Can be either the currency of the debit_iban or the currency of the beneficiary. Allowed values: EUR' example: EUR reference: type: string description: Reference of a transfer. Limited to 140 chars. maxLength: 140 example: Invoice 2023-01 attachment_ids: type: array items: type: string description: Array of UUID that are linked to this transfer. Attachment must be uploaded thanks to a dedicated endpoints before the transfer to be done. example: d840f1cb-6adb-48af-9f89-540dcf5ba741 scheduled_date: type: string format: date description: 'Date when all the transfers should be executed. Format: YYYY-MM-DD' example: '2023-03-06' debit_iban: type: string description: International beneficiary Bank Account Identifier (IBAN) of debitor. Must respect ISO 13616. example: FR0807277000000000000000911 security: - OAuth: - request_transfers.write responses: '200': description: Request multi transfer object content: application/json: schema: type: object required: - request_multi_transfer properties: request_multi_transfer: type: object required: - id - request_type - status - initiator_id - note - total_transfers_amount - total_transfers_amount_currency - total_transfers_count - created_at - transfers properties: id: type: string example: bb8f8d1d-5f12-486e-8f8e-90cc2af76038 request_type: type: string example: multi_transfer status: type: string example: pending initiator_id: type: string example: 6b1872e4-08e4-42ec-9c82-b441ec242a9b description: |- ID of the membership that initiated the request.
When the request is initiated through the API, the initiator is the authenticated membership. approver_id: type: string format: nullable note: type: string example: Salary of marketing departmenet. Please approve ASAP declined_note: type: string format: nullable total_transfers_amount: type: string example: '2000.50' total_transfers_amount_currency: type: string example: EUR total_transfers_count: type: integer format: int32 example: 1 scheduled_date: type: string format: date example: '2023-03-06' processed_at: type: string format: nullable created_at: type: string example: '2023-02-16T17:33:38.215Z' transfers: type: array items: type: object required: - id - credit_account_name - amount - currency - reference properties: id: type: string example: d840f1cb-6adb-48af-9f89-540dcf5ba741 credit_account_name: type: string example: URSSAF amount: type: string example: '2000.50' currency: type: string example: EUR reference: type: string example: Invoice 2023-01 example: request_multi_transfer: id: bb8f8d1d-5f12-486e-8f8e-90cc2af76038 request_type: multi_transfer status: pending initiator_id: 6b1872e4-08e4-42ec-9c82-b441ec242a9b approver_id: null note: Salary of marketing departmenet. Please approve ASAP declined_note: null total_transfers_amount: '2000.50' total_transfers_amount_currency: EUR total_transfers_count: 1 scheduled_date: '2023-03-06' processed_at: null created_at: '2023-02-16T17:33:38.215Z' transfers: - id: d840f1cb-6adb-48af-9f89-540dcf5ba741 credit_account_name: URSSAF amount: '2000.50' currency: EUR reference: Invoice 2023-01 '401': description: Unauthorized '403': description: Forbidden '422': description: Validation errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code - detail properties: code: type: string description: error code example: invalid_transfers detail: type: string description: Human readable error that explains error_code. example: Iban is not valid source: type: object required: - pointer properties: pointer: type: string description: Precises a field and an item in an array (if applicable) that causes an error example: /request_multi_transfer/transfers/0/credit_iban examples: when transfer's iban is not valid: value: errors: - detail: It looks like the IBAN you entered isn’t valid. Could you verify and try again? code: invalid_transfers source: pointer: /request_multi_transfer/transfers/0/iban when reference exceeds the limit: value: errors: - code: above_max_size detail: reference size cannot be greater than 140 source: pointer: /request_multi_transfer/transfers/0/reference when a required field is missing: value: errors: - code: blank detail: note must be filled source: pointer: /request_multi_transfer/note when currency is not supported: value: errors: - code: not_in_list detail: 'currency must be one of: EUR' source: pointer: /request_multi_transfer/transfers/0/currency '/v2/requests/{request_type}/{id}/approve': post: summary: Approve a request operationId: approve_request security: - OAuth: - request_review.write parameters: - in: path name: id required: true schema: type: string description: UUID of the request to be processed. - in: path name: request_type required: true schema: type: string enum: - flash_cards - virtual_cards - transfers - multi_transfers description: Type of a request to be approved. - in: header name: X-Qonto-Idempotency-Key schema: type: string format: uuid required: true description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. example: 219439cf-b519-4d62-86d0-57b6d15ebaa5 - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: required: true content: application/json: schema: type: object properties: debit_iban: type: string format: uuid example: FR7616958000019475096658493 description: 'IBAN of account to debit for transfers or multi_transfers or IBAN of the account to link to the card for flash_cards or virtual_cards. If empty, the main account will be debited or linked.' tags: - Requests description: "OAuth scope: `request_review.write`\n\n**Accessible only using [Strong Customer Authentication](https://api-doc.qonto.com/docs/business-api/ZG9jOjI5MDg3NzA4-strong-customer-authentication)**.\n\n\n>\U0001F4A1 Example of SCA usage: [**Postman visual flow**](https://www.postman.com/qontoteam/workspace/qonto-public-api/flow/6670429eb7bd63003156bd57)\n\n---\n\nThis endpoint allows you to approve a pending request. You can ge the list of all requests via [GET /v2/requests.](https://api-doc.qonto.com/docs/business-api/b3A6Mjk1ODk3MjM-list-requests)\n\nInside Qonto, requests can be listed and approved in the Requests tab.\n\nThe impacted request will change status from `status` = `pending` to `status` = `approved`.\n\n---\n\n**`request_type`**\_can take 4 different values:\n\n- **`flash_cards`**: a flash card is a non-physical card with a budget and a last day of validity. The card becomes inactive after the budget is totally spent or the last date of validity is past.\n- **`virtual_cards`**: a virtual card is a non-physical card with a monthly budget. Card holder can spend that amount every calendar month. Above that, transactions will be refused.\n- **`transfers`**: a transfer of money from one Qonto account to another account.\n- **`multi_transfers`**: several transfers executed at the same time. A document can be provided to create a multi-transfer which is composed of many different transfers." responses: '200': description: returns a success status code content: application/json: schema: type: object properties: request_transfer: type: object oneOf: - $ref: '#/components/schemas/RequestTransfer' - $ref: '#/components/schemas/RequestMultiTransfer' - $ref: '#/components/schemas/RequestFlashCard' - $ref: '#/components/schemas/RequestVirtualCard' discriminator: propertyName: request_type example: request_transfer: id: be160c90-058e-487a-b775-5b5cad3992aa request_type: transfer initiator_id: 8fdb86eb-8e49-4be8-ab60-658b680629af approver_id: null note: personal needs declined_note: null status: approved currency: EUR processed_at: null created_at: '2021-10-11T14:28:28Z' '400': description: returns a bad request error '401': description: returns an unauthorized error '403': description: returns a forbidden error '422': description: returns validation errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when bank account doesn't have enough funds: value: errors: - code: insufficient_funds detail: Chosen bank account doesn't have enough funds source: properties: pointer: /bank_account_id when membership kyc is not accepted: value: errors: - code: kyc_not_accepted detail: Approver kyc is not accepted '428': description: returns SCA precondition required error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string examples: when SCA approval is required on the paired device: value: errors: - code: sca_required detail: You must enable SCA to perform this action '/v2/requests/{request_type}/{id}/decline': post: summary: Decline a request operationId: decline_request security: - OAuth: - request_review.write parameters: - in: path name: id required: true schema: type: string description: UUID of the request to be processed. - in: path name: request_type required: true schema: type: string enum: - flash_cards - virtual_cards - transfers - multi_transfers description: Type of a request to be declined. - in: header name: X-Qonto-Idempotency-Key schema: type: string format: uuid required: true description: The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. example: 219439cf-b519-4d62-86d0-57b6d15ebaa5 - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: required: true content: application/json: schema: type: object required: - declined_note properties: declined_note: type: string format: text example: Contact your manager please tags: - Requests description: "OAuth scope: `request_review.write`\n\n---\n\nThis endpoint allows you to decline a pending request. You can get the list of all requests via [GET /v2/requests.](https://api-doc.qonto.com/docs/business-api/b3A6Mjk1ODk3MjM-list-requests)\n\nInside Qonto, requests can be listed and declined in the Requests tab.\n\nThe impacted request will change status from `status` = `pending` to `status` = `declined`.\n\n---\n\n**`request_type`**\_can take 4 different values:\n\n- **`flash_cards`**: a flash card is a non-physical card with a budget and a last day of validity. The card becomes inactive after the budget is totally spent or the last date of validity is past.\n- **`virtual_cards`**: a virtual card is a non-physical card with a monthly budget. Card holder can spend that amount every calendar month. Above that, transactions will be refused.\n- **`transfers`**: a transfer of money from one Qonto account to another account.\n- **`multi_transfers`**: several transfers executed at the same time. A document can be provided to create a multi-transfer which is composed of many different transfers.\n\n---" responses: '200': description: returns a success status code content: application/json: schema: type: object properties: request_virtual_card: type: object oneOf: - $ref: '#/components/schemas/RequestTransfer' - $ref: '#/components/schemas/RequestMultiTransfer' - $ref: '#/components/schemas/RequestFlashCard' - $ref: '#/components/schemas/RequestVirtualCard' discriminator: propertyName: request_type example: request_virtual_card: id: be160c90-058e-487a-b775-5b5cad3992aa request_type: virtual_card initiator_id: 8fdb86eb-8e49-4be8-ab60-658b680629af approver_id: null note: personal needs declined_note: Contact your manager please status: declined payment_monthly_limit: '500.00' currency: EUR processed_at: null created_at: '2021-10-11T14:28:28Z' '400': description: returns a bad request error '401': description: returns an unauthorized error '403': description: returns a forbidden error '422': description: returns validation errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string examples: when membership kyc is not accepted: value: errors: - code: kyc_not_accepted detail: Approver kyc is not accepted /v2/supplier_invoices: get: summary: Get a list of supplier invoices for an organization operationId: list_supplier_invoices security: - OAuth: - supplier_invoice.read - SecretKey: [] parameters: - schema: type: string example: to_review enum: - to_review - to_pay - pending - scheduled - paid in: query name: 'filter[status]' description: status to filter on - schema: type: integer example: 1 in: query name: page - schema: type: integer example: 25 in: query name: per_page - schema: type: string example: 'name:desc' in: query name: sort_by - schema: type: string example: '2025-07-23T13:35:36Z' in: query name: 'filter[created_at_from]' description: 'RFC3339 format (e.g 2022-01-21T12:01:02Z)' - schema: type: string example: '2026-07-23T13:35:36Z' in: query name: 'filter[created_at_to]' description: 'RFC3339 format (e.g 2022-01-21T12:01:02Z)' - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns an array of supplier invoices content: application/json: schema: type: object required: - supplier_invoices properties: supplier_invoices: type: array items: $ref: '#/components/schemas/SupplierInvoice' meta: $ref: '#/components/schemas/Pagination' '400': description: returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string source: type: object properties: parameter: type: string examples: when created_at_from is invalid: value: errors: - code: invalid_time detail: created_at_from is not a valid time. Refer to the documentation for the right format. source: parameter: 'filter[created_at_from]' when created_at_to is invalid: value: errors: - code: invalid_time detail: created_at_to is not a valid time. Refer to the documentation for the right format. source: parameter: 'filter[created_at_to]' when created_at_from is in the future: value: errors: - code: invalid_datetime_range detail: created_at_from must be in the past. source: parameter: 'filter[created_at_from]' '403': description: returns a forbidden error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action tags: - Supplier Invoices description: | OAuth scope: `supplier_invoice.read` --- **Price plans**: this endpoint is available for all Qonto price plans except Solo basic. List all supplier invoices for an organization --- ## Attributes details ### Initiator `initiator_id` is the member who uploaded the invoice. #### Statuses `status` contains four possible values: - **to_review**: When first uploaded, the invoice lands in this state for review. - **to_pay**: Deprecated: This status will no longer be assigned to **new** supplier-invoices. Any invoices already in the `to_pay` status can be marked as paid or be scheduled for transfer. - **pending**: The invoice is waiting for approval or declining by one of the authorized members (only accessible by organizations in a Business or Enterprise plan). - **scheduled**: The invoice is scheduled to be paid. This status is managed by Qonto as it tracks the updates of the transfer. - **paid**: The invoice is paid. ### Filters #### `status` Supplier invoices can be filter by available status. ### `created_at_from` and `created_at_to` Supplier invoices can be filtered by created date time interval using `created_at_from` and `created_at_to` where: - created_at_from represents the min date. - created_at_to represents the max date. Note that if the created_at_from and created_at_to are not specified in the query parameters, the response will contain all the invoices of that particular organization. ### Sorting Supplier invoices can be sorted by a specific field and order. The `sort_by` query parameter accepts a string defining these two items with the field:order format. #### Field `created_at`, `file_name`, `supplier_name`, `payment_date`, `due_date`, `scheduled_date` and `total_amount` values are available. By default the field used to sort invoices is `created_at:desc` for the `To Review` section and `payment_date:asc` for the `To Pay` and `Processed` `payment_date:desc` #### Order Two values are available : asc (Ascending) / desc (Descending) By default the order used to sort supplier invoices is `desc` ### Pagination Default number of items per page is 1, max items per page is 100. Pagination data is returned in the response : [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination). /v2/supplier_invoices/bulk: post: summary: Create supplier invoices with attachments operationId: bulk_create_supplier_invoices security: - OAuth: - supplier_invoice.write - SecretKey: [] requestBody: content: multipart/form-data: schema: type: object properties: supplier_invoices: type: array items: type: object properties: file: type: string format: binary idempotency_key: type: string required: - file - idempotency_key meta: type: string format: json required: - supplier_invoices examples: example: value: supplier_invoices: - file: path/to/file1.pdf idempotency_key: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 meta: '{"integration_type": "amazon", "connector": "grover"}' description: |- OAuth scope: `supplier_invoice.write` --- You have to specify multipart form data in order to attach the file to the request. When using `curl` it will look like that: ``` curl --location --request POST "http://thirdparty.qonto.com/supplier_invoices/bulk" \ --form "supplier_invoices[][file]=@"/path/to/file1.png"" \ --form "supplier_invoices[][idempotency_key]="4d5418bb-bd0d-4df4-865c-c07afab8bb48"" \ --form "supplier_invoices[][file]=@"/path/to/file2.png"" \ --form "supplier_invoices[][idempotency_key]="4d5418bb-bd0d-4df4-865c-c07afab8bb49"" --form "meta='{\"integration_type\":\"dropbox\",\"connector\":\"grover\"}'" ``` ##### Idempotency_key This is a unique string (we advise to use a `uuid`) that identifies an invoice. This is used by Qonto to prevent performing the same operation twice. responses: '200': description: returns supplier invoices result (there could be failures) content: application/json: schema: type: object required: - supplier_invoices - errors properties: supplier_invoices: type: array items: $ref: '#/components/schemas/SupplierInvoice' errors: type: array items: type: object properties: code: type: string detail: type: string examples: when there are only successes: value: supplier_invoices: - id: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 organization_id: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 file_name: invoice 101/2022.pdf invoice_number: QONTO-JAN-2022 supplier_name: McDonald's description: This is an invoice for Ronald! total_amount: value: '22.10' currency: EUR due_date: '2022-03-01' payment_date: '2022-03-01' scheduled_date: '2022-03-01' status: to_review iban: FR1420041010050500013M02606 initiator_id: 89fq18bb-bd0d-4df4-865c-c07afab882a source_type: email created_at: '2022-03-04T17:58:30+02:00' updated_at: '2022-03-04T17:58:30+02:00' attachment_id: 08c66e1f-dded-4823-8fa3-29bed4d5e873 analyzed_at: '2022-03-04T17:58:30+02:00' deleted_at: '' request_transfer: null meta: {} errors: [] when there is a mix of successes and errors: value: supplier_invoices: - id: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 organization_id: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 file_name: invoice 101/2022.pdf invoice_number: QONTO-JAN-2022 supplier_name: McDonald's description: This is an invoice for Ronald! total_amount: value: '22.10' currency: EUR due_date: '2022-03-01' payment_date: '2022-03-01' scheduled_date: '2022-03-01' status: to_review iban: FR1420041010050500013M02606 initiator_id: 89fq18bb-bd0d-4df4-865c-c07afab882a source_type: email created_at: '2022-03-04T17:58:30+02:00' updated_at: '2022-03-04T17:58:30+02:00' attachment_id: 08c66e1f-dded-4823-8fa3-29bed4d5e873 analyzed_at: '2022-03-04T17:58:30+02:00' deleted_at: '' request_transfer: null errors: - code: invalid detail: File is too large or wrong content type source: - pointer: /supplier_invoices/idempotency_key/abc-xyz/file when there are only errors: value: supplier_invoices: [] errors: - code: invalid detail: File is too large or wrong content type source: - pointer: /supplier_invoices/idempotency_key/abc-xyz/file - code: internal_server_error details: Processing file has failed source: - pointer: /supplier_invoices/idempotency_key/abc-xyz '400': description: returns errors content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string examples: when request exists the limit: value: errors: - code: bad_request detail: Request is too large when number of files is reached: value: errors: - code: limit_reached detail: Limit of 5 invoices reached source: pointer: /supplier_invoices when idempotency_key is missing for at least one file: value: errors: - code: required detail: Idempotency key is required source: pointer: /idempotency_key when file is missing for at least one idempotency_key: value: errors: - code: required detail: File is required source: pointer: /file '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action due to pricing plan tags: - Supplier Invoices description: | OAuth scope: `supplier_invoice.write` --- **Price plans**: this endpoint is available for all Qonto price plans. Bulk create supplier invoices with attachments --- This endpoint will always return a 200 regardless if there are any errors. Clients must ensure to check the `errors` property in order to confirm if all operations were successful. A 400 will be returned if whole request fails. Total size of the request cannot exceed 15MB. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/client_invoices: get: summary: List client invoices operationId: list_client_invoices security: - OAuth: - client_invoices.read - SecretKey: [] parameters: - schema: type: string example: unpaid enum: - draft - unpaid - paid - canceled in: query name: 'filter[status]' - schema: type: string format: date-time example: '2022-02-01T12:01:02Z' in: query name: 'filter[created_at_from]' - schema: type: string format: date-time example: '2022-23-04T16:23:00Z' in: query name: 'filter[created_at_to]' - schema: type: integer example: 1 in: query name: page - schema: type: integer example: 25 in: query name: per_page - schema: type: string example: 'created_at:desc' in: query name: sort_by - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: Returns an array of client invoices. content: application/json: schema: type: object required: - client_invoices properties: client_invoices: type: array items: $ref: '#/components/schemas/ClientInvoice' meta: $ref: '#/components/schemas/Pagination' examples: {} '400': $ref: '#/components/responses/400-Bad-request' '401': $ref: '#/components/responses/401-Unauthorized' '403': $ref: '#/components/responses/403-Forbidden' tags: - Client Invoices description: | OAuth scope: `client_invoices.read` --- Retrieves all client invoices for the authenticated organization. --- ## Filtering - Invoices can be filtered by `status`. Note that the status can contain four possible values: - `draft` the invoice was created but not validated. The invoice still needs to be validated to be paid. - `unpaid` the invoice was created and validated. The invoice is ready to be paid. - `canceled` the invoice was created but canceled by the initiator.The invoice it is not ready to be paid. - `paid` the invoice was created, forwarded to the client, and successfully paid. - Note that if the status is not specified in the query parameters, the response will contain invoices with all four mentioned statuses. - Invoices can be filtered by created date time interval using `created_at_from` and `created_at_to` where: - `created_at_from` represents the min date - `created_at_to` represents the max date - Note that if the `created_at_from` and `created_at_to` are not specified in the query parameters, the response will contain all the invoices of that particular organization. ## Sorting - Invoices can be sorted by `created_at` - Two values are available: `asc` (Ascending) / `desc` (Descending) - By default, the order used to sort `created_at` is `desc` ## Pagination - The default number of items per page is 1, max items per page is 100. Pagination data is returned in the response : [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination). post: summary: Create a client invoice operationId: create_client_invoice tags: - Client Invoices security: - OAuth: - client_invoice.write - SecretKey: [] description: |- OAuth scope: `client_invoice.write` --- Creates a single client invoice for the authenticated organization. See further details below. --- **Price plans**: this endpoint is available for all Qonto price plans. --- The required request attributes are outlined inside Schemas / ClientInvoiceCreatePayload. The response contains the attributes of the client invoice entered in the request, along with additional fields that are computed by Qonto, including the associated invoice id. --- When creating an invoice, note that the invoice "inherits" the currency of the provided client. If the `currency` is not set for that client, you will receive a validation error on the `/data/attributes/currency` field. --- Italian organizations must have e-invoicing activated on the Qonto app in order to use this endpoint. --- requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientInvoiceCreatePayload' responses: '200': description: Returns the newly created client invoice. content: application/json: schema: type: object required: - client_invoice properties: client_invoice: $ref: '#/components/schemas/ClientInvoice' '400': description: Returns a bad request error. content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '401': description: Returns an unauthorized error. content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '403': description: Returns a forbidden error. content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '422': description: Returns an unprocessable entity error. content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string '500': description: Returns an internal server error. content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unknown detail: An unknown error occurred parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' '/v2/client_invoices/{id}': get: summary: Show client invoice operationId: get_client_invoice security: - OAuth: - client_invoices.read - SecretKey: [] parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: Returns the client invoice (identified by the id specified in the URL). content: application/json: schema: type: object required: - client_invoice properties: client_invoice: $ref: '#/components/schemas/ClientInvoice' examples: {} '400': $ref: '#/components/responses/400-Bad-request' '401': $ref: '#/components/responses/401-Unauthorized' '403': $ref: '#/components/responses/403-Forbidden' '422': $ref: '#/components/responses/422-Unprocessable-entity' tags: - Client Invoices description: |- OAuth scope: `client_invoices.read` --- Retrieves a single client invoice. x-internal: false x-stoplight: id: copd6wc7nwym8 parameters: - schema: type: string example: e3d68a1a-b23f-496a-a9a2-815089337720 format: uuid name: id in: path description: UUID of the client invoice to retrieve. required: true /v2/credit_notes: get: summary: Get a list of credit notes for an organization operationId: list_credit_notes security: - OAuth: - client_invoices.read - SecretKey: [] parameters: - schema: type: string format: date-time example: '2022-02-01T12:01:02Z' in: query name: 'filter[created_at_from]' - schema: type: string format: date-time example: '2022-23-04T16:23:00Z' in: query name: 'filter[created_at_to]' - schema: type: integer example: 1 in: query name: page - schema: type: integer example: 25 in: query name: per_page - schema: type: string example: 'created_at:desc' in: query name: sort_by - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: returns an array of credit notes content: application/json: schema: type: object required: - credit_notes properties: credit_notes: type: array items: $ref: '#/components/schemas/CreditNote' meta: $ref: '#/components/schemas/Pagination' '403': description: returns a forbidden error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: forbidden detail: User does not have sufficient permissions for this action '422': description: returns an unprocessable entity error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string '500': description: returns an internal server error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unknown detail: An unknown error occurred tags: - Credit Notes description: | OAuth scope: `client_invoices.read` --- Retrieve all credit notes within a particular Organization. --- The response contains the list of the credit notes and all the related data and attachments. --- ## Attributes details ### Credit Note - `total_amount` and `total_amount_cents` represent the credit note’s total amount - `vat_amount` and `vat_amount_cents` represent the credit note VAT amount - `currency` represents the credit note’s currency - `contact_email` represents the e-mail address of the credit note’s initiator - `credit_note_url` represents the URL credit note through which the credit note can be previewed in the web browser - `number` represents the credit note’s number - `terms_and_conditions` represents the T&C data added by the credit note’s initiator - `header` represents the header text added by the credit note’s initiator - `footer` represents the footer text added by the credit note’s initiator - `invoice_id` represents the invoice id the credit note is linked to - `attachment_id` represents an attachment UUID corresponding to that particular credit note. You can obtain details and get the credit note by using [Get attachment](https://api-doc.qonto.com/docs/business-api/345dace7b485b-show-attachment) - `reason` represents the reason for credit note ### Items - `total_amount` and `total_amount_cents` represent the amount for that specific item - `total_vat` and `total_vat_cents` represent the VAT amount that is applicable for that specific item - `title` represents the item’s title - `description` represents the item’s description - `quantity` represents the item’s quantity - `unit_price` and `unit_price_cents` represent the amount of the price per unit. Note that an item can contain multiple units. The number of units is defined via `quantity`. - `vat_rate` represents the VAT rate applicable for that particular item ### Client - `type` describes the client type. Possible values - company or individual - `email` represents the e-mail address of the client - `address` represents the address of the client - `city` represents the city of the client - `zip_code` represents the zip code of the client - `country_code` represents the country code of the client - `name` represents the name of the client. Note that this attribute will be returned only if the client is `a company` - `first_name` represents the first name of the client. Note that this attribute will be returned only if the client is `an individual` - `last_name` represents the last name of the client. Note that this attribute will be returned only if the client is `an individual` - `tax_identification_number` represents the TAX Identification number of the client - `vat_number` represents the VAT number of the client - `billing_address` represents the billing address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`). - `delivery_address` represents the delivery address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`). ### Organization - `id` represents the unique identifier of organization - `legal_name` represents the organization's legal name at the time the document was issued - `legal_number` represents the organization's legal number at the time the document was issued - `legal_country` represents the organization's legal country at the time the document was issued - `address_line_1` represents the first line of the organization's address at the time the document was issued - `address_line_2` represents the second line of the organization's address at the time the document was issued - `address_zipcode` represents the organization's zip code at the time the document was issued - `address_city` represents the organization's city at the time the document was issued - `address_country` represents the country of the organization's address at the time the document was issued - `company_leadership` represents the organization's leadership at the time the document was issued - `district_court` represents the organization's district court at the time the document was issued - `commercial_register_number` is available for French and German organizations and is optional. For French organizations, it represents RCS number (numéro Registre du Commerce et des Sociétés) of an incorporated business. For example: RCS A 123 123 123. For German organizations, it represents the organization's commercial register number (handelsregisternummer). For example: HRB 123455 B. - `vat_number` represents the organization's VAT number at the time the document was issued - `tax_number` represents the organization's tax number at the time the document was issued - `legal_capital_share` represents the capital share of an incorporated business. It is optional and is only for French organizations. It is by default in EUR. - `transaction_type` represents the type of transaction performed in the invoice. It is optional and is only for French organizations. Allowed values: `goods`, `services`, `goods_and_services` - `vat_payment_condition` represents the business’ VAT elected payment condition (whether TVA is paid on receipt or on invoice emission). There are two allowed values: receipt and compensated_for_sales. receipt stands for “sur les encaissements” in French, and compensated_for_sales stands for “sur les débits” in French. It is optional and is only for French organizations. Allowed values: `receipt`, `compensated_for_sales` ### Timestamps - `created_at` represents the date the credit note was created. Note that this is a machine date. - `issue_date` represents the date the initiator mentioned that the credit note was created. - `invoice_issue_date` represents the invoice_id’s issue date ## Filtering - Credit notes can be filtered by created date time interval using `created_at_from` and `created_at_to` where: - `created_at_from` represents the min date - `created_at_to` represents the max date - Note that if the `created_at_from` and `created_at_to` are not specified in the query parameters, the response will contain all the credit notes of that particular organization. ## Sorting - Credit notes can be sorted by `created_at` - Two values are available: `asc` (Ascending) / `desc` (Descending) - By default, the order used to sort `created_at` is `desc` ## Pagination - The default number of items per page is 1, max items per page is 100. Pagination data is returned in the response : [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination). '/v2/credit_notes/{id}': get: summary: Get details of credit note for an organization operationId: get_credit_note security: - OAuth: - client_invoices.read - SecretKey: [] parameters: - name: id in: path description: ID of the credit note required: true schema: type: string format: uuid - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: Credit note info content: application/json: schema: type: object required: - credit_note properties: credit_note: $ref: '#/components/schemas/CreditNote' '400': description: returns a bad request error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: bad request detail: invalid json '404': description: returns a not found error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: not found detail: credit note not found '422': description: returns an unprocessable entity error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string detail: type: string source: type: object properties: pointer: type: string '500': description: returns an internal server error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object properties: code: type: string detail: type: string example: errors: - code: unknown detail: An unknown error occurred tags: - Credit Notes description: | OAuth scope: `client_invoices.read` --- Retrieve details about a credit note within a particular Organization. --- The response contains the details of a credit note and all the related data and attachments. --- ## Attributes details ### Credit Note - `total_amount` and `total_amount_cents` represent the credit note’s total amount - `vat_amount` and `vat_amount_cents` represent the credit note VAT amount - `currency` represents the credit note’s currency - `contact_email` represents the e-mail address of the credit note’s initiator - `credit_note_url` represents the URL credit note through which the credit note can be previewed in the web browser - `number` represents the credit note’s number - `terms_and_conditions` represents the T&C data added by the credit note’s initiator - `header` represents the header text added by the credit note’s initiator - `footer` represents the footer text added by the credit note’s initiator - `invoice_id` represents the invoice id the credit note is linked to - `attachment_id` represents an attachment UUID corresponding to that particular credit note. You can obtain details and get the credit note by using [Get attachment](https://api-doc.qonto.com/docs/business-api/345dace7b485b-show-attachment) - `reason` represents the reason for credit note ### Items - `total_amount` and `total_amount_cents` represent the amount for that specific item - `total_vat` and `total_vat_cents` represent the VAT amount that is applicable for that specific item - `title` represents the item’s title - `description` represents the item’s description - `quantity` represents the item’s quantity - `unit_price` and `unit_price_cents` represent the amount of the price per unit. Note that an item can contain multiple units. The number of units is defined via `quantity`. - `vat_rate` represents the VAT rate applicable for that particular item ### Client - `type` describes the client type. Possible values - company or individual - `email` represents the e-mail address of the client - `address` represents the address of the client - `city` represents the city of the client - `zip_code` represents the zip code of the client - `country_code` represents the country code of the client - `name` represents the name of the client. Note that this attribute will be returned only if the client is `a company` - `first_name` represents the first name of the client. Note that this attribute will be returned only if the client is `an individual` - `last_name` represents the last name of the client. Note that this attribute will be returned only if the client is `an individual` - `tax_identification_number` represents the TAX Identification number of the client - `vat_number` represents the VAT number of the client - `billing_address` represents the billing address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`). - `delivery_address` represents the delivery address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`). ### Organization - `id` represents the unique identifier of organization - `legal_name` represents the organization's legal name at the time the document was issued - `legal_number` represents the organization's legal number at the time the document was issued - `legal_country` represents the organization's legal country at the time the document was issued - `address_line_1` represents the first line of the organization's address at the time the document was issued - `address_line_2` represents the second line of the organization's address at the time the document was issued - `address_zipcode` represents the organization's zip code at the time the document was issued - `address_city` represents the organization's city at the time the document was issued - `address_country` represents the country of the organization's address at the time the document was issued - `company_leadership` represents the organization's leadership at the time the document was issued - `district_court` represents the organization's district court at the time the document was issued - `commercial_register_number` is available for French and German organizations and is optional. For French organizations, it represents RCS number (numéro Registre du Commerce et des Sociétés) of an incorporated business. For example: RCS A 123 123 123. For German organizations, it represents the organization's commercial register number (handelsregisternummer). For example: HRB 123455 B. - `vat_number` represents the organization's VAT number at the time the document was issued - `tax_number` represents the organization's tax number at the time the document was issued - `legal_capital_share` represents the capital share of an incorporated business. It is optional and is only for French organizations. It is by default in EUR. - `transaction_type` represents the type of transaction performed in the invoice. It is optional and is only for French organizations. Allowed values: `goods`, `services`, `goods_and_services` - `vat_payment_condition` represents the business’ VAT elected payment condition (whether TVA is paid on receipt or on invoice emission). There are two allowed values: receipt and compensated_for_sales. receipt stands for “sur les encaissements” in French, and compensated_for_sales stands for “sur les débits” in French. It is optional and is only for French organizations. Allowed values: `receipt`, `compensated_for_sales` ### Timestamps - `created_at` represents the date the credit note was created. Note that this is a machine date. - `issue_date` represents the date the initiator mentioned that the credit note was created. - `invoice_issue_date` represents the invoice_id’s issue date '/v2/clients/{id}': get: summary: Get client's details security: - OAuth: - client.read - SecretKey: [] parameters: - name: id in: path description: ID of the client required: true schema: type: string format: uuid - $ref: '#/components/parameters/X-Qonto-Staging-Token' tags: - Clients description: |- OAuth scope: `client.read` --- Get information about a client that constitutes the addressee of client invoices for a particular organization by client id. See further details below. --- Price plans: this endpoint is available for all Qonto price plans --- The response contains the attributes of the client entered in the request, along with additional fields that are computed by Qonto, including the associated client id. responses: '200': description: Retrieve details about a client content: application/json: schema: type: object required: - client properties: client: $ref: '#/components/schemas/Client' '400': description: Bad request error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '401': description: Unauthorized error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '403': description: Forbidden error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '422': description: Unprocessable content Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' /v2/clients: get: summary: Get a list of clients security: - OAuth: - client.read - SecretKey: [] parameters: - name: filter description: | Attributes to filter by. in: query schema: type: object enum: - 'filter[tax_identification_number]' - 'filter[vat_number]' - 'filter[email]' - 'filter[name]' style: deepObject explode: true - name: page schema: type: integer example: 25 in: query - name: per_page schema: type: integer example: 25 in: query - name: sort_by schema: type: string example: 'created_at:desc' enum: - 'created_at:asc' - 'created_at:desc' - 'name:asc' - 'name:desc' in: query - $ref: '#/components/parameters/X-Qonto-Staging-Token' tags: - Clients description: |- OAuth scope: `client.read` --- Get information about client(s) that constitute(s) the addressee of client invoices (or other products, such as SEPA Direct Debit) for a particular organization based on a search on attributes. See further details below. --- Price plans: this endpoint is available for all Qonto price plans. --- The response contains attributes of the client entered in the request, along with additional fields that are computed by Qonto, including the associated client id. --- ## Filtering Clients can be filtered based on their `tax_identification_number`, `vat_number`, or `email`. The response will return exact and case-insensitive match(es). Clients can also be filtered based on their `name`. The response will return exact and partial matches, case-insensitive and accent-insensitive match(es). When type is individual or freelancer, name consists of the concatenation of `first_name` & ” ” & `last_name`. The value must at least contain 2 characters minimum. ## Sorting - Clients can be sorted by `created_at`, `name` - Two values are available: `asc` (Ascending) / `desc` (Descending) - By default, the order used to sort is `name`, `asc` ## Pagination - The default number of items per page is 100, max items per page is 100. Pagination data is returned in the response : [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination). responses: '200': description: 'A list of clients, paginated' content: application/json: schema: type: object properties: clients: type: array items: $ref: '#/components/schemas/Client' meta: $ref: '#/components/schemas/Pagination' '400': description: Bad request error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '401': description: Unauthorized error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '403': description: Forbidden error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '404': description: Not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '422': description: Unprocessable content Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' post: summary: Create a client security: - OAuth: - client.write - SecretKey: [] tags: - Clients description: | OAuth scope: `client.write` ------ Create a client that constitutes the addressee of client invoices for a particular organization. See further details below. ------ Price plans: this endpoint is available for all Qonto price plans ----- The response contains an array the attributes of the client entered in the request, along with additional fields that are computed by Qonto, including the associated client id. ---- There is no uniqueness rule. It is strongly advised to search using the GET endpoints for a given client before creating a new client. > When creating a client to be used for **invoicing purposes**, bear in mind the following: > - A client can be created by only specifying a `type` and a `name` (depending on the chosen `type`). > - However, to be able to use that client for invoicing, the following additional fields must also be provided: > - `currency` > - `locale` > - address, either as root-level fields (`address`, `city`, `zip_code`, `province_code` and `country_code`) or inside the `billing_address` field object. requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientCreatePayload' required: true responses: '200': description: The created client content: application/json: schema: type: object required: - client properties: client: $ref: '#/components/schemas/Client' '400': description: Bad request error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '401': description: Unauthorized error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '403': description: Forbidden error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '422': description: Unprocessable content Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' '500': description: Internal Server Error content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' /v2/teams: get: summary: List teams in an organization security: - OAuth: - team.read parameters: - schema: type: integer example: 1 in: query name: page - schema: type: integer example: 25 in: query name: per_page - $ref: '#/components/parameters/X-Qonto-Staging-Token' responses: '200': description: the response contains a list of all teams in the authenticated organization. content: application/json: schema: type: object properties: teams: type: array items: type: object properties: id: type: string format: uuid description: unique identifier of each team in the organization name: type: string example: super team description: name of each team in the organization meta: $ref: '#/components/schemas/Pagination' '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: unauthorized detail: type: string example: Invalid credentials '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: forbidden detail: type: string example: Forbidden tags: - Teams description: |- OAuth scope: `team.read` --- Get a list with all teams within the authenticated organization --- A successful response will give a list with the attributes id and name of each team in the organization: ## Pagination - The default number of items per page is 1, max items per page is 100. Pagination data is returned in the response : [See Schema here](https://api-doc.qonto.com/docs/business-api/c2NoOjI3NTA2MjA3-pagination). post: summary: Create a new team security: - OAuth: - team.write requestBody: content: application/json: schema: type: object required: - name properties: name: type: string description: name for the new team being created responses: '201': description: returns created team content: application/json: schema: type: object properties: team: type: object properties: id: type: string format: uuid description: unique identifier of the newly created team name: type: string example: super team description: name of the newly created team '401': description: returns an unauthorized error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: unauthorized detail: type: string example: Invalid credentials '403': description: returns a forbidden error content: application/json: schema: type: object properties: errors: type: array items: type: object properties: code: type: string example: forbidden detail: type: string example: Forbidden '422': description: returns an unprocessable entity error content: application/json: schema: type: object required: - errors properties: errors: type: array items: type: object required: - code properties: code: type: string example: invalid_string_size_range detail: type: string example: name length must be within 2 - 100 source: type: object properties: pointer: type: string example: /name tags: - Teams description: |- OAuth scope: `team.write` --- Create a new team in the authenticated organization. --- A successful response will give name and id of the newly created team. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' '/v2/statements/{id}': parameters: - schema: type: string example: 08544790-6305-4a85-8487-e035290bcee8 name: id in: path required: true description: Unique identifier of the statement. get: summary: Show statement responses: '200': description: Returns the statement. content: application/json: schema: type: object properties: statement: $ref: '#/components/schemas/Statement' examples: Example 1: value: statement: id: 08544790-6305-4a85-8487-e035290bcee8 bank_account_id: 9f4af770-344b-42c1-a592-6a2adf82a6d3 period: 08-2024 file: file_name: string file_content_type: application/pdf file_size: '16966' file_url: string '404': description: Returns a not found error. content: application/json: schema: type: object properties: errors: type: array x-stoplight: id: upg3lxzrivbka items: x-stoplight: id: 0jcm4m2po4s0n type: object properties: code: type: string x-stoplight: id: s3cn18k1bwirt example: not_found detail: type: string x-stoplight: id: 9rh6xucyp625m example: statement not found source: type: object x-stoplight: id: qx5cgux53dka6 properties: parameter: type: string x-stoplight: id: s3o2yamhjprsr example: id examples: Example 1: value: errors: - code: not_found detail: statement not found source: parameter: id operationId: get_statement x-stoplight: id: qcqb719o8naof description: | OAuth scope: `organization.read` --- Retrieves a single statement. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' tags: - Statements x-internal: false security: - OAuth: - organization.read - SecretKey: [] /v2/statements: get: summary: List statements tags: - Statements responses: '200': description: Returns the list of statements of the authentified organization. content: application/json: schema: type: object properties: statements: x-stoplight: id: z4t1gvwzljito type: array items: $ref: '#/components/schemas/Statement' meta: $ref: '#/components/schemas/Pagination' '422': description: Returns errors. content: application/json: schema: type: object properties: errors: x-stoplight: id: 709wra8cmlcze type: array items: x-stoplight: id: l45i940g8phaj type: object properties: code: type: string x-stoplight: id: hy5vwd00yon05 detail: type: string x-stoplight: id: vb5d5c4dccfwq source: type: object x-stoplight: id: 1rttt2192q1xl properties: pointer: type: string x-stoplight: id: qo246qf1jpj7w examples: Example 1: value: errors: - code: invalid_filters_params detail: cannot filter by both ibans and bank_account_ids source: pointer: / operationId: get_statements x-stoplight: id: uq4c3e2ml7q7g description: | OAuth scope: `organization.read` --- Retrieves the list of statements for the authenticated organization. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - schema: type: array example: 'bank_account_ids[]=3591c988-8a98-4592-9665-0d9a55a5bf34&bank_account_ids[]=b71ec2ad-bd18-4a02-be4c-ba7b5e8d621f' in: query name: 'bank_account_ids[]' description: Statements can be filtered by their `bank_account_id`.
⚠️ `ibans` and `bank_account_ids` are mutually exclusive and cannot be used together. - schema: type: array example: 'ibans[]=IT56O3609201600026403832768&ibans[]=IT31U3609201600955642496269' in: query name: 'ibans[]' description: Statements can be filtered by their `iban`.
⚠️ `ibans` and `bank_account_ids` are mutually exclusive and cannot be used together. - schema: type: string example: 01-2023 in: query name: period_from description: 'Statements can be filtered by their `period`. This filter is the beginning of the desired statement period (included). ' - schema: type: string example: 12-2023 in: query name: period_to description: 'Statements can be filtered by their `period`. This filter is the end of the desired statement period (included). ' - schema: type: integer default: 1 example: 2 in: query name: page description: 'cf. https://api-doc.qonto.com/docs/business-api/05ccf93502e54-pagination' - schema: type: integer maximum: 100 default: 100 example: 20 in: query name: per_page description: 'cf. https://api-doc.qonto.com/docs/business-api/05ccf93502e54-pagination' - schema: type: string example: 'period:asc' default: 'period:desc' in: query name: sort_by description: 'Statements can be sorted by their `period` in 2 possible directions: `asc` (Ascending) / `desc` (Descending).' x-internal: false security: - OAuth: - organization.read - SecretKey: [] /v2/insurance_contracts: post: summary: Create a new insurance contract x-internal: false security: - OAuth: - insurance_contract.write tags: - Insurance Contracts description: |- OAuth scope: `insurance_contract.write` --- This endpoint allows you to create a new insurance contract for the authenticated organization. It supports various types of insurance contracts, and includes critical information, such as the policy provider, pricing, and current status. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: description: Insurance contract to create required: true content: application/json: schema: $ref: '#/components/schemas/InsuranceContractCreatePayload' responses: '201': description: Returns an insurance contract content: application/json: schema: $ref: '#/components/schemas/InsuranceContract' '400': description: Returns a bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '401': description: Returns an unauthorized error content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Returns a forbidden error content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '/v2/insurance_contracts/{id}': get: summary: Get insurance contract x-internal: false security: - OAuth: - insurance_contract.read tags: - Insurance Contracts description: |- OAuth scope: `insurance_contract.read` --- This endpoint allows you to retrieve a insurance contract by its ID. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: type: string description: UUID of the insurance contract responses: '200': description: Returns insurance contract content: application/json: schema: $ref: '#/components/schemas/InsuranceContractWithDocuments' '400': description: Returns a bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '401': description: Returns an unauthorized error content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Returns a forbidden error content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Returns a not found error content: application/json: schema: $ref: '#/components/schemas/NotFoundError' patch: summary: Update an insurance contract x-internal: false security: - OAuth: - insurance_contract.write tags: - Insurance Contracts description: |- OAuth scope: `insurance_contract.write` --- This endpoint allows you to update an existing insurance contract by its ID. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: type: string description: UUID of the insurance contract to update requestBody: description: JSON payload containing fields to update required: true content: application/json: schema: $ref: '#/components/schemas/InsuranceContractUpdatePayload' responses: '200': description: Returns insurance contract updated content: application/json: schema: $ref: '#/components/schemas/InsuranceContract' '400': description: Returns a bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '401': description: Returns an unauthorized error content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Returns a forbidden error content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Returns a not found error content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '/v2/insurance_contracts/{id}/attachments': post: summary: Upload a PDF document for a specific insurance contract x-internal: false security: - OAuth: - insurance_contract.write tags: - Insurance Contracts description: |- OAuth scope: `insurance_contract.write` --- This endpoint allows you to upload a PDF file representing a document for a specific insurance contract. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: type: string description: UUID of the insurance you are uploading the document for - name: X-Qonto-Idempotency-Key in: header required: true schema: type: string description: A unique key to ensure that the same request is not processed multiple times requestBody: description: PDF file representing the document required: true content: multipart/form-data: schema: type: object required: - file - name - type properties: file: type: string format: binary description: The PDF file to upload name: type: string format: string example: Contract Axa description: the name of the file type: type: string format: string example: contract description: 'type of the file, for example - contract, statement' responses: '201': description: Attachment created successfully content: application/json: schema: type: object properties: id: type: string format: uuid description: ID of the newly created attachment example: 123e4567-e89b-12d3-a456-426614174000 name: type: string format: string example: Contract Axa description: the name of the file type: type: string format: string example: contract description: type of the file '400': description: Returns a bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '401': description: Returns an unauthorized error content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Returns a forbidden error content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Returns a not found error content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '/v2/insurance_contracts/{id}/attachments/{attachment_id}': delete: summary: Delete uploaded document x-internal: false security: - OAuth: - insurance_contract.write tags: - Insurance Contracts description: |- OAuth scope: `insurance_contract.write` --- This endpoint allows you to delete a previously uploaded document from a insurance contract. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: type: string description: UUID of the insurance you are uploading the document for - name: attachment_id in: path required: true schema: type: string description: UUID of the attachment you are deleting responses: '204': description: Attachment deleted successfully '400': description: Returns a bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '401': description: Returns an unauthorized error content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Returns a forbidden error content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Returns a not found error content: application/json: schema: $ref: '#/components/schemas/NotFoundError' /v2/cards: get: summary: List cards x-internal: false security: - OAuth: - card.read tags: - Cards description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.read` --- This endpoint allows you to retrieve the list of cards that can be viewed by the currently-authenticated membership. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - schema: type: string in: query name: query description: |- Text search can be performed on the following fields: - memberships.first_name - memberships.last_name - cards.id - cards.nickname - cards.last_digits - cards.status - cards.pre_expires_at - cards.exp_year - cards.exp_month - schema: type: integer default: 1 example: 2 in: query name: page description: 'cf. https://api-doc.qonto.com/docs/business-api/05ccf93502e54-pagination' - schema: type: integer maximum: 100 default: 100 example: 20 in: query name: per_page description: 'cf. https://api-doc.qonto.com/docs/business-api/05ccf93502e54-pagination' - schema: type: string example: 'status:asc' default: 'status:asc' in: query name: sort_by description: 'Cards can be sorted by attributes (`status`, `nickname`, `last_activity_at`, `created_at`) in 2 possible directions: `asc` (Ascending) / `desc` (Descending).' - schema: type: array items: $ref: '#/components/schemas/card_holder_id' in: query name: 'holder_ids[]' description: Cards can be filtered by cardholder membership ID. - schema: type: array items: $ref: '#/components/schemas/card_status' in: query name: 'statuses[]' description: 'Cards can be filtered by statuses. Multiple statuses can be specified (e.g. `statuses[]=pending&statuses[]=live`).' - schema: type: array items: $ref: '#/components/schemas/card_bank_account_id' in: query name: 'bank_account_ids[]' description: 'Cards can be filtered by bank account ID. Multiple bank accounts can be specified (e.g. `bank_account_ids[]=id1&bank_account_ids[]=id2`).' - schema: type: array items: $ref: '#/components/schemas/card_level' in: query name: 'card_levels[]' description: 'Cards can be filtered by card level. Multiple card levels can be specified (e.g. `card_levels[]=virtual&card_levels[]=flash`).' - schema: type: array items: $ref: '#/components/schemas/card_id' in: query name: 'ids[]' description: 'Cards can be filtered by card ID. Multiple card IDs can be specified (e.g. `ids[]=id1&ids[]=id2`).' responses: '200': description: OK content: application/json: schema: type: object properties: meta: $ref: '#/components/schemas/Pagination' cards: type: array items: $ref: '#/components/schemas/CardPayload' '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' post: summary: Create a new card x-internal: false security: - OAuth: - card.write tags: - Cards description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to create a new card. parameters: - name: X-Qonto-Idempotency-Key schema: type: string required: true in: header description: This parameter is required. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. The idempotency key must be a unique string. We recommend using a UUID. - $ref: '#/components/parameters/X-Qonto-Staging-Token' requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/CreatePhysicalCard' - $ref: '#/components/schemas/CreateVirtualCard' - $ref: '#/components/schemas/CreateFlashCard' - $ref: '#/components/schemas/CreateAdvertisingCard' responses: '200': description: OK content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' examples: 'when organisation is not on Team price plan and category_tags param is provided with non-empty value. Empty means `[]`.': description: 'when organisation is not on Team price plan and category_tags param is provided with non-empty value. Empty means `[]`.' value: message: Forbidden when user's role is not authorized to create a card: description: when user's role is not authorized to create a card value: message: Forbidden when try to create an online advertising card on a price plan that doesn't support it: description: when try to create an online advertising card on a price plan that doesn't support it value: message: Forbidden '422': description: | Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' examples: when category_tags and active_days are missing: description: When category_tags and active_days are missing value: errors: - code: parameter_missing detail: 'param is missing or the value is empty: card' source: pointer: /card when wrong category_tags are provided: description: When wrong category_tags are provided value: errors: - code: invalid detail: is invalid source: pointer: /data/attributes/category_tags when too many category_tags are provided: description: When too many category_tags are provided value: errors: - code: invalid detail: is invalid source: pointer: /data/attributes/category_tags 'when set category_tags non-empty values on flash card. Empty means `[]`.': description: 'when set category_tags non-empty values on flash card. Empty means `[]`.' value: errors: - code: present detail: must be blank source: pointer: /data/attributes/category_tags when membership is revoked: description: when membership is revoked value: errors: - code: invalid_card_holder_status detail: cannot create a card for a revoked membership when the card holder has exceeded the hourly card creation limit: description: when the card holder has exceeded the hourly card creation limit value: errors: - code: too_many_digital_cards_for_holder_recently detail: Card holder has created too many digital cards recently message: too many digital cards for holder recently when the holder has reached the maximum number of digital cards allowed: description: when the holder has reached the maximum number of digital cards allowed value: errors: - code: too_many_digital_cards_for_holder detail: Card holder has created too many digital cards message: too many digital cards for holder '/v2/cards/{id}/data_view': get: summary: Retrieve card data view URL x-internal: false security: - OAuth: - card.read tags: - Cards description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.read` --- This endpoint allows you to retrieve the URL to be displayed in an iframe to view the card preview with its details. Note that HTML encoding is applied to the URL, replacing &, <, and > with \u0026, \u003c, and \u003e respectively. We recommend the following size of the iframe: * Height - 460px * Width - 504px This size will ensure the most optimum UX within the iframe for both the card view and SCA experience. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: Accept-Language description: 'Language to be used to display the preview. Languages supported: en, it, es, de, fr, pt' in: header required: true schema: type: string - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: OK content: application/json: schema: type: object properties: iframe_url: type: string '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '/v2/cards/{id}/lost': put: tags: - Cards summary: Report a physical card as lost. x-internal: false security: - OAuth: - card.write description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to report a physical card as lost, permanently blocking its usage. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: Returns the card reported as lost. content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' '/v2/cards/{id}/stolen': put: tags: - Cards summary: Report a physical card as stolen. x-internal: false security: - OAuth: - card.write description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to report a physical card as stolen, permanently blocking its usage. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: Returns the card reported as stolen. content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' '/v2/cards/{id}/discard': put: tags: - Cards summary: Discard a virtual card. x-internal: false security: - OAuth: - card.write description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to discard a virtual card, permanently blocking its usage. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: Returns the discarded card. content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' '/v2/cards/{id}/lock': put: tags: - Cards summary: Lock a card. x-internal: false security: - OAuth: - card.write description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to put a temporary suspension on the card that can be reversed at any time by the user. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: Returns the locked card. content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' '/v2/cards/{id}/unlock': put: tags: - Cards summary: Unlock a card. x-internal: false security: - OAuth: - card.write description: |- Note: this API is still in beta. Please get in touch with our team to know more: https://getqonto.atlassian.net/servicedesk/customer/portal/5 OAuth scope: `card.write` --- This endpoint allows you to remove a temporary suspension from the card. Only admins and owners of an organization have the permissions to unlock a card. parameters: - $ref: '#/components/parameters/X-Qonto-Staging-Token' - name: id in: path required: true schema: $ref: '#/components/schemas/card_id' responses: '200': description: Returns the unlocked card. content: application/json: schema: type: object properties: card: $ref: '#/components/schemas/CardPayload' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' components: securitySchemes: OAuth: type: oauth2 flows: authorizationCode: authorizationUrl: 'https://oauth.qonto.com/oauth2/auth' tokenUrl: 'https://oauth.qonto.com/oauth2/token' refreshUrl: 'https://oauth.qonto.com/oauth2/token' scopes: organization.read: Allows for generic reads membership.read: Allows read of data related to membership membership.write: Allows creation of data related to memberships attachment.write: Allows to write data related to attachments internal_transfer.write: Allows execution of internal transfers payment.write: Allows write of data related to external payments supplier_invoice.write: Allows write of data related to supplier invoices supplier_invoice.read: Allows read of data related to supplier invoices client_invoices.read: Allows read of data related to client invoices client_invoice.write: Allows creation of data related to client invoices client.read: Allows read of data related to clients client.write: Allows creation of data related to clients request_review.write: Allows creation of data related transfer requests request_review.read: Allows reading of data related to transfer requests team.read: Allows reading of data related to teams team.write: Allows creation of data related to teams request_transfers.write: Allows transfer requests to be made insurance_contract.read: Allows read of insurance contract data insurance_contract.write: 'Allows creation, update and deletion of insurance contract or its attachments' card.read: Allows read of data related to cards card.write: Allows creation/update of data related to cards description: '' SecretKey: name: Authorization type: apiKey in: header description: |- When using the API, authentify Qonto accounts using your slug and secret key in the request. You can find and manage your secret key from the Qonto web application Settings > Integrations. Authentication to the API is performed via HTTP using the Authorization header. ``` Authorization: {organization-slug}:{secret-key} ``` schemas: Pagination: type: object properties: current_page: type: integer example: 2 next_page: type: integer nullable: true example: null prev_page: type: integer nullable: true example: 1 total_pages: type: integer example: 2 total_count: type: integer example: 150 per_page: type: integer example: 100 card_active_days: type: array items: type: integer enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 description: 'Days card is active i.e. [1-7]. ISO8601: starts on Monday with 1.' example: - 1 - 3 - 5 card_address: type: object description: Address used for the delivery of the card if not shipping to the business address properties: contact_name: type: string nullable: true first_line: type: string second_line: type: string third_line: type: string zipcode: type: string city: type: string country: type: string example: contact_name: null first_line: 751 Metz Falls second_line: '835' third_line: Apt. 734 zipcode: 13563-3709 city: Reinholdchester country: KI card_atm_daily_limit: type: integer minimum: 10 maximum: 3000 description: 'Total of withdrawal limit per day. (unit: euro)' example: 1000 card_atm_daily_limit_option: type: boolean description: Flag indicating whether the total amount per day limit should be applied to atm withdrawals example: true card_atm_daily_spent: type: number description: 'Total of ATM spend today (unit: euro).' example: 0 card_atm_monthly_limit: type: integer description: 'Total of ATM limit per month (unit: euro).' minimum: 10 maximum: 3000 example: 1000 card_atm_monthly_spent: type: number description: 'Total of ATM spend on the current month (unit: euro).' example: 1000 card_atm_option: type: boolean description: Flag indicating whether the card could withdraw money on an ATM. example: true card_bank_account_id: type: string format: uuid description: The id of the bank account to which the card is attached card_categories: type: array description: | By default it's empty array - []. If it's empty array - [] means that category restrictions are turned off and all the categories are allowed. Can be set to not empty only for organizations with price plan starting from Team. List of allowed category tags: - transport - restaurant_and_bar - food_and_grocery - it_and_electronics - utility - tax - legal_and_accounting - atm - office_supply - hardware_and_equipment - finance items: type: string example: - transport - restaurant_and_bar - food_and_grocery card_design: type: string description: 'The visuals for the card are specified according to the card level. For example, "standard.recycled.plastic.2023" is available only for the standard design level, while "plus.recycled.plastic.lilac.2023" is available only for the plus design level. You can determine the design available for a specific card level by looking at the prefix of the card design.' example: plus.black.2023 enum: - standard.recycled.plastic.2023 - plus.recycled.plastic.silver.2023 - plus.recycled.plastic.black.2023 - plus.recycled.plastic.lilac.2023 - metal.graphite.black.2019 - metal.mineral.gray.2024 - metal.sand.gold.2024 - virtual.default.2017 - flash.default.2021 - advertising.default.2023 card_discard_on: type: string nullable: true format: '^[0-9]{4,}-[0-9]{2}-[0-9]{2}$' description: Datetime at which the card will be discarded after being upsold. (upsold_at + 30 days) example: '2022-11-31' card_embossed_name: type: string nullable: true description: String representing the name printed on the physical card object. example: DOLORES KOULECHOV card_exp_month: type: string format: number nullable: true description: 'The expiration month. [1-12]' example: '3' card_exp_year: type: string format: number nullable: true description: The expiration year. example: '2024' card_foreign_option: type: boolean description: Flag indicating whether the card could make a payment outside of France. example: true card_had_operation: type: boolean description: Flag indicating whether the card has had any operations. Operations means any attempt at usage of the card. example: false card_had_pin_operation: type: boolean description: |- Flag indicating whether the card is PIN activated through a PIN operation or not. PIN operations means any attempt to use the card that requires its PIN code. example: false card_holder_id: type: string format: uuid description: The membership identifier of the card holder. card_id: type: string format: uuid description: Unique card identifier card_last_activity_at: type: string format: date-time description: |- The datetime of the last activity happened with this card. By activity we mean any attempt to use the cards, successful or not. Creating a transaction or not. Does not include any updates to settings or options. card_last_digits: type: string nullable: true format: ^\d\d\d\d$ description: The last 4 numbers of the card. example: '7662' card_mask_pan: type: string nullable: true description: String representing the masked PAN of card. example: 511768******7662 card_level: type: string description: |- Level of the card. A level defines a set of card capabilities and pricing. Standard, plus and metal are physical cards. See our Qonto cards: https://qonto.com/en/payment-methods/card. enum: - standard - plus - metal - virtual - flash - advertising example: standard card_nfc_option: type: boolean description: Flag indicating whether the card could make a payment with NFC mode (contactless). example: true card_nickname: nullable: false type: string description: Display name for the card. maxLength: 40 minLength: 1 example: "\U0001F4B3 for \U0001F357" card_online_option: type: boolean description: |- Flag indicating whether the card could make an online payment. Online payment are not related to any mastercard registered Point of Sale or terminal of payment. example: true card_organization_id: type: string format: uuid description: The ID of the organization the card belongs to. card_payment_daily_limit: type: integer minimum: 0 maximum: 60000 description: Total of payment limit per day. example: 1000 card_payment_daily_limit_option: type: boolean description: Flag indicating whether the total amount per day limit should be applied to payments example: true card_payment_daily_spent: type: number description: 'Total amount spent on the current day (unit: euro).' example: 1000 card_payment_lifespan_limit: type: integer description: 'Total of payment limit until card expires (unit: euro). Applicable only for Flash cards.' minimum: 5 maximum: 20000 default: 100 card_payment_lifespan_spent: type: number description: 'Total amount spent on the card since its creation (unit: euro).' example: 42 card_payment_monthly_limit: type: integer description: 'Total of payment limit by month (unit: euro).' minimum: 0 maximum: 200000 example: 1000 card_payment_monthly_spent: type: number description: 'Total of payment spend on the current month (unit: euro).' example: 1000 card_payment_transaction_limit: type: integer description: Total of payment limit per transaction. example: 1000 card_payment_transaction_limit_option: type: boolean description: Flag indicating whether the total amount per transaction limit should be applied to payments example: true card_pin_set: type: boolean description: Whether the pin code for the card is set or not. example: true card_pre_expires_at: type: string nullable: true description: Flash card will be valid until this date. format: date-time card_renewed: type: boolean description: Flag indicating whether the expiring card has been renewed e.i. if renewal card has been created then the expiring card's renewed field becomes true example: false card_renewal: type: boolean description: Flag indicating whether the card is a renewal card example: false card_reordered: type: boolean description: Describes if the card has been reordered and there is a new card instead. example: false default: false card_ship_to_business: type: boolean description: 'Whether the card is shipped to the business location, which is the organisation address as registered in Qonto.' example: false card_shipped_at: type: string format: date-time description: |- For physical cards only, Datetime at which the card was shipped to its holder. Depending on the carrier (local or international), delivery can take from 2 to 5 business days to complete the reception of the card. nullable: true example: null card_status: type: string enum: - pending - live - paused - stolen - lost - pin_blocked - discarded - expired - shipped_lost - onhold - order_canceled - pre_expired - abusive description: |- Status of the card. Pending: the card is awaiting PIN to be set or issuing to complete. Live: the card is active and can be used. Paused: the card is paused and cannot be used until un-paused. Stolen: the card has been reported as stolen and cannot be used. Lost: the card has been reported as lost and cannot be used. Pin_blocked: the card has been blocked due to too many wrong PIN attempts. It can still be used for card-not-present transactions. Discarded: the card has been discarded and cannot be used. Expired: the card has expired and cannot be used. Shipped_lost: the card has been lost during shipping and cannot be used. Onhold: the card issuing is on hold due to missing KYC/KYB validation and cannot be used. Order_canceled: the card order has been canceled. Pre_expired: the flash card has reached the end of its validity and cannot be used. Abusive: the card has been reported as abusive and cannot be used. example: pending card_type: type: string description: |- Type of the card. Currently only `debit` cards are supported. It has an impact on when the money is debited but also in the acceptance on the merchant side. enum: - debit - prepaid example: debit card_type_of_print: type: string nullable: true description: |- Specifies how the card information is presented on the physical card. This property is exclusively available for `plus` cards; other card levels must omit the value. example: embossed enum: - print - embossed card_upsell: type: boolean description: Flag indicating whether the card is an upsell child card example: false card_upsold: type: boolean description: Flag indicating whether the card has been upsold example: false CreatePhysicalCard: title: CreatePhysicalCard type: object properties: card: type: object properties: ship_to_business: $ref: '#/components/schemas/card_ship_to_business' atm_option: allOf: - $ref: '#/components/schemas/card_atm_option' - default: true nfc_option: allOf: - $ref: '#/components/schemas/card_nfc_option' - default: false foreign_option: allOf: - $ref: '#/components/schemas/card_foreign_option' - default: true online_option: allOf: - $ref: '#/components/schemas/card_online_option' - default: true atm_monthly_limit: allOf: - $ref: '#/components/schemas/card_atm_monthly_limit' - description: 'Total of ATM limit per month (unit: euro). If atm_option is false, this can be omitted' atm_daily_limit_option: allOf: - $ref: '#/components/schemas/card_atm_daily_limit_option' - description: 'Flag indicating whether the total amount per day limit should be applied to atm withdrawals. If atm_option is false, this can be omitted' atm_daily_limit: allOf: - $ref: '#/components/schemas/card_atm_daily_limit' - description: 'Total of withdrawal limit per day. If atm_option and atm_daily_limit_option are false, this can be omitted' payment_monthly_limit: $ref: '#/components/schemas/card_payment_monthly_limit' payment_daily_limit_option: $ref: '#/components/schemas/card_payment_daily_limit_option' payment_daily_limit: $ref: '#/components/schemas/card_payment_daily_limit' payment_transaction_limit_option: $ref: '#/components/schemas/card_payment_transaction_limit_option' payment_transaction_limit: $ref: '#/components/schemas/card_payment_transaction_limit' active_days: $ref: '#/components/schemas/card_active_days' holder_id: $ref: '#/components/schemas/card_holder_id' organization_id: $ref: '#/components/schemas/card_organization_id' bank_account_id: $ref: '#/components/schemas/card_bank_account_id' address: $ref: '#/components/schemas/card_address' card_level: type: string enum: - standard - plus - metal categories: $ref: '#/components/schemas/card_categories' card_design: $ref: '#/components/schemas/card_design' type_of_print: $ref: '#/components/schemas/card_type_of_print' required: - ship_to_business - payment_monthly_limit - atm_monthly_limit - atm_daily_limit_option - atm_daily_limit - card_level - holder_id - organization_id - bank_account_id CreateVirtualCard: title: CreateVirtualCard type: object properties: card: type: object properties: payment_monthly_limit: $ref: '#/components/schemas/card_payment_monthly_limit' payment_daily_limit: $ref: '#/components/schemas/card_payment_daily_limit' payment_daily_limit_option: $ref: '#/components/schemas/card_payment_daily_limit_option' payment_transaction_limit: $ref: '#/components/schemas/card_payment_transaction_limit' payment_transaction_limit_option: $ref: '#/components/schemas/card_payment_transaction_limit_option' active_days: $ref: '#/components/schemas/card_active_days' holder_id: $ref: '#/components/schemas/card_holder_id' organization_id: $ref: '#/components/schemas/card_organization_id' bank_account_id: $ref: '#/components/schemas/card_bank_account_id' card_level: type: string default: virtual categories: $ref: '#/components/schemas/card_categories' required: - payment_monthly_limit - card_level - holder_id - organization_id - bank_account_id CreateAdvertisingCard: title: CreateAdvertisingCard type: object properties: card: type: object properties: payment_monthly_limit: $ref: '#/components/schemas/card_payment_monthly_limit' payment_daily_limit: $ref: '#/components/schemas/card_payment_daily_limit' payment_daily_limit_option: $ref: '#/components/schemas/card_payment_daily_limit_option' holder_id: $ref: '#/components/schemas/card_holder_id' organization_id: $ref: '#/components/schemas/card_organization_id' bank_account_id: $ref: '#/components/schemas/card_bank_account_id' card_level: type: string default: advertising required: - card_level - holder_id - organization_id - bank_account_id CreateFlashCard: title: CreateFlashCard type: object properties: card: type: object properties: payment_lifespan_limit: $ref: '#/components/schemas/card_payment_lifespan_limit' pre_expires_at: $ref: '#/components/schemas/card_pre_expires_at' holder_id: $ref: '#/components/schemas/card_holder_id' organization_id: $ref: '#/components/schemas/card_organization_id' bank_account_id: $ref: '#/components/schemas/card_bank_account_id' card_level: type: string default: flash required: - payment_lifespan_limit - pre_expires_at - card_level - holder_id - organization_id - bank_account_id CardPayload: description: A representation of a card type: object properties: id: $ref: '#/components/schemas/card_id' nickname: $ref: '#/components/schemas/card_nickname' embossed_name: $ref: '#/components/schemas/card_embossed_name' status: $ref: '#/components/schemas/card_status' pin_set: $ref: '#/components/schemas/card_pin_set' mask_pan: $ref: '#/components/schemas/card_mask_pan' exp_month: $ref: '#/components/schemas/card_exp_month' exp_year: $ref: '#/components/schemas/card_exp_year' last_activity_at: $ref: '#/components/schemas/card_last_activity_at' last_digits: $ref: '#/components/schemas/card_last_digits' ship_to_business: $ref: '#/components/schemas/card_ship_to_business' atm_option: $ref: '#/components/schemas/card_atm_option' nfc_option: $ref: '#/components/schemas/card_nfc_option' online_option: $ref: '#/components/schemas/card_online_option' foreign_option: $ref: '#/components/schemas/card_foreign_option' atm_monthly_limit: $ref: '#/components/schemas/card_atm_monthly_limit' atm_monthly_spent: $ref: '#/components/schemas/card_atm_monthly_spent' atm_daily_limit: $ref: '#/components/schemas/card_atm_daily_limit' atm_daily_spent: $ref: '#/components/schemas/card_atm_daily_spent' atm_daily_limit_option: $ref: '#/components/schemas/card_atm_daily_limit_option' payment_monthly_limit: $ref: '#/components/schemas/card_payment_monthly_limit' payment_monthly_spent: $ref: '#/components/schemas/card_payment_monthly_spent' payment_daily_limit: $ref: '#/components/schemas/card_payment_daily_limit' payment_daily_spent: $ref: '#/components/schemas/card_payment_daily_spent' payment_daily_limit_option: $ref: '#/components/schemas/card_payment_daily_limit_option' payment_transaction_limit: $ref: '#/components/schemas/card_payment_transaction_limit' payment_transaction_limit_option: $ref: '#/components/schemas/card_payment_transaction_limit_option' active_days: $ref: '#/components/schemas/card_active_days' holder_id: $ref: '#/components/schemas/card_holder_id' bank_account_id: $ref: '#/components/schemas/card_bank_account_id' organization_id: $ref: '#/components/schemas/card_organization_id' updated_at: type: string format: date-time description: Datetime at which the object was last updated. created_at: type: string format: date-time description: Datetime at which the object was created. shipped_at: $ref: '#/components/schemas/card_shipped_at' card_type: $ref: '#/components/schemas/card_type' card_level: $ref: '#/components/schemas/card_level' payment_lifespan_limit: $ref: '#/components/schemas/card_payment_lifespan_limit' payment_lifespan_spent: $ref: '#/components/schemas/card_payment_lifespan_spent' pre_expires_at: $ref: '#/components/schemas/card_pre_expires_at' categories: $ref: '#/components/schemas/card_categories' renewed: $ref: '#/components/schemas/card_renewed' renewal: $ref: '#/components/schemas/card_renewal' parent_card_summary: allOf: - $ref: '#/components/schemas/CardSummary' - description: Summary of this card's parent (the card which this card is a renewal of) had_operation: $ref: '#/components/schemas/card_had_operation' had_pin_operation: $ref: '#/components/schemas/card_had_pin_operation' card_design: $ref: '#/components/schemas/card_design' type_of_print: $ref: '#/components/schemas/card_type_of_print' upsold: $ref: '#/components/schemas/card_upsold' upsell: $ref: '#/components/schemas/card_upsell' discard_on: $ref: '#/components/schemas/card_discard_on' reordered: $ref: '#/components/schemas/card_reordered' CardSummary: type: object description: 'Summary of a card, containing only static immutable information' properties: id: $ref: '#/components/schemas/card_id' last_digits: $ref: '#/components/schemas/card_last_digits' SupplierInvoice: type: object required: - id - status - organization_id - source_type - attachment_id - updated_at - created_at - file_name properties: id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 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 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 issue_date: type: string example: '2022-02-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: type: string example: to_review enum: - to_review - to_pay - pending - scheduled - paid iban: type: string example: FR1420041010050500013M02606 initiator_id: type: string format: uuid source_type: type: string example: email enum: - email - manual_upload 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 analyzed_at: type: string example: '2022-03-04T17:58:30+02:00' 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 meta: type: object properties: integration_type: type: string example: amazon connector: type: string example: grover ClientInvoice: type: object x-examples: {} required: - id - organization_id - number - purchase_order - status - invoice_url - contact_email - terms_and_conditions - discount_conditions - late_payment_penalties - legal_fixed_compensation - header - footer - currency - total_amount - total_amount_cents - vat_amount - vat_amount_cents - issue_date - due_date - performance_date - created_at - finalized_at - paid_at - stamp_duty_amount - items - client - payment_methods - credit_notes_ids - organization properties: id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 organization_id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 attachment_id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 description: |- Attachment UUID corresponding to that particular invoice.
When creating the invoice (by calling the [POST /v2/client_invoices](https://api-doc.qonto.com/docs/business-api/740572a1dd6f7-create-a-client-invoice) endpoint), the attachment is generated **asynchronously**; which means that you have to wait ~10s and then call the [GET /v2/client_invoices/{id}](https://api-doc.qonto.com/docs/business-api/copd6wc7nwym8-show-client-invoice) endpoint to get the `attachment_id`.
This attribute enables you to get the invoice file by using the [GET /v2/attachments/{id}](https://api-doc.qonto.com/docs/business-api/345dace7b485b-show-attachment) endpoint. number: type: string example: INV001 purchase_order: type: string description: Purchase order data added by the invoice’s initiator. status: type: string enum: - draft - unpaid - paid - canceled example: paid invoice_url: type: string format: uri example: 'https://pay.qonto.com/invoices/00000000-0000-0000-0000-000000000000' description: 'URL of the invoice public page, accessible without authentication for 180 days after issuance, provided the invoice has not been canceled.' contact_email: type: string format: email example: contact@qonto.com description: E-mail address of the invoice’s initiator. terms_and_conditions: type: string example: This is an example. description: The T&C data added by the invoice’s initiator. discount_conditions: type: string maximum: 50000 example: Pas d’escompte accordé pour paiement anticipé. description: Any discount for advance payment of the invoice. It is optional and is only for French organizations. nullable: true late_payment_penalties: type: string maximum: 50000 example: 'En cas de non-paiement à la date d''échéance, des pénalités calculées à trois fois le taux d’intérêt légal seront appliquées.' description: Late payment penalties applied in case of non-payment invoice. It is optional and is only for French organizations. nullable: true legal_fixed_compensation: type: string maximum: 50000 example: Tout retard de paiement entraînera une indemnité forfaitaire pour frais de recouvrement de 40€. description: The legal fixed compensation applied in case late payment of the invoice. It is optional and is only for French organizations. nullable: true header: type: string example: This is an example. description: The header text added by the credit note’s initiator. footer: type: string example: This is an example. description: The footer text added by the credit note’s initiator. currency: type: string example: EUR total_amount: type: object x-stoplight: id: r2tav38fcapix description: Total amount that needs to be paid by the client. properties: value: type: string x-stoplight: id: wqw5wy2vby8h4 example: '12.52' currency: type: string x-stoplight: id: gr89ztsxe2l6d example: EUR total_amount_cents: type: integer example: 1252 description: Total amount in cents that needs to be paid by the client. vat_amount: type: object description: VAT amount that is applicable to the invoice. properties: value: type: string example: '0.51' currency: type: string example: EUR vat_amount_cents: type: integer example: 51 description: VAT amount in cents that is applicable to the invoice. issue_date: type: string format: date example: '2022-03-01' description: Date the initiator mentioned that the invoice was created. due_date: type: string format: date example: '2022-03-01' description: Payment’s deadline added by the initiator. performance_date: type: string format: date example: '2022-03-01' description: Date the initiator mentioned that the contents of the invoice were performed. created_at: type: string format: date-time example: '2022-03-04T17:58:30+02:00' description: Date the invoice was created. Note that this is a machine date. finalized_at: type: string format: date-time example: '2022-03-04T17:58:30+02:00' description: Date the invoice was transitioned from `Draft` to `Unpaid` status. paid_at: type: string format: date-time example: '2022-03-04T17:58:30+02:00' description: Date on which the invoice was paid. stamp_duty_amount: type: string minLength: 4 maxLength: 15 example: '1.00' items: type: array items: $ref: '#/components/schemas/DocumentItem' client: $ref: '#/components/schemas/EmbeddedClient' payment_methods: type: array items: type: object properties: beneficiary_name: type: string example: John Doe description: Name of the beneficiary that will receive the invoice's payment. bic: type: string example: ABCDEFG1XXX description: Beneficiary’s International Bank Account Number. iban: type: string example: FR1420041010050500013M02606 description: Beneficiary account's Bank Identifier. type: type: string enum: - transfer example: transfer description: Invoice's payment method. credit_notes_ids: type: array description: 'If any credit notes are linked to the invoice, this represents the id of those credit notes.' items: type: string format: uuid readOnly: true organization: $ref: '#/components/schemas/EmbeddedInvoiceOrganization' einvoicing_status: type: string enum: - pending - submitted - declined - approved - not_delivered - submission_failed welfare_fund: type: object properties: type: type: string enum: - TC01 - TC02 - TC03 - TC04 - TC05 - TC06 - TC07 - TC08 - TC09 - TC10 - TC11 - TC12 - TC13 - TC14 - TC15 - TC16 - TC17 - TC18 - TC19 - TC20 - TC21 - TC22 example: TC01 rate: type: string minLength: 4 maxLength: 6 example: '0.0001' withholding_tax: type: object description: |- - Only applicable for Italian organizations and Spanish freelancers. - Object which relates to an amount of tax paid by the client, rather than the supplier, for specific cases. - This amount is a percentage deducted from the total amount of the invoice after VAT application. - The `rate` field specifies the percentage of tax and `amount` field specifies the total amount of the tax. properties: reason: type: string enum: - RF01 - RF02 - RF03 - RF04 - RF05 - RF06 example: RF01 rate: type: string minLength: 4 maxLength: 6 example: '0.01' payment_reason: type: string example: L1 minLength: 1 maxLength: 2 amount: type: string example: '1.00' payment_reporting: type: object properties: conditions: type: string enum: - TP01 - TP02 - TP03 example: TP01 method: type: string enum: - MP01 - MP02 - MP03 - MP04 - MP05 - MP06 - MP07 - MP08 - MP09 - MP10 - MP11 - MP12 - MP13 - MP14 - MP15 - MP16 - MP17 - MP18 - MP19 - MP20 - MP21 - MP22 example: MP01 ClientInvoiceCreatePayload: type: object properties: client_id: type: string format: uuid issue_date: type: string format: date example: '2022-03-01' performance_date: type: string format: date description: represents the date the initiator has issued or shared the invoice as legally viable. The format should be `YYYY-MM-DD` due_date: type: string format: date description: represents the invoice’s payment deadline that is added by the initiator. The format should be `YYYY-MM-DD` status: type: string enum: - draft - unpaid description: 'represents the status of the invoice. If not filled, `unpaid` will be automatically attributed to the invoice.' number: type: string example: INV-2023-001 maxLength: 40 description: represents the invoice’s number. purchase_order: type: string maxLength: 40 description: represents the purchase order data added by the invoice’s initiator. terms_and_conditions: type: string maxLength: 525 description: represents additional notes added by the invoice’s initiator. header: type: string example: This is an example. footer: type: string example: This is an example. currency: type: string description: 'represents the invoice’s currency for the total amount of the invoice. Currently, only value allowed is EUR. Trigram following ISO 4217' example: EUR payment_methods: type: object description: contains payment method details for the invoice. properties: iban: type: string description: 'represents the beneficiary’s International Bank Account Number (IBAN). The format must follow ISO 13616, and should be a valid IBAN (must start with two letters, followed by 25 digits). The IBAN must be associated to a Qonto account.' required: - iban settings: $ref: '#/components/schemas/InvoiceSettingsOverride' items: type: array items: $ref: '#/components/schemas/DocumentItemPayload' report_einvoicing: type: boolean description: |- - For Italian organizations only - Non-Italian organizations should not include this attribute in the request. - Italian organizations must have e-invoicing activated to use this endpoint, no matter the value of the flag. - By default for an Italian organization that has e-invoicing activated on the Qonto app, if this field is not filled, this attribute is set to true and the invoice is automatically sent to Italian exchange system (Sistema di Interscambio, or SdI) as an XML e-invoice. If set to `false`, the invoice will not be sent to SdI. - Use the `GET` v2/client_invoices to retrieve its e-invoicing status under the attribute `einvoicing_status`. payment_reporting: description: |- - For Italian organizations only - Non-Italian organizations should not include this attribute in the request. - Object which relates to payment methods and conditions of the invoice. type: object properties: conditions: description: represents the payment conditions on the invoice. type: string enum: - TP01 - TP02 - TP03 example: TP01 method: description: represents the payment method of the invoice. type: string enum: - MP01 - MP02 - MP03 - MP04 - MP05 - MP06 - MP07 - MP08 - MP09 - MP10 - MP11 - MP12 - MP13 - MP14 - MP15 - MP16 - MP17 - MP18 - MP19 - MP20 - MP21 - MP22 example: MP01 required: - conditions - method welfare_fund: description: |- - For Italian organizations only - Non-Italian organizations should not include this attribute in the request. - Object which relates to pension contributions added to the total amount to pay, applicable in some cases. - This amount is a percentage added to the total amount of the invoice pre-taxes. type: object properties: type: type: string enum: - TC01 - TC02 - TC03 - TC04 - TC05 - TC06 - TC07 - TC08 - TC09 - TC10 - TC11 - TC12 - TC13 - TC14 - TC15 - TC16 - TC17 - TC18 - TC19 - TC20 - TC21 - TC22 example: TC01 description: represents the welfare fund type. rate: type: string minLength: 4 maxLength: 6 example: '0.0001' description: 'represents the welfare fund rate applicable for the invoice. Written in decimals, separated by a period “.” For example, for a rate of 1%, input is 0.01, and for a rate of 10%, input is 0.1' required: - rate - type withholding_tax: description: |- - Only for Italian organizations and Spanish freelancers - Other organizations should not include this attribute in the request. - Object which relates to an amount of tax paid by the client, rather than the supplier, for specific cases. - This amount is a percentage deducted from the total amount of the invoice after VAT application. - ES freelancers need to only fill the withholding_tax `rate` field with their IRPF. type: object properties: reason: description: represents the reason the withholding tax. type: string enum: - RF01 - RF02 - RF03 - RF04 - RF05 - RF06 example: RF01 rate: type: string minLength: 4 maxLength: 6 example: '0.01' description: 'represents the withholding tax rate applicable for the invoice. Written in decimals, separated by a period “.” For example, for a rate of 1%, input is 0.01 and for a rate of 10%, input is 0.1' payment_reason: type: string example: L1 minLength: 1 maxLength: 2 description: represents the payment reason the withholding tax. required: - rate - reason - payment_reason stamp_duty_amount: type: string minLength: 4 maxLength: 15 example: '1.00' description: |- - For Italian organizations only - Non-Italian organizations should not include this attribute in the request. - Represents an amount (2.00 EUR) applicable on invoices where VAT is excluded and the invoice has a value exceeding 77.47 EUR. required: - client_id - issue_date - due_date - number - currency - items - payment_methods CreditNote: type: object properties: id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 invoice_id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 attachment_id: type: string format: uuid example: 4d5418bb-bd0d-4df4-865c-c07afab8bb48 issue_date: type: string format: date example: '2022-03-01' invoice_issue_date: type: string format: date example: '2022-03-02' number: type: string example: INV001 terms_and_conditions: type: string example: This is an example. header: type: string example: This is an example. footer: type: string example: This is an example. vat_amount: type: object properties: value: type: string example: '0.51' currency: type: string example: EUR vat_amount_cents: type: integer example: 51 total_amount: type: object properties: value: type: string example: '12.52' currency: type: string example: EUR total_amount_cents: type: integer example: 1252 currency: type: string example: EUR created_at: type: string format: date-time example: '2022-03-04T17:58:30+02:00' finalized_at: type: string format: date-time example: '2022-03-04T17:58:30+02:00' contact_email: type: string format: email example: contact@qonto.com invoice_url: type: string format: uri example: 'https://pay.qonto.com/invoices/00000000-0000-0000-0000-000000000000' description: 'represents the URL of the invoice public page, accessible without authentication for 180 days after issuance, provided the invoice has not been canceled.' einvoicing_status: type: string enum: - pending - submitted - declined - approved - not_delivered - submission_failed welfare_fund: type: object properties: type: type: string enum: - TC01 - TC02 - TC03 - TC04 - TC05 - TC06 - TC07 - TC08 - TC09 - TC10 - TC11 - TC12 - TC13 - TC14 - TC15 - TC16 - TC17 - TC18 - TC19 - TC20 - TC21 - TC22 example: TC01 rate: type: string minLength: 4 maxLength: 6 example: '0.0001' withholding_tax: description: |- - Only applicable for Italian organizations and Spanish freelancers. - Object which relates to an amount of tax paid by the client, rather than the supplier, for specific cases. - This amount is a percentage deducted from the total amount of the invoice after VAT application. - The `rate` field specifies the percentage of tax and `amount` field specifies the total amount of the tax. type: object properties: reason: type: string enum: - RF01 - RF02 - RF03 - RF04 - RF05 - RF06 example: RF01 rate: type: string minLength: 4 maxLength: 6 example: '0.01' payment_reason: type: string minLength: 1 maxLength: 2 amount: type: string example: '1.00' stamp_duty_amount: type: string minLength: 4 maxLength: 15 example: '1.00' items: type: array items: $ref: '#/components/schemas/DocumentItem' client: $ref: '#/components/schemas/EmbeddedClient' EmbeddedClient: type: object description: Client that needs to pay the invoice. properties: id: type: string format: uuid example: 33v418bb-bd0d-4df4-865c-c07afab8bb48 name: type: string example: McDonald's description: Note that this attribute will be returned only if the client is a `company`. first_name: type: string example: Jane description: Note that this attribute will be returned only if the client is an `individual` or a `freelancer`. last_name: type: string example: Doe description: Note that this attribute will be returned only if the client is an `individual` or a `freelancer`. type: type: string enum: - individual - company - freelancer example: individual email: type: string format: email example: client@qonto.com vat_number: type: string example: FR32123456789 tax_identification_number: type: string example: '123456789' address: type: string example: 1 place de l’Opéra city: type: string example: Paris zip_code: type: string example: '75009' province_code: type: string description: Province code of the client. It is required only for Italian organizations country_code: type: string example: fr recipient_code: type: string description: 'Recipient code, so that the client can receive the e-invoice in his SdI portal.' locale: type: string example: fr billing_address: description: 'Billing address of the client, which will be reflected on the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' allOf: - $ref: '#/components/schemas/ClientBillingAddress' type: object delivery_address: allOf: - $ref: '#/components/schemas/ClientDeliveryAddress' description: 'Delivery address of the client. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' type: object ExternalTransfer: type: object required: - id - slug - debit_iban - debit_amount - debit_amount_cents - debit_currency - beneficiary_id - initiator_id - credit_amount - credit_amount_cents - credit_currency - reference - status - scheduled_date - created_at properties: id: type: string format: uuid slug: type: string debit_iban: type: string description: ISO 13616 debit_amount: type: string example: '12.55' debit_amount_cents: type: string example: '1255' debit_currency: type: string example: EUR description: ISO 4217 beneficiary_id: type: string format: uuid initiator_id: type: string format: uuid description: |- ID of the membership that initiated the external transfer.
When the external transfer is initiated through the API, the initiator is the authenticated membership. credit_amount: type: string credit_amount_cents: type: string credit_currency: type: string description: ISO 4217 rate_applied: type: string payment_purpose: type: string example: goods description: Compulsory for all swift networks reference: type: string note: type: string description: 140 characters max declined_reason: type: string example: beneficiary_bic_invalid description: |- Populated only when transfer **status** is declined. Possible values: `beneficiary_bic_invalid` `beneficiary_iban_invalid` `beneficiary_status` `beneficiary_network_rules_error` `organisation_compliance_reasons` `debit_account_insufficient_funds` `qonto_processing_failed` status: example: pending type: string description: |- Possible values: `pending` `processing` `canceled` `declined` `settled` scheduled_date: type: string example: '2021-07-12' created_at: type: string example: '2021-01-27T22:05:07.000Z' completed_at: type: string example: '2021-01-27T22:05:07.000Z' processed_at: type: string example: '2021-01-27T22:05:07.000Z' transaction_id: type: string format: uuid EmbeddedInvoiceOrganization: type: object description: Information of the organization at the time the document was issued. properties: id: type: string format: uuid legal_name: type: string legal_number: type: string legal_country: type: string address_line_1: type: string address_line_2: type: string address_zipcode: type: string address_city: type: string address_country: type: string company_leadership: type: string example: Jan Mueller district_court: type: string example: Munich commercial_register_number: type: string example: HRB12345B description: |- Is available for French and German organizations and is optional. - For French organizations, it represents RCS number (numéro Registre du Commerce et des Sociétés) of an incorporated business. For example: RCS A 123 123 123. - For German organizations, it represents the organization's commercial register number (handelsregisternummer). For example: HRB 123455 B. vat_number: type: string example: FR123456789 tax_number: type: string example: 123/123/1234 legal_capital_share: type: object description: Capital share of an incorporated business. It is optional and is only for French organizations. properties: value: minLength: 0 maxLength: 12 type: string example: '10000.00' currency: $ref: '#/components/schemas/Currency' transaction_type: type: string enum: - goods - services - goods_and_services example: goods description: Type of transaction performed in the invoice. It is optional and is only for French organizations. vat_payment_condition: type: string enum: - on_receipts - compensated_for_sales - exempt example: on_receipts description: |- Business’ VAT elected payment condition (whether TVA is paid on receipt or on invoice emission). There are two allowed values: - `receipt` which stands for “sur les encaissements” in French; - `compensated_for_sales` which stands for “sur les débits” in French. It is optional and is only for French organizations. InvoiceSettingsOverride: description: | This collection of attributes can be optionally used to temporarily override some of the organization's properties for this one invoice. type: object properties: vat_number: type: string example: FR12345678 company_leadership: type: string example: Jan Mueller district_court: type: string example: Munich commercial_register_number: type: string example: HRB12345B tax_number: type: string example: 123/123/1234 legal_capital_share: type: object properties: value: minLength: 0 maxLength: 12 type: string example: '10000.00' currency: $ref: '#/components/schemas/Currency' transaction_type: type: string enum: - goods - services - goods_and_services example: goods vat_payment_condition: type: string enum: - on_receipts - compensated_for_sales example: on_receipts discount_conditions: type: string maximum: 50000 example: Pas d’escompte accordé pour paiement anticipé. nullable: true late_payment_penalties: type: string maximum: 50000 example: 'En cas de non-paiement à la date d''échéance, des pénalités calculées à trois fois le taux d’intérêt légal seront appliquées.' nullable: true legal_fixed_compensation: type: string maximum: 50000 example: Tout retard de paiement entraînera une indemnité forfaitaire pour frais de recouvrement de 40€. nullable: true DocumentItem: type: object properties: title: type: string example: Plastic tables description: type: string example: Plastic tables for McDonald’s restaurants quantity: type: string example: '1.5' unit: type: string example: meter unit_price: type: object description: Amount of the price per unit. Note that an item can contain multiple units. The number of units is defined via `quantity`. properties: value: type: string example: '10.0' currency: type: string example: EUR unit_price_cents: type: integer example: 1000 description: Amount in cents of the price per unit. Note that an item can contain multiple units. The number of units is defined via `quantity`. vat_rate: type: string description: VAT rate in decimal (0.1 for 10%) applicable to that particular item. example: '0.1' vat_exemption_reason: type: string description: Exemption reason enum: - N1 - N2 - N2.1 - N2.2 - N3 - N3.1 - N3.2 - N3.3 - N3.4 - N3.5 - N3.6 - N4 - N5 - N6 - N6.1 - N6.2 - N6.3 - N6.4 - N6.5 - N6.6 - N6.7 - N6.8 - N6.9 - N7 - S293B - S262.1 - S259 - S283 - S261 - S262 - S263 - S19.1 - S4.1B - S4.1A - S4 - S13B - S122 - S25 - S21 - S69 - S20 - S84.1.2 discount: type: object properties: type: type: string enum: - percentage - absolute example: percentage value: type: string example: '0.1' description: 'Discount rate or absolute amount. For percentage, the minimum value is 0.0001 (0.01%), and the maximum value is 1 (100%). For absolute value, the maximum is determined by Quantity * Unit Price.' amount: type: object properties: value: type: string example: '120' currency: type: string example: EUR total_vat: type: object description: VAT amount that is applicable to that specific item. properties: value: type: string example: '120' currency: type: string example: EUR total_vat_cents: type: integer example: 12000 description: VAT amount in cents that is applicable to that specific item. total_amount: type: object description: Amount that needs to be paid by the client for that specific item. properties: value: type: string example: '300.50' currency: type: string example: EUR total_amount_cents: type: integer example: 30050 description: Amount in cents that needs to be paid by the client for that specific item. subtotal: type: object properties: value: type: string example: '120' description: Subtotal amount for the item without VAT. Quantity * Unit_price. currency: type: string example: EUR subtotal_cents: type: integer example: 12000 description: Subtotal amount in cents for the item without VAT. DocumentItemPayload: type: object properties: title: type: string maxLength: 40 description: represents the item’s title. It is displayed as the first line of the item in bold in the invoice table. It indicates in a short sentence the product or service being sold. description: type: string maxLength: 300 description: 'represents the item’s description of the product or service being sold. It is added below the title of each item in the invoice table. Free format, with a maximum of 300 characters. Use `\n` to indicate line breaks.' quantity: type: string example: '0.5' description: 'represents the item’s quantity of the specific product or services being sold. For example, it can be in hours or in number of products. Decimals should be separated by a period “.”' unit: type: string example: meter description: | represents the item’s unit. It is an optional field and allows maximum 20 characters for non Italian organizations. - For Italian organizations, documents are generated in PDF format and in XML format (automatically sent to the Italian tax authorites). In the PDF, unit will appear with a maximum of 20 characters. In the XML file, it is truncated down to the first 10 characters. - For French organizations, documents are generated under the Factur-X format (a structured PDF file with an embedded XML). For the XML file, units that have a corresponding EN16931 code (standard followed by Factur-X format) will be indicated with its relevant code. See mapping below of possible values and their corresponding code.
Possible values and corresponding EN16931 code (pursuant to the “Annexe 7” of the B2B external specifications for French e-invoicing, BT-130, allowed units of measure) | Unit | EN16931 code | |-------------------------|------| | unit | C62 | | hour | HUR | | day | DAY | | month | MON | | gram | GRM | | kilogram | KGM | | liter | LTR | | meter | MTR | | square_meter | MTK | | cubic_meter | MTQ | | ampere | AMP | | number_of_articles | NAR | | centimeter | CMT | | cubic_meter_per_hour | MQH | | gigajoule | GV | | gigawatt | A90 | | gigawatt_hour | GWH | | half_year | SAN | | joule | JOU | | kilojoule | KJO | | kilovar | KVR | | kilovolt_ampere_reactive_hour | K3 | | kilowatt | KWT | | kilowatt_hour | KWH | | megajoule | 3B | | megawatt | MAW | | megawatt_hour | MWH | | milligram | MGM | | milliliter | MLT | | millimeter | MMT | | minute | MIN | | pair | PR | | quarter | QAN | | second | SEC | | set | SET | | ton | TNE | | two_week | W4 | | watt_hour | WHR | | week | WEE | | year | ANN | | custom_input_text | ZZ |
unit_price: type: object properties: value: type: string description: represents price per unit of product or service sold. Decimals should be separated by a period “.” currency: type: string description: 'represents the item’s currency. Currently, only value allowed is EUR. Format supported is a trigram following ISO 4217.' required: - value - currency vat_rate: type: string example: '0.1' description: 'represents the VAT rate applicable for that particular item. Written in decimals, separated by a period “.” For example, for a VAT of 10%, input is 0.1' vat_exemption_reason: type: string enum: - N1 - N2 - N2.1 - N2.2 - N3 - N3.1 - N3.2 - N3.3 - N3.4 - N3.5 - N3.6 - N4 - N5 - N6 - N6.1 - N6.2 - N6.3 - N6.4 - N6.5 - N6.6 - N6.7 - N6.8 - N6.9 - N7 - S293B - S262.1 - S259 - S283 - S261 - S262 - S263 - S19.1 - S4.1B - S4.1A - S4 - S13B - S122 - S25 - S21 - S69 - S20 - S84.1.2 example: N1 maxLength: 4 description: 'Represents the VAT exemption reason when the item’s vat_rate is equal to 0. It is required for Italian organizations only, must be indicated for each item that has a VAT rate of 0 and the code must start with `N`. If VAT rate is not 0, this field should not be included.' discount: type: object properties: type: type: string enum: - percentage - absolute example: percentage description: represents the type of the discount for that item. value: type: string example: '0.1' description: represents the rate or the absolute amount that will be discounted required: - title - quantity - unit_price - vat_rate Client: oneOf: - $ref: '#/components/schemas/ClientCompany' - $ref: '#/components/schemas/ClientIndividual' ClientCompany: type: object properties: id: type: string format: uuid name: type: string description: represents the name of the client that needs to pay the client invoice. type: type: string enum: - company description: | describes the client type. `individual` represents a physical person (a consumer) whereas `company` or `freelancer` represent a legal entity. Usually a `freelancer` is a legal entity with the name of a person. email: type: string format: email example: john.doe@qonto.eu description: 'represents the e-mail address of the client that needs to pay the invoice, which is displayed in the invoice.' vat_number: type: string description: represents the Value Added Tax number of the client (a legal entity) that needs to pay the invoice. tax_identification_number: type: string description: "represents the Tax Identification Number of the client (a physical person) that needs to pay the invoice. It corresponds to the SIREN/SIRET for \U0001F1EB\U0001F1F7 companies." address: type: string description: represents the address of the client that needs to pay the invoice. city: type: string description: represents the city of the client that needs to pay the invoice. zip_code: type: string description: represents the zip code of the client that needs to pay the invoice. province_code: type: string description: Only for italian organizations. Represents the province code of the client. country_code: type: string description: represents the country code of the client that needs to pay the invoice. billing_address: type: object description: 'represents the billing address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' properties: street_address: type: string maxLength: 250 description: | represent the street address section of the billing address of the client. (eg street, number, floor, door, etc) example: 123 Main Street city: type: string maxLength: 50 example: Paris description: represents the city on the billing address of the client that needs to pay the invoice zip_code: type: string maxLength: 20 example: '75009' description: represents the zip code on the billing address of the client that needs to pay the invoice province_code: type: string maxLength: 2 description: represents the province code of the client's billing address country_code: type: string maxLength: 2 example: fr description: represents the country code on the billing address of the client that needs to pay the invoice delivery_address: type: object description: 'represents the delivery address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' properties: street_address: type: string maxLength: 250 description: | represent the street address section of the delivery address of the client. (eg street, number, floor, door, etc) example: 123 Main Street city: type: string maxLength: 50 example: Paris description: represents the city on the delivery address of the client that needs to pay the invoice zip_code: type: string maxLength: 20 example: '75009' description: represents the zip code on the delivery address of the client that needs to pay the invoice province_code: type: string maxLength: 2 description: represents the province code of the client's delivery address that needs to pay the invoice country_code: type: string maxLength: 2 example: fr description: represents the country code on the delivery address of the client that needs to pay the invoice recipient_code: type: string description: Only for italian clients. Represents the client’s recipient code for receiving an the e-invoice in his SdI portal. created_at: type: string description: represents the date the client was created. Note that this is a machine date. locale: type: string example: fr description: 'represents the language of the documents created on Qonto (invoices, quotes, credit notes) for this particular client.' ClientIndividual: type: object properties: id: type: string format: uuid first_name: type: string description: represents the first name of the client that needs to pay the invoice. last_name: type: string description: represents the last name of the client that needs to pay the invoice type: type: string enum: - individual - freelancer description: | describes the client type. `individual` represents a physical person (a consumer) whereas `company` or `freelancer` represent a legal entity. Usually a `freelancer` is a legal entity with the name of a person. email: type: string format: email example: john.doe@qonto.eu description: 'represents the e-mail address of the client that needs to pay the invoice, which is displayed in the invoice.' vat_number: type: string description: represents the Value Added Tax number of the client (a legal entity) that needs to pay the invoice. tax_identification_number: type: string description: "represents the Tax Identification Number of the client (a physical person) that needs to pay the invoice. It corresponds to the SIREN/SIRET for \U0001F1EB\U0001F1F7 companies." address: type: string description: represents the address of the client that needs to pay the invoice. city: type: string description: represents the city of the client that needs to pay the invoice. zip_code: type: string description: represents the zip code of the client that needs to pay the invoice. province_code: type: string description: Only for italian organizations. Represents the province code of the client. country_code: type: string description: represents the country code of the client that needs to pay the invoice. billing_address: type: object description: 'represents the billing address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' properties: street_address: type: string maxLength: 250 description: | represent the street address section of the billing address of the client. (eg street, number, floor, door, etc) example: 123 Main Street city: type: string maxLength: 50 example: Paris description: represents the city on the billing address of the client that needs to pay the invoice zip_code: type: string maxLength: 20 example: '75009' description: represents the zip code on the billing address of the client that needs to pay the invoice province_code: type: string maxLength: 2 description: represents the province code of the client's billing address country_code: type: string maxLength: 2 example: fr description: represents the country code on the billing address of the client that needs to pay the invoice delivery_address: type: object description: 'represents the delivery address of the client that needs to pay the invoice. Stores the same data as the root-level fields address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`).' properties: street_address: type: string maxLength: 250 description: | represent the street address section of the delivery address of the client. (eg street, number, floor, door, etc) example: 123 Main Street city: type: string maxLength: 50 example: Paris description: represents the city on the delivery address of the client that needs to pay the invoice zip_code: type: string maxLength: 20 example: '75009' description: represents the zip code on the delivery address of the client that needs to pay the invoice province_code: type: string maxLength: 2 description: represents the province code of the client's delivery address that needs to pay the invoice country_code: type: string maxLength: 2 example: fr description: represents the country code on the delivery address of the client that needs to pay the invoice recipient_code: type: string description: Only for italian clients. Represents the client’s recipient code for receiving an the e-invoice in his SdI portal. created_at: type: string description: represents the date the client was created. Note that this is a machine date. locale: type: string example: fr description: 'represents the language of the documents created on Qonto (invoices, quotes, credit notes) for this particular client.' ClientIndividualCreatePayload: type: object required: - first_name - last_name - type properties: name: type: string maxLength: 250 description: represents the name of the client that needs to pay the client invoice. It is required if type is `company` first_name: type: string maxLength: 60 description: represents the first name of the client that needs to pay the invoice. It is required if type is `individual` or `freelancer` last_name: type: string maxLength: 60 description: represents the last name of the client that needs to pay the invoice. It is required if type is individual or freelancer. type: type: string enum: - individual - company - freelancer description: 'describes the client type. individual represents a physical person (a consumer) whereas company represents a legal entity. For Italian organizations only, `freelancer` (a legal entity with the name of a person) is also accepted.' email: type: string format: email example: john.doe@qonto.eu description: 'represents the e-mail address of the client that needs to pay the invoice, which is displayed in the invoice.' vat_number: type: string maxLength: 20 description: represents the Value Added Tax number of the client (a legal entity) that needs to pay the invoice. tax_identification_number: type: string maxLength: 30 description: "represents the Tax Identification Number of the client (a physical person) that needs to pay the invoice. It corresponds to the SIREN/SIRET for \U0001F1EB\U0001F1F7 companies." address: type: string maxLength: 250 description: represents the address of the client that needs to pay the invoice. city: type: string maxLength: 50 description: represents the city of the client that needs to pay the invoice. zip_code: type: string maxLength: 20 description: 'represents the zip code of the client that needs to pay the invoice. For clients with Italy as a country, the value must be 5 characters. For other countries, the value is capped to 20 characters.' province_code: type: string minLength: 2 maxLength: 2 description: |- represents the province code of the client that needs to pay the invoice. It is required only for Italian organizations. List of province codes: AG, AL, AN, AO, AP, AQ, AR, AT, AV, BA, BG, BI, BL, BN, BO, BR, BS, BT, BZ, CA, CB, CE, CH, CL, CN, CO, CR, CS, CT, CZ, EN, FC, FE, FG, FI, FM, FR, GE, GO, GR, IM, IS, KR, LC, LE, LI, LO, LT, LU, MB, MC, ME, MI, MN, MO, MS, MT, NA, NO, NU, OR, PA, PC, PD, PE, PG, PI, PN, PO, PR, PT, PU, PV, PZ, RA, RC, RE, RG, RI, RM, RN, RO, SA, SI, SO, SP, SR, SS, SU, SV, TA, TE, TN, TO, TP, TR, TS, TV, UD, VA, VB, VC, VE, VI, VR, VT, VV country_code: type: string minLength: 2 maxLength: 2 example: FR description: represents the country code of the client that needs to pay the invoice as a root-level field (ISO 3166 format). billing_address: description: 'represents the billing address of the client, which will be reflected on the invoice. Required to fill in either this object (with fields `street_address`, `city`, `zip_code`, `province_code` and `country_code`) or the root level fields (`address`, `city`, `zip_code`, `province_code` and `country_code`) when creating an invoice with this client.' allOf: - $ref: '#/components/schemas/ClientBillingAddress' type: object delivery_address: description: represents the delivery address of the client whose allOf: - $ref: '#/components/schemas/ClientDeliveryAddress' type: object recipient_code: type: string description: 'only for Italian clients. Represents the client’s recipient code, so that the client can receive the e-invoice in his SDI portal.' currency: type: string description: 'represents the client’s currency, supported format is ISO 4217. Required when creating an invoice with this client.' example: EUR locale: type: string description: | represents the language of the documents created on Qonto (invoices, quotes, credit notes) for this particular client. It is possible to choose between five languages: French, English, Italian, German, and Spanish. Required when creating an invoice with this client. example: FR ClientCompanyCreatePayload: type: object required: - name - type properties: name: type: string maxLength: 250 description: represents the name of the client that needs to pay the client invoice. It is required if type is `company` first_name: type: string maxLength: 60 description: represents the first name of the client that needs to pay the invoice. It is required if type is `individual` or `freelancer` last_name: type: string maxLength: 60 description: represents the last name of the client that needs to pay the invoice. It is required if type is individual or freelancer. type: type: string enum: - company description: 'describes the client type. individual represents a physical person (a consumer) whereas company represents a legal entity. For Italian organizations only, `freelancer` (a legal entity with the name of a person) is also accepted.' email: type: string format: email example: john.doe@qonto.eu description: 'represents the e-mail address of the client that needs to pay the invoice, which is displayed in the invoice.' vat_number: type: string maxLength: 20 description: represents the Value Added Tax number of the client (a legal entity) that needs to pay the invoice. tax_identification_number: type: string maxLength: 30 description: "represents the Tax Identification Number of the client (a physical person) that needs to pay the invoice. It corresponds to the SIREN/SIRET for \U0001F1EB\U0001F1F7 companies." address: type: string maxLength: 250 description: represents the address of the client that needs to pay the invoice. city: type: string maxLength: 50 description: represents the city of the client that needs to pay the invoice. zip_code: type: string maxLength: 20 description: 'represents the zip code of the client that needs to pay the invoice. For clients with Italy as a country, the value must be 5 characters. For other countries, the value is capped to 20 characters' province_code: type: string minLength: 2 maxLength: 2 description: |- represents the province code of the client that needs to pay the invoice. It is required only for Italian organizations. List of province codes: AG, AL, AN, AO, AP, AQ, AR, AT, AV, BA, BG, BI, BL, BN, BO, BR, BS, BT, BZ, CA, CB, CE, CH, CL, CN, CO, CR, CS, CT, CZ, EN, FC, FE, FG, FI, FM, FR, GE, GO, GR, IM, IS, KR, LC, LE, LI, LO, LT, LU, MB, MC, ME, MI, MN, MO, MS, MT, NA, NO, NU, OR, PA, PC, PD, PE, PG, PI, PN, PO, PR, PT, PU, PV, PZ, RA, RC, RE, RG, RI, RM, RN, RO, SA, SI, SO, SP, SR, SS, SU, SV, TA, TE, TN, TO, TP, TR, TS, TV, UD, VA, VB, VC, VE, VI, VR, VT, VV country_code: type: string minLength: 2 maxLength: 2 example: FR description: represents the country code of the client as a root-level field (ISO 3166 format) billing_address: description: 'represents the billing address of the client, which will be reflected on the invoice. Required to fill in either this object (with fields `street_address`, `city`, `zip_code`, `province_code` and `country_code`) or the root level fields (`address`, `city`, `zip_code`, `province_code` and `country_code`) when creating an invoice with this client.' allOf: - $ref: '#/components/schemas/ClientBillingAddress' type: object delivery_address: description: represents the delivery address of the client whose allOf: - $ref: '#/components/schemas/ClientDeliveryAddress' type: object recipient_code: type: string description: 'only for Italian clients. Represents the client’s recipient code, so that the client can receive the e-invoice in his SDI portal.' currency: type: string description: 'represents the client’s currency, supported format is ISO 4217. Required when creating an invoice with this client.' example: EUR locale: type: string description: | represents the language of the documents created on Qonto (invoices, quotes, credit notes) for this particular client. It is possible to choose between five languages: French, English, Italian, German, and Spanish. Required when creating an invoice with this client. example: FR ClientBillingAddress: type: object description: 'Send either a `billing_address` object filled-in or individual root-level address fields (`address`, `city`, `zip_code`, `province_code`, `country_code`). When both are sent, `billing_address` takes precedence and overwrites root-level fields.' properties: street_address: type: string maxLength: 250 description: | Street address section of the billing address of the client (eg street, number, floor, door, etc). example: 123 Main Street city: type: string maxLength: 50 example: Paris description: City on the billing address of the client zip_code: type: string maxLength: 20 example: '75009' description: Zip code on the billing address of the client province_code: type: string maxLength: 2 description: Province code of the client's billing address. It is required only for Italian organizations. country_code: type: string maxLength: 2 example: FR description: Country code on the billing address of the client (ISO 3166 format) ClientDeliveryAddress: type: object properties: street_address: type: string maxLength: 250 description: | Street address section of the delivery address of the client. (eg street, number, floor, door, etc) example: 123 Main Street city: type: string maxLength: 50 example: Paris description: City on the delivery address of the client zip_code: type: string maxLength: 20 example: '75009' description: Zip code on the delivery address of the client province_code: type: string maxLength: 2 description: Province code of the client's delivery address. It is required only for Italian organizations country_code: type: string maxLength: 2 example: FR description: Country code on the delivery address of the client (ISO 3166 format) ClientCreatePayload: oneOf: - $ref: '#/components/schemas/ClientIndividualCreatePayload' - $ref: '#/components/schemas/ClientCompanyCreatePayload' Beneficiary: type: object required: - id - name - status - trusted - created_at - updated_at properties: id: type: string format: uuid example: ce91bc4e-68d6-4ab0-bfab-4a9403f7f316 name: type: string example: Alice In Wonderland status: type: string enum: - pending - declined - validated example: validated trusted: type: boolean bank_account: type: object properties: iban: type: string bic: type: string currency: type: string account_number: type: string routing_number: type: string intermediary_bank_bic: type: string swift_sort_code: type: string created_at: type: string example: '2021-01-27T22:05:07.000Z' updated_at: type: string example: '2021-01-27T22:05:07.000Z' Currency: type: string enum: - AED - AUD - BGN - CAD - CHF - CNY - CZK - DKK - EUR - GBP - GHS - HKD - HUF - ILS - MXN - NOK - NZD - PEN - PLN - RON - RSD - SAR - SEK - SGD - TRY - USD - ZAR - ZMW example: EUR default: EUR RequestTransfer: type: object description: A transfer of money from one Qonto account to another account properties: id: type: string format: uuid description: ID of the request request_type: type: string enum: - transfer description: Type of the request status: type: string enum: - pending - approved - declined - canceled description: Status of the request initiator_id: type: string format: uuid description: |- ID of the membership that initiated the request.
When the request is initiated through the API, the initiator is the authenticated membership. approver_id: type: string format: uuid description: ID of the membership that approved the request nullable: true note: type: string description: Reason for the request declined_note: type: string description: Reason why the request was declined nullable: true creditor_name: type: string description: Name of the beneficiary amount: type: string description: 'Amount of the transfer, example "152.25"' currency: type: string description: Currency of the transfer. ISO-4217 3-characters currency code scheduled_date: type: string format: date description: 'When transfer would be executed. If request is approved after this date, it will be executed immediately' recurrence: type: string enum: - weekly - monthly description: 'Tells if transfer is recurring, null if it is not' nullable: true last_recurrence_date: type: string format: date-time description: Date of the last recurrence nullable: true processed_at: type: string format: date-time description: 'When request was approved, canceled or declined' nullable: true created_at: type: string format: date-time description: When request was created RequestMultiTransfer: type: object description: Several transfers executed at the same time. Several format can be provided to create a bulk transfer which is composed of many different transfers properties: id: type: string format: uuid description: ID of the request request_type: type: string enum: - multi_transfer description: Type of the request status: type: string enum: - pending - approved - declined - canceled description: Status of the request initiator_id: type: string format: uuid description: |- ID of the membership that initiated the request.
When the request is initiated through the API, the initiator is the authenticated membership. approver_id: type: string format: uuid description: ID of the membership that approved the request nullable: true note: type: string description: Reason for the request declined_note: type: string description: Reason why the request was declined nullable: true total_transfers_amount: type: string description: 'Total amount of the transfers, example "2152.25"' total_transfers_amount_currency: type: string description: Currency of the transfers. ISO-4217 3-characters currency code total_transfers_count: type: integer minimum: 1 description: Number of transfers scheduled_date: type: string format: date description: 'When transfers would be executed. If request is approved after this date, they will be executed immediately' processed_at: type: string format: date-time description: 'When request was approved, canceled or declined' nullable: true created_at: type: string format: date-time description: When request was created RequestFlashCard: type: object description: A virtual card with a budget and a last day of validity. The card becomes inactive after the budget is totally spent or the last date of validity is past properties: id: type: string format: uuid description: ID of the request request_type: type: string enum: - flash_card description: Type of the request status: type: string enum: - pending - approved - declined - canceled description: Status of the request initiator_id: type: string format: uuid description: |- ID of the membership that initiated the request.
When the request is initiated through the API, the initiator is the authenticated membership. approver_id: type: string format: uuid description: ID of the membership that approved the request nullable: true note: type: string description: Reason for the request declined_note: type: string description: Reason why the request was declined nullable: true pre_expires_at: type: string format: date-time description: When the flash card expires payment_lifespan_limit: type: string description: Total of payment limit until card expires currency: type: string description: Currency of the card and its limits. ISO-4217 3-characters currency code processed_at: type: string format: date-time description: 'When request was approved, canceled or declined' nullable: true created_at: type: string format: date-time description: When request was created Error: oneOf: - $ref: '#/components/schemas/BadRequestError' - $ref: '#/components/schemas/UnauthorizedError' - $ref: '#/components/schemas/ForbiddenError' - $ref: '#/components/schemas/NotFoundError' type: object RequestVirtualCard: type: object description: 'A virtual card with a monthly budget. Card holder can spend that amount every calendar month. Above that, transactions will be refused' properties: id: type: string format: uuid description: ID of the request request_type: type: string enum: - virtual_card description: Type of the request status: type: string enum: - pending - approved - declined - canceled description: Status of the request initiator_id: type: string format: uuid description: |- ID of the membership that initiated the request.
When the request is initiated through the API, the initiator is the authenticated membership. approver_id: type: string format: uuid description: ID of the membership that approved the request nullable: true note: type: string description: Reason for the request declined_note: type: string description: Reason why the request was declined nullable: true payment_monthly_limit: type: string description: Total of payment limit by month currency: type: string description: Currency of the card and its limits. ISO-4217 3-characters currency code processed_at: type: string format: date-time description: 'When request was approved, canceled or declined' nullable: true created_at: type: string format: date-time description: When request was created UnauthorizedError: type: object x-examples: Invalid credentials: code: unauthorized detail: Invalid credentials required: - code - detail properties: code: type: string description: Error code. detail: type: string description: Human readable error that explains error `code`. BadRequestError: type: object x-examples: Authorization field missing: code: bad_request detail: Authorization field missing required: - code - detail 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 field and the item in an array (if applicable) that causes the error. ForbiddenError: type: object x-examples: Insufficient permissions: code: forbidden detail: User does not have sufficient permissions for this action. required: - code - detail properties: code: type: string description: Error code. detail: type: string description: Human readable error that explains error `code`. NotFoundError: type: object x-examples: Object not found: code: not_found detail: Object not found source: parameter: id required: - code - detail 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. Transaction: type: object x-examples: Transaction from a Qonto bank account: id: 01910d82-014a-7783-b40c-41021851726e transaction_id: cooperative-boulangere-sud-2161-1-transaction-1910d8-20148 amount: 1425.6 amount_cents: 142560 settled_balance: 41995921.54 settled_balance_cents: 4199592154 attachment_ids: [] logo: small: 'https://qonto.com/customized-qonto-brand-logos/small.png' medium: 'https://qonto.com/customized-qonto-brand-logos/medium.png' local_amount: 1425.6 local_amount_cents: 142560 side: debit operation_type: qonto_fee currency: EUR local_currency: EUR label: Qonto settled_at: '2024-08-01T10:35:09.027Z' emitted_at: '2024-08-01T10:35:07.526Z' updated_at: '2024-08-01T10:35:09.512Z' status: completed note: null reference: null vat_amount: 237.6 vat_amount_cents: 23760 vat_rate: 20 initiator_id: null label_ids: [] attachment_lost: false attachment_required: true card_last_digits: null category: subscription subject_type: BillingTransfer bank_account_id: e97d6e4b-8179-47ae-88e9-3e43b230251e is_external_transaction: false Transaction from an external account.: id: 0191221f-258b-7bac-b83e-235fe00ff591 transaction_id: cooperative-boulangere-sud-2161-4-transaction-191221-f2535 amount: 11.99 amount_cents: 1199 settled_balance: null settled_balance_cents: null attachment_ids: [] logo: small: 'https://qonto.com/customized-qonto-brand-logos/small.png' medium: 'https://qonto.com/customized-qonto-brand-logos/medium.png' local_amount: 11.99 local_amount_cents: 1199 side: debit operation_type: other currency: EUR local_currency: EUR label: Arcade Software Inc. clean_counterparty_name: Arcade Software settled_at: '2024-06-25T00:00:00.000Z' emitted_at: '2024-06-25T00:00:00.000Z' updated_at: '2024-08-05T10:39:12.181Z' status: completed note: null reference: null vat_amount: null vat_amount_cents: null vat_rate: null initiator_id: null label_ids: [] attachment_lost: false attachment_required: true card_last_digits: null category: other_expense subject_type: Other bank_account_id: 0191221f-2452-735f-9144-bff2ca4fa8a4 is_external_transaction: true properties: id: type: string description: UUID of the transaction. transaction_id: type: string amount: type: number format: float description: Amount of the transaction in the currency of the bank account. example: '10,00' amount_cents: type: integer description: Amount of the transaction in the currency of the bank account. example: 1000 settled_balance: type: number nullable: true settled_balance_cents: type: integer default: 0 nullable: true attachment_ids: type: array description: 'Array of UUIDs, corresponding to the attachments (up to 5) uploaded on the transaction. You can obtain details for each attachment using [Get attachment](/reference/openapi_v2.yml/paths/~1v2~1attachments~1%7Bid%7D/get).' items: type: string nullable: true logo: type: object description: Object containing URLs to small and medium-sized logos associated with the transaction. properties: small: x-stoplight: id: 4xsjk3ldusyox type: string medium: type: string x-stoplight: id: bhxohlyhos6is local_amount: type: number format: float description: Amount of the transaction in the **foreign currency** (if any). example: '10,87' local_amount_cents: type: integer example: 1087 description: Amount of the transaction in the **foreign currency** (if any). side: type: string description: |- - `credit`: incoming transaction - `debit`: outgoing transaction operation_type: type: string description: |- - `income`: an incoming transfer - `transfer`: an outgoing transfer - `card`: a card payment - `direct_debit`: a SEPA Direct Debit (payments collected from you by other businesses) - `direct_debit_collection`: a SEPA Direct Debit Collection (payments collected from other businesses by you) - `direct_debit_hold`: a hold for a Direct Debit Collection, or its release - `qonto_fee`: a Qonto fee (subscription, atm withdrawal, fx card...) - `cheque`: a Check cashed on the account - `recall`: recall of an incoming transfer (by the emitter beneficiary or bank) - `swift_income`: a SWIFT incoming transfer - `pay_later`: a transaction related to financing - `financing_installment`: a transaction related to an installment of a financed transfer - `other`: an external transaction for which the type of transaction is unknown currency: type: string description: | `euros` is the only bank account currency supported by Qonto. local_currency: type: string example: USD label: type: string description: Name of the counterparty of the transaction. clean_counterparty_name: type: string description: Simplified and standardized version of the counterparty's name. settled_at: type: string description: |- Date and time, in UTC, at which the transaction was finally committed to the account, and got set to a `completed` status.
Do note: the `settled_at` value can be `null`, for transaction which aren't `completed` (i.e. `pending`, `reversed` and `declined`). nullable: true emitted_at: type: string description: 'Date and time, in UTC, at which the transaction was first authorized and recorded on the bank account.' updated_at: type: string description: 'Date and time, in UTC, at which the transaction object was last updated (any state change will trigger a bump of this timestamp).' status: type: string note: type: string nullable: true reference: type: string nullable: true vat_amount: type: number format: float description: Amount aggregate for all the VAT. nullable: true vat_amount_cents: type: integer description: Amount aggregate for all the VAT. nullable: true vat_rate: type: number format: float example: 10 description: 'Rate selected or detected. The value can be `-1` for uncategorized rate (e.g in France any value which is not in `0`, `2.1`, `5.5`, `10`, `20`) or for transactions with multiple VAT.' nullable: true initiator_id: type: string nullable: true label_ids: type: array description: '`id` of the custom label that user can add on a transaction for categorization purposes. These labels are accessible using the [Show Label endpoint](https://api-doc.qonto.com/docs/business-api/b3A6ODQxOTQyMg-show-label).' items: type: string nullable: true attachment_lost: type: boolean description: Sets to `true` if the attachment of the transaction was marked as lost. attachment_required: type: boolean description: Sets to `true` if the attachment of the transaction was marked as required. card_last_digits: type: string nullable: true category: type: string description: |- Possible values:
`restaurant_and_bar` `food_and_grocery` `transport` `gas_station` `hotel_and_lodging` `it_and_electronics` `hardware_and_equipment` `office_supply` `office_rental` `utility` `insurance` `logistics` `online_service` `legal_and_accounting` `finance` `tax` `salary` `marketing` `manufacturing` `atm` `other_service` `other_expense` `treasury_and_interco` `sales` `other_income` `refund` `fees` `subscription` `voucher` `fallback` `pending` subject_type: type: string description: | Identifies the type of transaction and maps to the nested additional fields with specific transaction data. Not to confuse with the attribute `operation_type` (explained above) which is a more specific categorisation of a transaction. Values: - `Card`: a card payment - `Transfer`: an outgoing transfer - `Income`: an incoming transfer - `DirectDebit`: a SEPA Direct Debit (payments collected from you by other businesses) - `DirectDebitCollection`: a SEPA Direct Debit Collection (payments collected from other businesses by you) - `DirectDebitHold`: a hold for a Direct Debit Collection, or its release - `WalletToWallet`: a transfer between two Qonto accounts - `Check`: a Check cashed on the account - `SwiftIncome`: a SWIFT incoming transfer - `PagopaPayment`: for electronic payments to central and local public administration entities - `F24Payment`: regulatory report in Italy that is used to pay taxes and social security to state entities - `BillingTransfer`: a transfer related to the billing of a Qonto account - `FinancingIncome`: financing for a transfer - `FinancingInstallment`: a repayment of the financing - `Other`: an external transaction for which the type of transaction is unknown For the subject types `DirectDebit`, `DirectDebitCollection`, `DirectDebitHold`, `Income`, `SwiftIncome`, `Transfer`, `Check`, `PagopaPayment` and `FinancingInstallment`, you will find a nested object (e.g. `direct_debit`) with additional fields. bank_account_id: type: string is_external_transaction: type: boolean description: 'Sets to `true` for transactions related to external bank accounts (cf. https://support-fr.qonto.com/hc/en-us/articles/24231375285777-How-to-connect-my-external-accounts-to-my-Qonto-interface).' attachments: type: array description: 'Use the following parameter to include `attachments` in the response: `includes[]=attachments`.' nullable: true items: x-stoplight: id: xxvtj4z2idcjs type: object properties: id: type: string x-stoplight: id: jfbvpqicts9dp description: UUID of the attachment. created_at: type: string x-stoplight: id: meqsutk4kqh4u file_name: type: string x-stoplight: id: 6u14eifg9dwl0 file_size: type: string x-stoplight: id: 0c6wag3117ht8 file_content_type: type: string x-stoplight: id: ty2fnzkdvpkfo url: type: string x-stoplight: id: 0hcvw24df1yp3 probative_attachment: type: object x-stoplight: id: rijldvngy2qsk properties: status: type: string x-stoplight: id: olfxj9xyo0ka3 labels: type: array x-stoplight: id: bofm6kwiz80cq description: 'Use the following parameter to include `labels` in the response: `includes[]=labels`.' items: x-stoplight: id: hp0fg35eqq4fl type: object properties: id: type: string x-stoplight: id: fndk5lisse4oy description: UUID of the label. name: type: string x-stoplight: id: 6v95c59lj4aav parent_id: type: string x-stoplight: id: 0gojuselmz6oo vat_details: type: object x-stoplight: id: vnjdok0qy09o7 description: 'Use the following parameter to include `vat_details` in the response: `includes[]=vat_details`.' properties: items: type: array x-stoplight: id: 3jfyuknrb9rhz description: One item for each specific VAT line. items: x-stoplight: id: iz5w649za9pb4 type: object properties: amount: type: string x-stoplight: id: rfctqzwb2tvcv amount_cents: type: string x-stoplight: id: z4f10m5u3kpsf amount_excluding_vat: type: string x-stoplight: id: vefzz00j0v2w6 amount_excluding_vat_cents: type: string x-stoplight: id: mobhizrsc5ikg rate: type: string x-stoplight: id: jwi92sinjm4wi description: 'Rate selected or detected. The value can be `-1` for uncategorized rate (e.g in France any value which is not in `0, 2.1, 5.5, 10, 20`).' transfer: type: object nullable: true properties: counterparty_account_number: type: string description: | Account number of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_account_number_format: type: string description: |- Account number format of the transaction’s counterparty. Possible values are: - `IBAN`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without IBAN**. counterparty_bank_identifier: type: string description: Bank identifier of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_bank_identifier_format: type: string description: |- Bank identifier format of the transaction’s counterparty. Possible values are: - `SWIFT_BIC`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without BIC**. income: type: object nullable: true properties: counterparty_account_number: type: string description: Account number of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_account_number_format: type: string description: |- Account number format of the transaction’s counterparty. Possible values are: - `IBAN`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without IBAN**. counterparty_bank_identifier: type: string description: Bank identifier of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_bank_identifier_format: type: string description: |- Bank identifier format of the transaction’s counterparty. Possible values are: - `SWIFT_BIC`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without BIC**. swift_income: type: object nullable: true properties: counterparty_account_number: type: string description: Account number of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_account_number_format: type: string description: |- Account number format of the transaction’s counterparty. Possible values are: - `unstructured`; - Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_bank_identifier: type: string description: Bank identifier of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_bank_identifier_format: type: string description: |- Bank identifier format of the transaction’s counterparty. Possible values are: - `sort_code`; - Might be empty for external transaction (i.e. when `is_external_transaction == true`). direct_debit: type: object nullable: true properties: counterparty_account_number: type: string description: Account number of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_account_number_format: type: string description: | Account number format of the transaction’s counterparty. Possible values are: - `IBAN`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without IBAN**. counterparty_bank_identifier: type: string description: Bank identifier of the transaction’s counterparty. Might be empty for external transaction (i.e. when `is_external_transaction == true`). counterparty_bank_identifier_format: type: string description: |- Bank identifier format of the transaction’s counterparty. Possible values are: - `SWIFT_BIC`; - Empty for external transaction (i.e. when `is_external_transaction == true`) **without BIC**. check: type: object nullable: true properties: check_number: type: string check_key: type: string financing_installment: type: object nullable: true properties: total_installments_number: type: integer description: Installment of the current transaction. current_installment_number: type: integer description: Total number of installments. pagopa_payment: type: object nullable: true properties: notice_number: type: string description: 'Code in the PagoPA Payment Advice that identifies the payment notice, to be used for payments with PagoPA (i.e. codice_avviso).' creditor_fiscal_code: type: string description: 'Code in the PagoPA Payment Notice that identifies the creditor institution, to be used for PagoPA payments (i.e. codice_ent)' iuv: type: string description: Unique Payment Identifier (UPI) is the code that uniquely identifies exclusively a requested payment. direct_debit_collection: type: object nullable: true properties: counterparty_account_number: type: string description: Account number of the transaction’s counterparty. counterparty_account_number_format: type: string description: Account number format of the transaction’s counterparty. counterparty_bank_identifier: type: string description: Bank identifier of the transaction’s counterparty. counterparty_bank_identifier_format: type: string description: Bank identifier format of the transaction’s counterparty. direct_debit_hold: type: object nullable: true properties: guarding_rate: type: string Statement: type: object x-examples: Example 1: id: d52c7176-3ab8-4607-92a3-a1a488397b91 bank_account_id: 1430043d-0227-4fdd-a970-45afd165676f period: 05-2024 file: file_name: Foobar file_size: '666' file_content_type: image/png file_url: 'https://my-s3.url.qonto.bucket.com/123456789' required: - id - bank_account_id - period - file properties: id: type: string description: Unique identifier of the statement. example: 08544790-6305-4a85-8487-e035290bcee8 bank_account_id: type: string x-stoplight: id: kmqtiqbwbzl5k example: 9f4af770-344b-42c1-a592-6a2adf82a6d3 description: Unique identifier of the bank account associated to the statement. period: type: string description: Month of the statement with the `MM-YYYY` format. example: 08-2024 file: type: object required: - file_name - file_content_type - file_size - file_url properties: file_name: type: string description: Name of the statement file file_content_type: type: string description: Type of the statement file example: application/pdf file_size: type: string description: Size of the statement file example: '16966' file_url: type: string description: Link to downlaod the statement file. **The url expires after 30 minutes**. InsuranceContractPartnerData: type: object description: Insurance contract data provided by Partner properties: name: type: string description: Name of the insurance contract signed by the customer example: ProLiability Plan 2024 contract_id: type: string description: ID of the contract created by partner example: '12345' origin: type: string description: Insurance contract origin enum: - insurance_hub - qonto_other - stello example: insurance_hub provider_slug: type: string description: Identifier representing insurance provider example: axa type: type: string description: Defined category of insurance taken by the customer example: business_liability status: type: string description: Insurance contract status enum: - active - pending_payment - pending_others - action_required - expired - archived example: active troubleshooting_url: type: string description: Link for troubleshooting when contract status is not active example: 'https://patner.com/troubleshoot' service_url: type: string description: Static link for customer to access their insurance management portal example: 'https://partner.com/service' expiration_date: type: string format: date description: Date when the contract terminates unless it is renewed example: '2025-12-31' start_date: type: string description: Date when the insurance contract becomes active and coverage begins example: '2024-12-31' renew_date: type: string description: Date when the policy is scheduled for renewal example: '2025-12-31' payment_frequency: type: string description: Payment frequency enum: - month - quarter - annual example: month price: type: object description: Price of the insurance properties: value: type: string example: '99.99' currency: type: string example: EUR InsuranceContractCreatePayload: type: object required: - insurance_contract properties: insurance_contract: allOf: - $ref: '#/components/schemas/InsuranceContractPartnerData' required: - name - contract_id - origin - provider_slug - type - status - start_date - payment_frequency - price InsuranceContract: type: object required: - insurance_contract properties: insurance_contract: allOf: - type: object properties: id: type: string description: UUID of the insurance contract example: 888e4567-e89b-12d3-a456-426614174123 - $ref: '#/components/schemas/InsuranceContractPartnerData' InsuranceContractWithDocuments: type: object required: - insurance_contract properties: insurance_contract: allOf: - type: object properties: id: type: string description: UUID of the insurance contract example: 888e4567-e89b-12d3-a456-426614174123 - $ref: '#/components/schemas/InsuranceContractPartnerData' - type: object properties: documents: type: array description: Insurance document(s) attached to the contract items: type: object properties: id: type: string format: uuid description: UUID of the attachment example: 123e4567-e89b-12d3-a456-426614174000 name: type: string example: Contract Axa description: The name of the file type: type: string example: contract description: Type of the file InsuranceContractUpdatePayload: type: object required: - insurance_contract properties: insurance_contract: allOf: - $ref: '#/components/schemas/InsuranceContractPartnerData' UnprocessableEntityError: type: object x-stoplight: id: 467728c911962 x-examples: Missing attribute: code: missing_key detail: attribute is missing source: pointer: /external_transfer/atrribute required: - code - detail properties: status: type: string x-stoplight: id: pu86dvuefs112 code: type: string description: Error code. detail: type: string description: Human readable error that explains error `code`. message: type: string x-stoplight: id: iy38mftd2hy1j source: type: object properties: pointer: type: string x-stoplight: id: opugvzqqyfsrx description: The attribute and the item in an array (if applicable) that causes the error. parameters: X-Qonto-Staging-Token: name: X-Qonto-Staging-Token in: header schema: type: string description: 'Required only for Sandbox API requests; to get one, please submit the following form: https://getqonto.atlassian.net/servicedesk/customer/portal/5/group/47/create/143. ' responses: 400-Bad-request: description: Returns a bad request error. content: application/json: schema: type: object properties: errors: type: array x-stoplight: id: tg6joa8xbwn3j items: type: object $ref: '#/components/schemas/BadRequestError' examples: Authorization field missing: value: errors: - code: bad_request detail: Authorization field missing 401-Unauthorized: description: Returns an unauthorized error. content: application/json: schema: type: object x-examples: Example 1: errors: - code: unauthorized detail: Invalid credentials properties: errors: type: array items: type: object $ref: '#/components/schemas/UnauthorizedError' examples: Invalid credentials: value: errors: - code: unauthorized detail: Invalid credentials 403-Forbidden: description: Returns a forbidden error. content: application/json: schema: type: object x-examples: Example 1: errors: - code: forbidden detail: User does not have sufficient permissions for this action. properties: errors: type: array items: type: object $ref: '#/components/schemas/ForbiddenError' 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 x-examples: Example 1: errors: - code: not_found detail: client invoice not found source: parameter: id properties: errors: type: array items: type: object $ref: '#/components/schemas/NotFoundError' examples: Client invoice not found: value: errors: - code: not_found detail: Client invoice not found source: parameter: id 422-Unprocessable-entity: description: Returns an unprocessable entity error. content: application/json: schema: type: object x-examples: Example 1: errors: - code: missing_key detail: reference is missing source: pointer: /external_transfer/reference properties: errors: type: array items: type: object $ref: '#/components/schemas/UnprocessableEntityError' examples: Invalid id: value: errors: - status: '422' code: invalid detail: invoice_id is missing or invalid message: invoice_id is missing or invalid 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 - request_review.write - request_review.read - team.read - team.write - request_transfers.write - insurance_contract.read - insurance_contract.write - card.read - card.write - SecretKey: []