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

# List recurring series

> Returns a page of the organization's series, newest first. Creation order is the only ordering a series can offer: a series has no settlement date of its own -- its occurrences carry those -- which is also why this route takes no date range. To ask which payments fall in a period, or to see the occurrences of one series, use GET /v1/scheduled-payments with recurrence_id. Paging is by opaque cursor rather than offset: a series registered between two pages would shift every later row under an offset and silently skip one. Echo the cursor verbatim. The status filter takes the SERIES' statuses (ACTIVE, COMPLETED, CANCELLED), not an occurrence's -- a cancelled series still has settled occurrences behind it.



## OpenAPI

````yaml /en/openapi/v3-current/pix-lerian-spi.yaml get /scheduled-payment-recurrences
openapi: 3.1.0
info:
  contact:
    name: Lerian Studio
    url: https://lerian.studio
  description: Public API for outbound Pix transfers, refunds, and scheduled payments.
  license:
    name: Lerian Studio General License
  title: Pix Lerian — Payments
  version: 1.1.0
servers:
  - url: https://api.example.com/spi/v1
    description: >-
      Replace the example host with the URL provided during environment
      onboarding.
security:
  - BearerAuth: []
tags:
  - description: Create, list, and retrieve Pix refunds.
    name: Refunds
  - name: Scheduled Payments
    description: Register, list, retrieve, and cancel scheduled Pix payments.
  - description: Initiate, process, list, and retrieve outbound Pix transfers.
    name: Transfers
  - description: >-
      Register, list, retrieve, and cancel recurring series of scheduled Pix
      payments.
    name: Scheduled Payment Recurrences
paths:
  /scheduled-payment-recurrences:
    get:
      tags:
        - Scheduled Payment Recurrences
      summary: List recurring series
      description: >-
        Returns a page of the organization's series, newest first. Creation
        order is the only ordering a series can offer: a series has no
        settlement date of its own -- its occurrences carry those -- which is
        also why this route takes no date range. To ask which payments fall in a
        period, or to see the occurrences of one series, use GET
        /v1/scheduled-payments with recurrence_id. Paging is by opaque cursor
        rather than offset: a series registered between two pages would shift
        every later row under an offset and silently skip one. Echo the cursor
        verbatim. The status filter takes the SERIES' statuses (ACTIVE,
        COMPLETED, CANCELLED), not an occurrence's -- a cancelled series still
        has settled occurrences behind it.
      operationId: listScheduledPaymentRecurrences
      parameters:
        - description: Page size, 1..100. Absent or 0 means 20.
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Page size, 1..100. Absent or 0 means 20.
            examples:
              - 20
            format: int64
            maximum: 100
            minimum: 0
            type: integer
        - description: >-
            Opaque cursor from a previous page. Echo it verbatim -- it is not a
            document to build.
          explode: false
          in: query
          name: cursor
          schema:
            description: >-
              Opaque cursor from a previous page. Echo it verbatim -- it is not
              a document to build.
            type: string
        - description: Narrow to one payer account.
          explode: false
          in: query
          name: account_id
          schema:
            description: Narrow to one payer account.
            format: uuid
            type: string
        - description: >-
            Narrow to one series status. These are the SERIES' statuses, not an
            occurrence's: a cancelled series still has settled occurrences
            behind it.
          explode: false
          in: query
          name: status
          schema:
            description: >-
              Narrow to one series status. These are the SERIES' statuses, not
              an occurrence's: a cancelled series still has settled occurrences
              behind it.
            enum:
              - ACTIVE
              - COMPLETED
              - CANCELLED
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                items:
                  - id: 01a0d8fb-1a8b-7a10-b3c4-d5e6f7a8b9c0
                    accountId: 0195948b-bf02-7e4f-9a1b-2c3d4e5f6a7b
                    amount: '150.00'
                    currency: BRL
                    status: ACTIVE
                    initiationType: DICT
                    purpose: IPAY
                    description: Aluguel
                    metadata:
                      contractRef: A-4471
                    recurrence:
                      periodicity: MONTHLY
                      firstPaymentDate: '2027-08-10'
                      paymentCount: 12
                      endDate: null
                      indefinite: false
                      referenceDayOfMonth: 10
                    source:
                      branch: '0001'
                      accountNumber: '1234567'
                      accountType: CACC
                      ispb: '60746948'
                      personType: NATURAL_PERSON
                      taxId: '12345678909'
                      name: Ana Souza
                    destination:
                      branch: '0001'
                      accountNumber: '7654321'
                      accountType: CACC
                      ispb: '18236120'
                      personType: NATURAL_PERSON
                      taxId: '98765432100'
                      name: Joao Pereira
                    payeeKey:
                      keyType: EMAIL
                      keyValue: joao.pereira@example.com
                    materializedThrough: '2027-10-10'
                    lastPaymentDate: '2028-07-10'
                    createdAt: '2026-09-25T14:32:10.123456Z'
                    updatedAt: '2026-09-25T14:32:10.123456Z'
              schema:
                $ref: '#/components/schemas/RecurrencesPage'
          description: OK
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The request could not be bound, or a filter cannot be used. The
            cursor is not one this service issued or it was truncated
            (PIX-0789); a status is not a SERIES status, account_id is not a
            UUID, or limit is negative or above 100 (PIX-0020, naming each
            offending parameter; 0, like an absent limit, means the default page
            size of 20). An occurrence status such as PENDING or SETTLED is
            refused rather than answered with an empty page, because the two
            vocabularies sit side by side and an empty page would read as 'you
            have no series'. Restart a cursor listing without the cursor.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
              example:
                title: Unprocessable Entity
                status: 422
                detail: validation failed
                errors:
                  - message: invalid integer
                    location: query.limit
                    value: abc
          description: >-
            `limit` is not an integer. This is the FRAMEWORK's request-binding
            refusal, not one of this service's: it carries no PIX-NNNN code,
            names the offending parameter in `errors`, and happens before any
            filter is looked at. Every other bad value on this operation -- an
            unknown status, a malformed cursor, a non-UUID account_id -- is the
            400 above instead.
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
components:
  schemas:
    RecurrencesPage:
      additionalProperties: false
      properties:
        items:
          description: The page, newest first. Never null.
          items:
            $ref: '#/components/schemas/RecurrenceView'
          type: array
        nextCursor:
          description: >-
            Pass back as cursor for the following page. Absent on the last page
            -- its absence is how the listing ends, not an empty items array.
          type: string
      required:
        - items
      type: object
    Detail:
      additionalProperties: true
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    RecurrenceView:
      additionalProperties: false
      properties:
        accountId:
          description: Payer account.
          examples:
            - 0195948b-bf02-7e4f-9a1b-2c3d4e5f6a7b
          type: string
        amount:
          description: Amount of every occurrence, in BRL.
          examples:
            - '150.00'
          type: string
        createdAt:
          format: date-time
          type: string
        currency:
          description: Always BRL.
          examples:
            - BRL
          type: string
        description:
          description: >-
            The payer's memo, carried by every occurrence and returned exactly
            as stored.
          examples:
            - Aluguel
          type: string
        destination:
          $ref: '#/components/schemas/ParticipantView'
          description: >-
            The payee as photographed at creation. On a DICT series it is
            compared, before EVERY occurrence settles, against a fresh directory
            answer (REG-Art.9 section 6), which is why it is stored rather than
            re-resolved; the occurrences of a MANUAL series are sent to it as
            photographed, with no second lookup.
        id:
          description: Series identifier.
          examples:
            - 01a0d8fb-1a8b-7a10-b3c4-d5e6f7a8b9c0
          type: string
        initiationType:
          description: How the destination was resolved at creation.
          enum:
            - MANUAL
            - DICT
            - QR_CODE
          examples:
            - DICT
          type: string
        lastPaymentDate:
          description: >-
            Civil date of the series' final payment, when it has one. Null on an
            indefinite series, where reporting one would be a fabrication.
          examples:
            - '2028-07-10'
          format: date
          type:
            - string
            - 'null'
        materializedThrough:
          description: >-
            Civil date up to which occurrences exist -- the edge of the
            materialized window. Occurrences beyond it do not exist yet. Null on
            a series that has never been materialized.
          examples:
            - '2027-10-10'
          format: date
          type:
            - string
            - 'null'
        metadata:
          additionalProperties: {}
          description: >-
            The annotation the caller sent at creation, returned verbatim.
            Absent when none was sent -- this service never invents one.
          examples:
            - contractRef: A-4471
          type: object
        payeeKey:
          $ref: '#/components/schemas/PayeeKeyView'
          description: >-
            The directory key a DICT-initiated series resolved at creation. It
            is kept because the mandatory re-lookup needs the key that was used,
            and a key is not one of the payee's attributes -- it cannot be
            reconstructed from the photograph above.
        purpose:
          description: 'Always IPAY: REG-Art.11-P prohibits scheduling any other purpose.'
          enum:
            - IPAY
          examples:
            - IPAY
          type: string
        recurrence:
          $ref: '#/components/schemas/RecurrenceSpecView'
          description: The rule the occurrences are computed from.
        source:
          $ref: '#/components/schemas/ParticipantView'
          description: The payer as photographed at creation.
        status:
          description: >-
            Situation of the SERIES, not of any one occurrence: a cancelled
            series still has settled occurrences behind it, and each occurrence
            carries its own status.
          enum:
            - ACTIVE
            - COMPLETED
            - CANCELLED
          examples:
            - ACTIVE
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - accountId
        - amount
        - currency
        - status
        - initiationType
        - purpose
        - recurrence
        - source
        - destination
        - materializedThrough
        - lastPaymentDate
        - createdAt
        - updatedAt
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
    ParticipantView:
      additionalProperties: false
      properties:
        accountNumber:
          examples:
            - '123456'
          type: string
        accountType:
          enum:
            - CACC
            - SVGS
            - TRAN
            - SLRY
          examples:
            - CACC
          type: string
        branch:
          examples:
            - '0001'
          type: string
        ispb:
          description: 8-digit BACEN participant identifier.
          examples:
            - '32074986'
          type: string
        name:
          examples:
            - Ana Souza
          type: string
        personType:
          enum:
            - NATURAL_PERSON
            - LEGAL_PERSON
          examples:
            - NATURAL_PERSON
          type: string
        taxId:
          description: CPF or CNPJ, digits only.
          examples:
            - '39053344705'
          type: string
      required:
        - accountType
        - ispb
        - personType
        - taxId
        - name
      type: object
    PayeeKeyView:
      additionalProperties: false
      properties:
        keyType:
          description: Kind of Pix key.
          enum:
            - EMAIL
            - PHONE
            - CPF
            - CNPJ
            - EVP
          examples:
            - EMAIL
          type: string
        keyValue:
          description: The key itself, as it was resolved.
          examples:
            - joao.pereira@example.com
          type: string
      required:
        - keyType
        - keyValue
      type: object
    RecurrenceSpecView:
      additionalProperties: false
      properties:
        endDate:
          description: >-
            Termination by civil date, when that is the criterion. Null
            otherwise.
          examples:
            - '2028-07-10'
          format: date
          type:
            - string
            - 'null'
        firstPaymentDate:
          description: Civil date of the first payment, exactly as the payer chose it.
          examples:
            - '2027-08-10'
          format: date
          type: string
        indefinite:
          description: >-
            True when the series is open-ended. Exactly one of the three
            criteria is set.
          examples:
            - false
          type: boolean
        paymentCount:
          description: >-
            Termination by number of payments, when that is the criterion. Null
            otherwise.
          examples:
            - 12
          format: int64
          type:
            - integer
            - 'null'
        periodicity:
          description: How often the series pays.
          enum:
            - WEEKLY
            - MONTHLY
          examples:
            - MONTHLY
          type: string
        referenceDayOfMonth:
          description: >-
            Day of the month a MONTHLY series pays on, derived from
            firstPaymentDate and PRESERVED across occurrences. Null on a weekly
            series. When a month has no such day -- 29, 30, 31 -- IN BCB
            513/2024 art. 13 moves that occurrence to the FIRST DAY OF THE
            FOLLOWING MONTH and the reference day returns afterwards, so a
            day-31 series pays on 1 March and again on 31 March.
          examples:
            - 10
          format: int64
          type:
            - integer
            - 'null'
      required:
        - periodicity
        - firstPaymentDate
        - paymentCount
        - endDate
        - indefinite
        - referenceDayOfMonth
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.