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

# List the bills of a credit card

> Returns the faturas of one credit card whose due date is in the `from` - `to` window, latest due date first. Without `from` and `to`, the window is the current calendar month, the month the Faturas page opens on. The window spans at most 366 days. Requires the `pfm:read` scope. A closed bill shows exactly what the bank sent. The amount of a bill with `amount_is_estimate` true is partial until the bank closes the cycle.



## OpenAPI

````yaml /openapi.json get /v1/spaces/{space_id}/cards/{card_id}/bills
openapi: 3.0.3
info:
  description: >-
    Personal REST API for Visor Pro and Premium users. Authenticate with a
    personal API token created in Visor Settings, sent as `Authorization: Bearer
    visor_pat_...`, or with an OAuth access token from the Visor CLI browser
    login.
  title: Visor Personal API
  version: 1.0.0
servers:
  - url: https://api.visorfinance.app
    variables: {}
security:
  - personal_api_token: []
  - visor_cli_oauth:
      - pfm:read
tags: []
paths:
  /v1/spaces/{space_id}/cards/{card_id}/bills:
    get:
      tags:
        - Cards
      summary: List the bills of a credit card
      description: >-
        Returns the faturas of one credit card whose due date is in the `from` -
        `to` window, latest due date first. Without `from` and `to`, the window
        is the current calendar month, the month the Faturas page opens on. The
        window spans at most 366 days. Requires the `pfm:read` scope. A closed
        bill shows exactly what the bank sent. The amount of a bill with
        `amount_is_estimate` true is partial until the bank closes the cycle.
      operationId: VisorWeb.Api.V1.CardController.bills
      parameters:
        - description: A space `id` from `GET /v1/spaces`
          in: path
          name: space_id
          required: true
          schema:
            format: uuid
            type: string
        - description: A card `id` from `GET /v1/spaces/{space_id}/cards`
          in: path
          name: card_id
          required: true
          schema:
            format: uuid
            type: string
        - description: >-
            First due date of the window (`YYYY-MM-DD`). Defaults to the first
            day of the current month.
          in: query
          name: from
          required: false
          schema:
            format: date
            type: string
        - description: >-
            Last due date of the window (`YYYY-MM-DD`). Defaults to the last day
            of the current month.
          in: query
          name: to
          required: false
          schema:
            format: date
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  - amount_is_estimate: false
                    close_date: '2026-10-25'
                    currency_code: BRL
                    due_date: '2026-11-05'
                    id: 5d3a9c1e-2b4f-4e6a-8c7d-1f0e9b2a3c45
                    minimum_payment: '228.05'
                    paid_amount: '0'
                    status: closed
                    total_amount: '1520.35'
              schema:
                $ref: '#/components/schemas/BillListResponse'
          description: Bills of the card
          headers:
            x-ratelimit-limit:
              description: Requests allowed for this token per minute
              schema:
                example: 60
                type: integer
              style: simple
            x-ratelimit-remaining:
              description: Requests left for this token in the current minute
              schema:
                example: 59
                type: integer
              style: simple
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              example:
                errors:
                  - code: BAD_REQUEST
                    details:
                      parameter: include_hidden
                    message: The request is malformed.
                    request_id: F8x2kQ9vXc1AAAAB
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: A query parameter has an invalid value
          headers:
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '401':
          content:
            application/json:
              example:
                errors:
                  - code: INVALID_TOKEN
                    details: {}
                    message: The personal API token is not valid.
                    request_id: F8x2kQ9vXc1AAAAB
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Missing, invalid, expired, or revoked token
          headers:
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '403':
          content:
            application/json:
              example:
                errors:
                  - code: INSUFFICIENT_SCOPE
                    details:
                      required_scope: pfm:read
                    message: The personal API token does not grant this operation.
                    request_id: F8x2kQ9vXc1AAAAB
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Pro or Premium plan required, or insufficient scope
          headers:
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '404':
          content:
            application/json:
              example:
                errors:
                  - code: NOT_FOUND
                    details: {}
                    message: The resource does not exist.
                    request_id: F8x2kQ9vXc1AAAAB
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The space or the card does not exist, or the token's user cannot
            access it
          headers:
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '406':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The client does not accept JSON
          headers:
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
        '429':
          content:
            application/json:
              example:
                errors:
                  - code: RATE_LIMITED
                    details:
                      retry_after_seconds: 42
                    message: >-
                      Too many requests. Retry after the number of seconds in
                      Retry-After.
                    request_id: F8x2kQ9vXc1AAAAB
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Rate limit exceeded
          headers:
            retry-after:
              description: Seconds until the current window ends
              schema:
                example: 42
                type: integer
              style: simple
            x-ratelimit-limit:
              description: Requests allowed for this token per minute
              schema:
                example: 60
                type: integer
              style: simple
            x-ratelimit-remaining:
              description: Requests left for this token in the current minute
              schema:
                example: 59
                type: integer
              style: simple
            x-request-id:
              description: Request identifier, also returned as `request_id` in errors
              schema:
                type: string
              style: simple
      callbacks: {}
components:
  schemas:
    BillListResponse:
      additionalProperties: false
      properties:
        data:
          items:
            $ref: '#/components/schemas/Bill'
          type: array
      required:
        - data
      title: BillListResponse
      type: object
    ErrorResponse:
      additionalProperties: false
      properties:
        errors:
          items:
            $ref: '#/components/schemas/Error'
          minItems: 1
          type: array
      required:
        - errors
      title: ErrorResponse
      type: object
    Bill:
      additionalProperties: false
      properties:
        amount_is_estimate:
          description: >-
            True when Visor rebuilt `total_amount` from synced transactions
            instead of reading the bank bill. An open cycle is partial until the
            bank closes it.
          type: boolean
        close_date:
          example: '2026-10-25'
          format: date
          nullable: true
          type: string
        currency_code:
          description: ISO 4217 code of every amount
          example: BRL
          type: string
        due_date:
          example: '2026-11-05'
          format: date
          nullable: true
          type: string
        id:
          description: >-
            The bill `id`; null for a bill Visor projects before the bank sends
            it
          format: uuid
          nullable: true
          type: string
        minimum_payment:
          description: >-
            The minimum payment the bank reports; null when the bank does not
            report it
          format: decimal
          nullable: true
          type: string
        paid_amount:
          description: >-
            The payments Visor matched to the bill; null while `status` is
            `awaiting_bank_data`
          example: '0'
          format: decimal
          nullable: true
          type: string
        status:
          description: >-
            `paid` when the bank or the user settled the bill; `closed` for a
            closed cycle; `open` and `due_soon` for the bank bill of the cycle
            still to pay; `current` for the cycle Visor rebuilds before the bank
            sends the bill; `awaiting_bank_data` when the bank has not sent the
            cycle yet
          enum:
            - open
            - due_soon
            - current
            - closed
            - paid
            - awaiting_bank_data
          type: string
        total_amount:
          description: >-
            The bill total as a decimal string; null while `status` is
            `awaiting_bank_data`
          example: '1520.35'
          format: decimal
          nullable: true
          type: string
      required:
        - id
        - status
        - close_date
        - due_date
        - total_amount
        - paid_amount
        - minimum_payment
        - amount_is_estimate
        - currency_code
      title: Bill
      type: object
    Error:
      additionalProperties: false
      properties:
        code:
          description: Stable machine-readable code
          example: INVALID_TOKEN
          type: string
        details:
          additionalProperties: true
          description: Code-specific context
          type: object
        message:
          description: English text for developers
          type: string
        request_id:
          description: The x-request-id response header of the request
          nullable: true
          type: string
      required:
        - code
        - message
        - details
        - request_id
      title: Error
      type: object
  securitySchemes:
    personal_api_token:
      bearerFormat: visor_pat_<public_id>_<secret>
      description: Personal API token created in Visor Settings
      scheme: bearer
      type: http
    visor_cli_oauth:
      description: >-
        OAuth 2.0 access token of the Visor CLI browser login (authorization
        code with PKCE). Only the first-party Visor CLI client can use it on
        this API.
      flows:
        authorizationCode:
          authorizationUrl: https://dashboard.visorfinance.app/oauth/authorize
          refreshUrl: https://dashboard.visorfinance.app/oauth/token
          scopes:
            pfm:read: Read financial data
            pfm:transactions:write: Create, edit, and delete transactions
            pix:payments:write: Start Pix payments that you confirm with biometrics at your bank
          tokenUrl: https://dashboard.visorfinance.app/oauth/token
      type: oauth2

````

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