> ## 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.

# Read one recurring series

> Returns the series -- its rule, both parties as photographed at creation, and the window edge -- together with the occurrences currently materialized for it, oldest first. The list is empty and never null, and it is a WINDOW rather than the whole calendar: materializedThrough says how far it reaches, and a long-running series is enumerated in full through GET /v1/scheduled-payments with recurrence_id. A series belonging to another organization answers 404 rather than 403: the read is scoped by organization, so the row is never seen, and answering 'forbidden' would confirm the identifier exists.



## OpenAPI

````yaml /en/openapi/v3-current/pix-lerian-spi.yaml get /scheduled-payment-recurrences/{recurrence_id}
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/{recurrence_id}:
    get:
      tags:
        - Scheduled Payment Recurrences
      summary: Read one recurring series
      description: >-
        Returns the series -- its rule, both parties as photographed at
        creation, and the window edge -- together with the occurrences currently
        materialized for it, oldest first. The list is empty and never null, and
        it is a WINDOW rather than the whole calendar: materializedThrough says
        how far it reaches, and a long-running series is enumerated in full
        through GET /v1/scheduled-payments with recurrence_id. A series
        belonging to another organization answers 404 rather than 403: the read
        is scoped by organization, so the row is never seen, and answering
        'forbidden' would confirm the identifier exists.
      operationId: getScheduledPaymentRecurrence
      parameters:
        - description: Series identifier.
          in: path
          name: recurrence_id
          required: true
          schema:
            description: Series identifier.
            examples:
              - 01a0d8fb-1a8b-7a10-b3c4-d5e6f7a8b9c0
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                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'
                occurrences:
                  - id: 01a0d8fb-1a8c-7b21-8c3d-4e5f6a7b8c91
                    accountId: 0195948b-bf02-7e4f-9a1b-2c3d4e5f6a7b
                    scheduledDate: '2027-08-10'
                    amount: '150.00'
                    currency: BRL
                    initiationType: DICT
                    purpose: IPAY
                    description: Aluguel
                    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
                    status: PENDING
                    firstWindowOpensAt: '2027-08-10T03:00:00Z'
                    cancellationCutoff: '2027-08-10T02:59:59.999999Z'
                    createdAt: '2026-09-25T14:32:10.123456Z'
                    updatedAt: '2026-09-25T14:32:10.123456Z'
                    attempts: []
                  - id: 01a0d8fb-1a8d-7b22-8c3d-4e5f6a7b8c92
                    accountId: 0195948b-bf02-7e4f-9a1b-2c3d4e5f6a7b
                    scheduledDate: '2027-09-10'
                    amount: '150.00'
                    currency: BRL
                    initiationType: DICT
                    purpose: IPAY
                    description: Aluguel
                    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
                    status: PENDING
                    firstWindowOpensAt: '2027-09-10T03:00:00Z'
                    cancellationCutoff: '2027-09-10T02:59:59.999999Z'
                    createdAt: '2026-09-25T14:32:10.123456Z'
                    updatedAt: '2026-09-25T14:32:10.123456Z'
                    attempts: []
                  - id: 01a0d8fb-1a8e-7b23-8c3d-4e5f6a7b8c93
                    accountId: 0195948b-bf02-7e4f-9a1b-2c3d4e5f6a7b
                    scheduledDate: '2027-10-10'
                    amount: '150.00'
                    currency: BRL
                    initiationType: DICT
                    purpose: IPAY
                    description: Aluguel
                    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
                    status: PENDING
                    firstWindowOpensAt: '2027-10-10T03:00:00Z'
                    cancellationCutoff: '2027-10-10T02:59:59.999999Z'
                    createdAt: '2026-09-25T14:32:10.123456Z'
                    updatedAt: '2026-09-25T14:32:10.123456Z'
                    attempts: []
              schema:
                $ref: '#/components/schemas/RecurrenceDetailView'
          description: OK
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            recurrence_id is not a UUID (PIX-0015). The response names the
            parameter; the series is never looked up.
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            No series with that identifier exists for this organization
            (PIX-0760). A series belonging to another organization answers this
            too: the read is scoped by organization, and distinguishing the two
            cases would only help someone probing the identifier space. An
            identifier that is not a UUID is a DIFFERENT answer -- the binding
            contract refuses it with 400 before the query runs, and the response
            names the field.
        '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:
    RecurrenceDetailView:
      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
        occurrences:
          description: >-
            The currently materialized occurrences, oldest first -- NOT
            necessarily the whole series. materializedThrough states how far the
            window reaches, and a long-running series is enumerated in full
            through GET /v1/scheduled-payments?recurrence_id=. Empty and never
            null.
          items:
            $ref: '#/components/schemas/ScheduledPaymentView'
          type: array
        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:
        - occurrences
        - id
        - accountId
        - amount
        - currency
        - status
        - initiationType
        - purpose
        - recurrence
        - source
        - destination
        - materializedThrough
        - lastPaymentDate
        - createdAt
        - updatedAt
      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
    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
    ScheduledPaymentView:
      additionalProperties: false
      properties:
        accountId:
          description: Payer account.
          examples:
            - 019606a1-3b4c-7d8e-9f01-234567890abc
          type: string
        amount:
          description: Amount to settle, in BRL.
          examples:
            - '150.00'
          type: string
        attempts:
          description: >-
            Every attempt of the scheduled day, oldest first. Empty before that
            date, and never null.
          items:
            $ref: '#/components/schemas/ScheduleAttemptView'
          type:
            - array
            - 'null'
        cancellationCutoff:
          description: >-
            The first instant a cancellation is REFUSED. Cancellation is
            accepted right up to it and refused AT it, and it is strictly before
            the first window so the two can never overlap.
          format: date-time
          type: string
        cancelledReason:
          description: >-
            Present exactly when status is CANCELLED. A cancellation the payer
            asked for and one the domain performed are deliberately
            distinguishable.
          enum:
            - USER_REQUEST
            - OWNERSHIP_MISMATCH
            - KEY_NOT_FOUND
            - RECURRENCE_CANCELLED
          type: string
        createdAt:
          format: date-time
          type: string
        currency:
          description: Always BRL.
          examples:
            - BRL
          type: string
        description:
          description: >-
            The payer's memo, returned exactly as it was stored. Markup is not
            interpreted here and was not escaped on the way in; escaping belongs
            to whoever renders it.
          examples:
            - Aluguel de setembro
          type: string
        destination:
          $ref: '#/components/schemas/ParticipantView'
          description: >-
            The payee as photographed at creation. On a DICT schedule it is
            compared on the scheduled date against a fresh directory answer
            (REG-Art.9§6), which is why it is stored rather than re-resolved; a
            MANUAL or QR_CODE schedule is sent to it as photographed, with no
            second lookup.
        firstWindowOpensAt:
          description: >-
            When the first settlement window of the scheduled date opens (IN 513
            art. 12 caput). Photographed at creation.
          format: date-time
          type: string
        id:
          description: Schedule identifier.
          examples:
            - 019606a1-3b4c-7d8e-9f01-234567890abc
          type: string
        initiationType:
          description: How the destination was resolved.
          enum:
            - MANUAL
            - DICT
            - QR_CODE
          examples:
            - DICT
          type: string
        purpose:
          description: 'Always IPAY: REG-Art.11-P prohibits scheduling any other purpose.'
          enum:
            - IPAY
          examples:
            - IPAY
          type: string
        scheduledDate:
          description: Civil settlement date in AAAA-MM-DD, in America/Sao_Paulo.
          examples:
            - '2026-09-10'
          format: date
          type: string
        source:
          $ref: '#/components/schemas/ParticipantView'
          description: The payer as photographed at creation.
        status:
          description: >-
            Lifecycle status. DISPATCHED_OUTCOME_UNKNOWN is NOT terminal: the
            order is awaiting reconciliation and will resolve to SETTLED or
            FAILED. It does NOT assert that the order reached the rail -- it
            also covers an order that provably did not, whose reserved funds are
            still being released.
          enum:
            - PENDING
            - EXECUTING
            - DISPATCHED_OUTCOME_UNKNOWN
            - AWAITING_RETRY
            - SETTLED
            - CANCELLED
            - FAILED
          examples:
            - PENDING
          type: string
        transferId:
          description: The transfer that settled this schedule, once it has.
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - accountId
        - scheduledDate
        - amount
        - currency
        - initiationType
        - purpose
        - source
        - destination
        - status
        - firstWindowOpensAt
        - cancellationCutoff
        - createdAt
        - updatedAt
        - attempts
      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
    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
    ScheduleAttemptView:
      additionalProperties: false
      properties:
        attemptNumber:
          examples:
            - 1
          format: int64
          type: integer
        endToEndId:
          description: >-
            The identifier the attempt dispatched under. Reconciliation of an
            unknown outcome happens by this value, and it is never minted twice.
          type: string
        finishedAt:
          description: Present exactly when outcome is.
          format: date-time
          type: string
        id:
          type: string
        isLastAttempt:
          description: >-
            Whether the day's window schedule allowed a further attempt after
            this one.
          type: boolean
        outcome:
          description: >-
            How the attempt ended. The two OPERATIONAL_FAILURE members are
            distinct because only the pre-dispatch one is safe to retry.
          enum:
            - SETTLED
            - INSUFFICIENT_FUNDS
            - INSUFFICIENT_LIMIT
            - OWNERSHIP_MISMATCH
            - KEY_NOT_FOUND
            - OPERATIONAL_FAILURE_PRE_DISPATCH
            - OPERATIONAL_FAILURE_POST_DISPATCH
          type: string
        providerChannel:
          description: >-
            The CSM channel the attempt went out on. UNKNOWN is a real answer
            from a rail that cannot report one.
          enum:
            - PRIMARY
            - SECONDARY
            - UNKNOWN
          type: string
        startedAt:
          format: date-time
          type: string
      required:
        - id
        - attemptNumber
        - isLastAttempt
        - startedAt
      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.