---
title: "List mandate migration candidates"
method: GET
path: "/api/external/v2/pro_account/mandate_migrations"
tags: ["Mandates"]
---

# List mandate migration candidates

`GET /api/external/v2/pro_account/mandate_migrations`

## Request

- Base URL: `https://app.pennylane.com`
- URL: `https://app.pennylane.com/api/external/v2/pro_account/mandate_migrations`
- Auth: OAuth 2
  - Authorization code: `https://app.pennylane.com/oauth/authorize`
  - Token URL: `https://app.pennylane.com/oauth/oauth/token` scopes: `customer_mandates:readonly`, `customer_mandates:all`

This endpoint allows you to retrieve all mandate migration candidates
for your company. These are mandates that can be migrated to a Pro Account.

Requirements:
- Company must have a Pro Account (returns 404 if not)
- Company must have an enabled merchant profile (returns 403 if not)


> ℹ️
> This endpoint requires one of the following scopes: `customer_mandates:readonly`, `customer_mandates:all`

## Query parameters

- `cursor` string
- `limit` integer
- `filter` string
- `sort` string

## Headers

- `X-Company-Id` string

## Response `200`

The list of mandate migration candidates

- object
  - `has_more` boolean, required: Indicates whether additional results are available beyond this set. Use this flag to determine if another request is needed.
  - `next_cursor` string, nullable, required: Cursor to retrieve the next set of results. Include this value in the cursor parameter of your next request to fetch subsequent items. A `null` `next_cursor` in the response indicates no further results.
  - `items` object[], required
    - `id` integer, required: Numeric ID extracted from the display_id
    - `status` 'available' | 'completed', required: Status of the mandate migration candidate. - `available`: The mandate is available for migration - `completed`: The mandate has been successfully migrated
    - `direct_debit_method` 'GoCardless' | 'XML' | 'ProAccount', required: The direct debit method used by this mandate. - `GoCardless`: GoCardless mandate - `XML`: SEPA XML mandate - `ProAccount`: Pro Account mandate
    - `signed_at` string, date-time, nullable, required: Date when the mandate was signed
    - `error_message` string, nullable, required: Error message if the migration failed
    - `migrated_at` string, date-time, nullable, required: Date when the mandate was successfully migrated
    - `migration_started_at` string, date-time, nullable, required: Date when the migration was started
    - `mandate` object, required: A polymorphic mandate object can either be a SepaMandate or a Gocardless mandate.
      - `id` integer, required
      - `type` 'SepaMandate' | 'Mandate', required
    - `customer` object, nullable, required: The customer associated with this mandate
      - `id` integer, required
      - `url` string, required: URL to get the customer.
      - `pro_account_mandate` object, required
        - `url` string, required: Link to the pro account mandate for this customer.
    - `created_at` string, date-time, required: Creation date of the mandate migration candidate
    - `updated_at` string, date-time, required: Last update date of the mandate migration candidate

## Other responses

- `400`: Bad request
- `401`: Access token is missing or invalid
- `403`: Access to this resource forbidden
- `404`: The resource was not found

## Changes

- **2026-11-03** `871f863307e5`: 1 info
  - added the new optional `header` request parameter `X-Company-Id`

[Operation history](https://skmtc.dev/pennylane/apis/company-v2/changes/api/external/v2/pro_account/mandate_migrations/get.md)

---

[API](https://skmtc.dev/pennylane/apis/company-v2.md) - [All operations](https://skmtc.dev/pennylane/apis/company-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/pennylane/apis/company-v2/revisions/871f863307e5?raw)
