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

# Returns a list of customers with their points balance, points to expire and point history.

> This endpoint returns detailed customer information including:
- Basic customer data (name, email, phone, document)
- Points balance and cashback balance
- List of points that will expire soon
- Complete point transaction history with branch information

By default, only active (enrolled) customers are returned. Use isEnrolled=false to get inactive customers.

You can filter customers by point event date using pointDateFrom and pointDateTo parameters.
When these filters are used, only customers who have points within the specified date range will be returned.

**Performance Note:** Due to the detailed data returned, pageSize is limited to 500 items per request.



## OpenAPI

````yaml https://api.bonifiq.com.br/swagger/Private%20APIs/swagger.json get /v1/pvt/Reports/ListCustomersReport
openapi: 3.0.0
info:
  title: BonifiQ Private APIs
  description: >-
    # Introduction 

    This is the BonifiQ Private APIs documentation. With these endpoints you can
    interact with BonifiQ systems and enhance your program points.


    # Limitations

    These endpoints are intended to be used in backend communication so they are
    not CORS-compatible and cannot be used by in-browser frontend libraries
    (such as React, Angular, Vue, jQuery, etc)


    If are required to call BonifiQ API from a browser, please refer to our
    [Public APIs](https://api.bonifiq.com.br/apidocs/public)


    # Authentication

    These Private APis use the [Basic
    Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication)
    scheme. You need both an API Token (Username) and API Key (Password) to use
    with it


    You can generate this key pair in BonifiQ admin panel, at the "API Keys"
    menu.


    # How to use this page

    ## Making calls

    You can simulate, test and make calls to API from this Swagger page. To do
    that:

    - Click on the **Authorize** button

    - Inform the Username (API Token) and Passwoird (API Key) and click on
    **Authorize**

    - From the list bellow, choose an API call and click on **Try it out**

    - Inform the required parameters (if any) and click on **Execute**


    ## Verifying requests and responses bodies

    In every API Call there is an explanation of what each field means, theirs
    types and accepted values for all Requests and Responses.


    To view this information, just go to any API Call bellow and in the
    Responses section, click on the Schema.
  version: 1.0.0
servers:
  - url: https://api.bonifiq.com.br
security: []
tags:
  - name: POS
    description: >-
      Flow methods to integrate BonifiQ with a POS system. Check the Flow
      Documentation link on the right
    externalDocs:
      description: Flow Documentation
      url: >-
        https://suporte.bonifiq.com.br/support/solutions/articles/159000319538-integrar-com-pdv
  - name: Checkout
    description: Operations related to checkout cashback redeem, refresh and removal
  - name: Customization
    description: Retrieve customizations for the loyalty program
  - name: Rewards
    description: Interact with rewards already redeemed
paths:
  /v1/pvt/Reports/ListCustomersReport:
    get:
      tags:
        - Reports
      summary: >-
        Returns a list of customers with their points balance, points to expire
        and point history.
      description: >-
        This endpoint returns detailed customer information including:

        - Basic customer data (name, email, phone, document)

        - Points balance and cashback balance

        - List of points that will expire soon

        - Complete point transaction history with branch information


        By default, only active (enrolled) customers are returned. Use
        isEnrolled=false to get inactive customers.


        You can filter customers by point event date using pointDateFrom and
        pointDateTo parameters.

        When these filters are used, only customers who have points within the
        specified date range will be returned.


        **Performance Note:** Due to the detailed data returned, pageSize is
        limited to 500 items per request.
      operationId: Reports_ListCustomersReport
      parameters:
        - name: from
          in: query
          description: Optional start date for filtering customers by creation date
          schema:
            type: string
            format: date-time
            nullable: true
          x-position: 1
        - name: to
          in: query
          description: Optional end date for filtering customers by creation date
          schema:
            type: string
            format: date-time
            nullable: true
          x-position: 2
        - name: document
          in: query
          description: Optional filter by customer document (CPF/CNPJ)
          schema:
            type: string
            nullable: true
          x-position: 3
        - name: email
          in: query
          description: Optional filter by customer email
          schema:
            type: string
            nullable: true
          x-position: 4
        - name: originalId
          in: query
          description: Optional filter by customer original ID (store ID)
          schema:
            type: string
            nullable: true
          x-position: 5
        - name: isEnrolled
          in: query
          description: 'Filter by enrolled status (default: true - only active customers)'
          schema:
            type: boolean
            default: true
          x-position: 6
        - name: pointDateFrom
          in: query
          description: Optional start date for filtering customers by point event date
          schema:
            type: string
            format: date-time
            nullable: true
          x-position: 7
        - name: pointDateTo
          in: query
          description: Optional end date for filtering customers by point event date
          schema:
            type: string
            format: date-time
            nullable: true
          x-position: 8
        - name: pageNumber
          in: query
          description: 'Page number for pagination (default: 1)'
          schema:
            type: integer
            format: int32
            default: 1
          x-position: 9
        - name: pageSize
          in: query
          description: 'Number of items per page (default: 10, max: 500)'
          schema:
            type: integer
            format: int32
            default: 10
          x-position: 10
      responses:
        '200':
          description: Paginated list of customers with points data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BaseExternalApiListResponseOfReportCustomerResponse
      security:
        - Basic Authentication: []
components:
  schemas:
    BaseExternalApiListResponseOfReportCustomerResponse:
      type: object
      description: Base List response model methods
      additionalProperties: false
      properties:
        Items:
          type: array
          description: Collection with the found entities on the bonifiq DB.
          nullable: true
          xml:
            wrapped: true
          items:
            xml:
              name: ReportCustomerResponse
            oneOf:
              - $ref: '#/components/schemas/ReportCustomerResponse'
        TotalItemCount:
          type: integer
          description: Total of rewards Configurations founds.
          format: int32
        PageSize:
          type: integer
          description: Pagination size
          format: int32
        PageNumber:
          type: integer
          description: Actual Page Number
          format: int32
        HasNextPage:
          type: boolean
          description: true if there is another page to be load.
        HasError:
          type: boolean
          description: If true the request had an error.
        ErrorMessages:
          type: array
          description: List with the error messages
          xml:
            wrapped: true
          items:
            type: string
            xml:
              name: string
    ReportCustomerResponse:
      type: object
      description: >-
        Customer report response with points balance, points to expire and point
        history
      additionalProperties: false
      properties:
        InternalId:
          type: string
          description: ID for this customer on the Bonifiq DB (PublicId)
        OriginalId:
          type: string
          description: This is the Id in the client store
        Name:
          type: string
          description: Customer name
        Email:
          type: string
          description: Customer email
          nullable: true
        Phone:
          type: string
          description: Customer Contact Phone
          nullable: true
        Document:
          type: string
          description: Customer document (CPF/CNPJ)
          nullable: true
        BirthdayDate:
          type: string
          description: Customer Birthdate
          format: date-time
          nullable: true
        SignupDate:
          type: string
          description: Date when the customer made the register on client store
          format: date-time
          nullable: true
        IsEnrolled:
          type: boolean
          description: >-
            If true the customer is participating on the points plan from the
            store
        CreatedDate:
          type: string
          description: Date when customer was created in BonifiQ
          format: date-time
        PointsBalance:
          type: integer
          description: Amount of points for this customer
          format: int32
        CashbackBalance:
          type: number
          description: >-
            When the cashback reward is active it returns the amount (in R$) of
            cashback the customer have.

            Returns 0 when the cashback is inactive
          format: decimal
        CurrentTier:
          description: If the customer is in a Tier returns it. Otherwise returns null
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/CustomerTierResponse'
        PointsToExpire:
          type: array
          description: List of points that will expire soon
          xml:
            wrapped: true
          items:
            xml:
              name: CustomerPointsToExpire
            oneOf:
              - $ref: '#/components/schemas/CustomerPointsToExpire'
        PointHistory:
          type: array
          description: A detailed list of point transactions for the customer
          xml:
            wrapped: true
          items:
            xml:
              name: PointDetailItem
            oneOf:
              - $ref: '#/components/schemas/PointDetailItem'
    CustomerTierResponse:
      type: object
      additionalProperties: false
      properties:
        Name:
          type: string
        Color:
          type: string
        IconUrl:
          type: string
    CustomerPointsToExpire:
      type: object
      description: Customer Points to expire Model
      additionalProperties: false
      properties:
        Points:
          type: integer
          description: Amount of Points
          format: int32
        When:
          type: string
          description: Expiration Date of the points
          format: date-time
    PointDetailItem:
      type: object
      description: Represents a single point transaction detail.
      additionalProperties: false
      properties:
        Id:
          type: integer
          description: The unique identifier for the point transaction.
          format: int64
        IsCanceled:
          type: boolean
          description: Indicates whether this history item was canceled.
        DateReceived:
          type: string
          description: The date when the points were received or redeemed.
          format: date-time
        ExpirationDate:
          type: string
          description: The calculated expiration date for these points.
          format: date-time
          nullable: true
        Amount:
          type: integer
          description: >-
            The amount of points in this transaction (positive for received,
            negative for redeemed).
          format: int32
        CashbackAmount:
          type: number
          description: >-
            The amount of cashback associated with this transaction, if
            applicable.
          format: decimal
          nullable: true
        BranchId:
          type: string
          description: >-
            The ID of the branch associated with the point transaction (if
            applicable, e.g., from an order).
          nullable: true
        BranchName:
          type: string
          description: >-
            The name of the branch associated with the point transaction (if
            applicable, e.g., from an order).
          nullable: true
        OrderOrigin:
          description: >-
            The order origin associated with the point transaction when the
            point comes from a purchase order.
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/OrderOrigin'
        OrderOriginDescription:
          type: string
          description: >-
            Human-readable description for the order origin when the point comes
            from a purchase order.
          nullable: true
        PointType:
          type: integer
          description: >-
            The type of the point transaction (e.g., Purchase, Signup, Birthday,
            etc.).
          format: int32
          nullable: true
        PointTypeDescription:
          type: string
          description: Human-readable description of the point type.
          nullable: true
    OrderOrigin:
      type: integer
      description: |-
        0 = Integration
        1 = API
        2 = Import
        3 = PDV
        4 = OfflineIntegration
      x-enumNames:
        - Integration
        - API
        - Import
        - PDV
        - OfflineIntegration
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
  securitySchemes:
    Basic Authentication:
      type: http
      description: Use API Basic Auth Keys
      name: Basic Authentication
      in: header
      scheme: basic

````