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

# v1/recurring-transfers

> OAuth scope: `organization.read`

Webhook that delivers events related to SEPA recurring transfers, meaning the recurring
transfer resource itself rather than the individual transfers it executes.

Supported events:
  - `created` — The recurring transfer was created.
  - `canceled` — The recurring transfer was canceled, so no further transfers will be executed from it.

There is no `updated` event: a recurring transfer cannot be edited in place, so changing one
means canceling it and creating a new one, which you receive as a `canceled` followed by a
`created`.

To follow the individual transfers a recurring transfer executes, subscribe to `v1/transfers`
instead: each execution is delivered there with `recurring_transfer_id` set to this resource.

Deliveries are not deduplicated, so treat them idempotently: an already-canceled recurring
transfer being saved again can re-deliver `canceled`.


This topic delivers events related to SEPA recurring transfers — the recurring transfer resource itself, rather than the individual transfers it executes.

**Events:**

* **`created`** — The recurring transfer was recorded.
* **`canceled`** — The recurring transfer was canceled, so no further transfers will be executed from it. Previously, detecting a cancellation made outside your integration required re-listing all recurring transfers.

**There is no `updated` event.** A recurring transfer cannot be edited in place, so changing one means canceling it and creating a new one — which you receive as a `canceled` followed by a `created`, each carrying its own `id`.

`data` mirrors the payload of `GET /v2/sepa/recurring_transfers/{id}`, so you can upsert the recurring transfer locally without a follow-up request. It carries no `status`, `declined_reason`, or `transaction_id`: those describe the individual transfers a recurring transfer executes, not the recurring transfer itself.

To follow those executions, subscribe to [`v1/transfers`](/api-reference/business-api/webhooks/supported-webhooks/v1-transfers) as well. Each execution is delivered there as a `created` event with `data.recurring_transfer_id` set to this resource's `id`.

**Deliveries are not deduplicated.** Treat them idempotently: an already-canceled recurring transfer being saved again can re-deliver `canceled`.

<RequestExample>
  ```json v1/recurring-transfers created theme={null}
  {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "subscription_id": "123e4567-e89b-12d3-a456-426614174000",
      "organization_id": "123e4567-e89b-12d3-a456-426614174000",
      "membership_id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "v1/recurring-transfers",
      "created_at": "2025-04-22T12:00:00Z",
      "data": {
          "event": "created",
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
          "bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
          "amount": 1100.50,
          "amount_cents": 110050,
          "amount_currency": "EUR",
          "beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
          "reference": "Lease payment",
          "note": "Lease payment for offices in Paris",
          "frequency": "monthly",
          "first_execution_date": "2025-04-22",
          "last_execution_date": "2026-08-21",
          "next_execution_date": "2025-05-22",
          "created_at": "2025-04-22T12:00:00Z",
          "updated_at": "2025-04-22T12:00:00Z"
      }
  }
  ```

  ```json v1/recurring-transfers canceled theme={null}
  {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "subscription_id": "123e4567-e89b-12d3-a456-426614174000",
      "organization_id": "123e4567-e89b-12d3-a456-426614174000",
      "membership_id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "v1/recurring-transfers",
      "created_at": "2025-06-02T09:15:00Z",
      "data": {
          "event": "canceled",
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
          "bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
          "amount": 1100.50,
          "amount_cents": 110050,
          "amount_currency": "EUR",
          "beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
          "reference": "Lease payment",
          "note": "Lease payment for offices in Paris",
          "frequency": "monthly",
          "first_execution_date": "2025-04-22",
          "last_execution_date": "2026-08-21",
          "next_execution_date": null,
          "created_at": "2025-04-22T12:00:00Z",
          "updated_at": "2025-06-02T09:15:00Z"
      }
  }
  ```
</RequestExample>


## OpenAPI

````yaml webhook v1/recurring-transfers
openapi: 3.1.1
info:
  version: v2
  title: Qonto
servers:
  - url: https://thirdparty.qonto.com
    description: Production URL
  - url: https://thirdparty-sandbox.staging.qonto.co
    description: Sandbox URL
security:
  - OAuth:
      - organization.read
      - membership.read
      - membership.write
      - attachment.write
      - internal_transfer.write
      - payment.write
      - supplier_invoice.write
      - supplier_invoice.read
      - client_invoices.read
      - client_invoice.write
      - client.read
      - client.write
      - product.read
      - product.write
      - request_review.write
      - request_review.read
      - team.read
      - team.write
      - request_transfers.write
      - insurance_contract.read
      - insurance_contract.write
      - card.read
      - card.write
      - bank_account.write
      - beneficiary.trust
      - webhook
      - payment_link.write
      - payment_link.read
      - sepa_direct_debit.read
      - sepa_direct_debit.write
      - terminal.read
      - terminal.write
  - SecretKey: []
paths: {}
components:
  securitySchemes:
    OAuth:
      type: oauth2
      description: >
        Bearer authorization header: `Bearer <token>`, where `<token>` is the
        access token received from the authorization server at the end of the
        [OAuth 2.0
        flow](/get-started/business-api/authentication/oauth/oauth-flow).
      flows:
        authorizationCode:
          refreshUrl: https://oauth.qonto.com/oauth2/token
          authorizationUrl: https://oauth.qonto.com/oauth2/auth
          scopes:
            attachment.read: Retrieve attachments
            attachment.write: Upload attachments and remove attachments from transactions
            bank_account.write: Create, update and close bank accounts
            beneficiary.trust: Trust SEPA beneficiaries
            card.read: Retrieve cards
            card.write: Create or update cards
            cash_flow_category.read: Retrieve cash flow categories
            cash_flow_category.write: Create cash flow categories and assign them to transactions
            client.read: Retrieve clients
            client.write: Create clients
            client_invoice.write: Create client invoices
            client_invoices.read: Retrieve client invoices and credit notes
            einvoicing.read: Retrieve e-invoicing settings
            embed_auth_link.write: Create Embed auth links
            insurance_contract.read: Retrieve insurance contracts
            insurance_contract.write: Create and update insurance contracts
            internal_transfer.write: >-
              Create internal transfers (between 2 Qonto accounts of the same
              organization)
            international_transfer.write: Create international transfers
            membership.read: Retrieve the authentified membership
            membership.write: Invite team members
            offline_access: Retrieve a refresh token
            organization.read: >-
              Retrieve organization, bank accounts, transactions, transfers,
              beneficiaries, labels, memberships, requests & statements
            payment.write: Create external transfers and untrust beneficiaries
            payment_link.read: >-
              Retrieve payment links, their payments, and the available payment
              methods
            payment_link.write: >-
              Connect to the payment links provider, create and deactivate
              payment links
            product.read: Retrieve products
            product.write: Create products
            request_cards.write: Create card requests
            request_review.write: Approve or decline requests
            request_transfers.write: Create transfer requests
            sepa_direct_debit.read: View SEPA Direct Debit payments
            sepa_direct_debit.write: Manage SEPA Direct Debit payments
            subscription.read: Retrieve the organization's current subscription plan
            supplier_invoice.read: Retrieve supplier invoices
            supplier_invoice.write: Create supplier invoices
            team.read: Retrieve teams
            team.write: Create teams
            terminal.read: View your payment terminals
            terminal.write: Configure your terminals and initiate payments
            user_organization.read: View the organizations the user has granted access to
            webhook: >-
              Receive a notification each time a particular event occurs in
              Qonto
          tokenUrl: https://oauth.qonto.com/oauth2/token
    SecretKey:
      type: apiKey
      description: cf. [API key](/get-started/business-api/authentication/api-key)
      name: Authorization
      in: header

````