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

# List Fills

> Get a list of fills filtered by optional query parameters (`product_id`, `order_id`, etc).



## OpenAPI

````yaml GET /api/v3/brokerage/orders/historical/fills
openapi: 3.0.0
info:
  title: Coinbase Advanced Trade API
  version: '0.1'
servers:
  - url: https://api.coinbase.com
security:
  - apiKeyAuth: []
paths:
  /api/v3/brokerage/orders/historical/fills:
    get:
      tags:
        - Orders
      summary: List Fills
      description: >-
        Get a list of fills filtered by optional query parameters (`product_id`,
        `order_id`, etc).
      operationId: RetailBrokerageApi_GetFills
      parameters:
        - name: order_ids
          description: The ID(s) of order(s).
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: trade_ids
          description: The ID(s) of the trades of fills.
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: product_ids
          description: The ID(s) of the product(s) to filter fills by.
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: start_sequence_timestamp
          description: >-
            Only fills with a trade time after the specified start date are
            returned.
          in: query
          required: false
          schema:
            type: string
            format: RFC3339 Timestamp
        - name: end_sequence_timestamp
          description: >-
            Only fills with a trade time before the specified end date are
            returned.
          in: query
          required: false
          schema:
            type: string
            format: RFC3339 Timestamp
        - name: retail_portfolio_id
          description: >-
            **(Deprecated)** Only fills matching this retail portfolio id are
            returned. Only applicable for legacy keys. CDP keys will default to
            the key's permissioned portfolio.
          in: query
          required: false
          schema:
            type: string
        - name: limit
          description: The number of fills to be returned (default is 100).
          in: query
          required: false
          schema:
            type: integer
            format: int64
        - name: cursor
          description: >-
            For paginated responses, returns all responses that come after this
            value.
          in: query
          required: false
          schema:
            type: string
        - name: sort_by
          description: >-
            Sort results by a field, results use unstable pagination. Default is
            sort by creation time
          in: query
          required: false
          schema:
            type: string
            enum:
              - UNKNOWN_SORT_BY
              - PRICE
              - TRADE_TIME
            default: UNKNOWN_SORT_BY
        - name: asset_filters
          description: >-
            Only returns the fills where the quote, base or underlying asset
            matches the provided asset filter(s) (e.g. 'BTC').
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: order_types
          description: >-
            Only returns fills for orders matching the specified order types
            (e.g. 'MARKET', 'LIMIT').

             - MARKET: A [market order](https://en.wikipedia.org/wiki/Order_(exchange)#Market_order)
             - LIMIT: A [limit order](https://en.wikipedia.org/wiki/Order_(exchange)#Limit_order)
             - STOP: A stop order is an order that becomes a market order when triggered
             - STOP_LIMIT: A stop order is a limit order that doesn't go on the book until it hits the stop price
             - BRACKET: A bracket order is a way to mitigate potential losses in volatile markets, consisting of a limit price leg and a stop trigger price.
             - TWAP: TWAP order is a way to split large buy/sell orders to smaller chunks to reduce market impact
             - ROLL_OPEN: ROLL_OPEN order is the open step order of a contract roll
             - ROLL_CLOSE: ROLL_CLOSE is the close step order in a contract roll
             - LIQUIDATION: LIQUIDATION is a special order type that is used to liquidate a position
             - SCALED: SCALED order is an order that is split into multiple child orders at incrementally increasing or decreasing prices
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - UNKNOWN_ORDER_TYPE
                - MARKET
                - LIMIT
                - STOP
                - STOP_LIMIT
                - BRACKET
                - TWAP
                - ROLL_OPEN
                - ROLL_CLOSE
                - LIQUIDATION
                - SCALED
        - name: order_side
          description: >-
            Only returns fills for orders matching the specified side ('BUY' or
            'SELL'). By default, returns all sides.
          in: query
          required: false
          schema:
            type: string
            enum:
              - BUY
              - SELL
            default: ''
        - name: product_types
          description: >-
            Only returns fills for orders matching the specified product types
            (e.g. 'SPOT', 'FUTURE'). By default, returns all product types.
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - UNKNOWN_PRODUCT_TYPE
                - SPOT
                - FUTURE
        - name: proof_token
          description: >-
            Optional proof token for 2FA validation when accessing transaction
            history (EU SCA compliance).
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.GetFillsResponse
            text/event-stream:
              schema:
                $ref: >-
                  #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.GetFillsResponse
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/grpc.gateway.runtime.Error'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/grpc.gateway.runtime.Error'
components:
  schemas:
    coinbase.public_api.authed.retail_brokerage_api.GetFillsResponse:
      type: object
      properties:
        fills:
          type: array
          items:
            $ref: >-
              #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.Fill
          description: All fills matching the filters.
        cursor:
          type: string
          example: '789100'
          description: >-
            For paginated responses, returns all responses that come after this
            value.
        proof_token_required:
          type: boolean
          example: true
          description: >-
            Indicates that a valid proof token is required to access this data
            (EU SCA compliance).
    grpc.gateway.runtime.Error:
      type: object
      properties:
        error:
          type: string
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/google.protobuf.Any'
    coinbase.public_api.authed.retail_brokerage_api.Fill:
      type: object
      properties:
        entry_id:
          type: string
          example: 22222-2222222-22222222
          description: Unique identifier for the fill.
        trade_id:
          type: string
          example: 1111-11111-111111
          description: >-
            ID of the fill -- unique for all `FILL` trade_types but not unique
            for adjusted fills.
        order_id:
          type: string
          example: 0000-000000-000000
          description: The ID of the order.
        trade_time:
          type: string
          format: RFC3339 Timestamp
          example: '2021-05-31T09:59:59.000Z'
          description: Time at which this fill was completed.
        trade_type:
          type: string
          example: FILL
          description: >-
            String denoting what type of fill this is. Regular fills have the
            value `FILL`. Adjusted fills have possible values `REVERSAL`,
            `CORRECTION`, `SYNTHETIC`.
        price:
          type: string
          example: '10000.00'
          description: Price the fill was posted at.
        size:
          type: string
          example: '0.001'
          description: Amount of order that was transacted at this fill.
        commission:
          type: string
          example: '1.25'
          description: Fee amount for fill.
        product_id:
          type: string
          example: BTC-USD
          description: The trading pair (e.g. 'BTC-USD').
        sequence_timestamp:
          type: string
          format: RFC3339 Timestamp
          example: '2021-05-31T09:58:59.000Z'
          description: Time at which this fill was posted.
        liquidity_indicator:
          description: Whether this fill gives or takes liquidity.
          allOf:
            - $ref: >-
                #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.LiquidityIndicator
        size_in_quote:
          type: boolean
          example: false
          description: Whether the order was placed with quote currency.
        user_id:
          type: string
          example: 3333-333333-3333333
          description: User that placed the order the fill belongs to.
        side:
          description: Side of order that this fill belongs to.
          allOf:
            - $ref: >-
                #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.OrderSide
        retail_portfolio_id:
          type: string
          example: 4444-444444-4444444
          description: Portfolio that the order fill belongs to.
        fillSource:
          description: Field denoting what type of fill source was used for this fill.
          title: Represents a fill source type used
          allOf:
            - $ref: >-
                #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.FillSource
        commission_detail_total:
          description: Breakdown of commission charges for the fill
          allOf:
            - $ref: >-
                #/components/schemas/coinbase.public_api.authed.retail_brokerage_api.CommissionDetailTotal
      title: Represents a fill for an order in the system
    google.protobuf.Any:
      type: object
      properties:
        type_url:
          type: string
          description: >-
            A URL/resource name that uniquely identifies the type of the
            serialized

            protocol buffer message. This string must contain at least

            one "/" character. The last segment of the URL's path must represent

            the fully qualified name of the type (as in

            `path/google.protobuf.Duration`). The name should be in a canonical
            form

            (e.g., leading "." is not accepted).


            In practice, teams usually precompile into the binary all types that
            they

            expect it to use in the context of Any. However, for URLs which use
            the

            scheme `http`, `https`, or no scheme, one can optionally set up a
            type

            server that maps type URLs to message definitions as follows:


            * If no scheme is provided, `https` is assumed.

            * An HTTP GET on the URL must yield a [google.protobuf.Type][]
              value in binary format, or produce an error.
            * Applications are allowed to cache lookup results based on the
              URL, or have them precompiled into a binary to avoid any
              lookup. Therefore, binary compatibility needs to be preserved
              on changes to types. (Use versioned type names to manage
              breaking changes.)

            Note: this functionality is not currently available in the official

            protobuf release, and it is not used for type URLs beginning with

            type.googleapis.com. As of May 2023, there are no widely used type
            server

            implementations and no plans to implement one.


            Schemes other than `http`, `https` (or the empty scheme) might be

            used with implementation specific semantics.
        value:
          type: string
          format: byte
          description: >-
            Must be a valid serialized protocol buffer of the above specified
            type.
      description: >-
        `Any` contains an arbitrary serialized protocol buffer message along
        with a

        URL that describes the type of the serialized message.


        Protobuf library provides support to pack/unpack Any values in the form

        of utility functions or additional generated methods of the Any type.


        Example 1: Pack and unpack a message in C++.

            Foo foo = ...;
            Any any;
            any.PackFrom(foo);
            ...
            if (any.UnpackTo(&foo)) {
              ...
            }

        Example 2: Pack and unpack a message in Java.

            Foo foo = ...;
            Any any = Any.pack(foo);
            ...
            if (any.is(Foo.class)) {
              foo = any.unpack(Foo.class);
            }
            // or ...
            if (any.isSameTypeAs(Foo.getDefaultInstance())) {
              foo = any.unpack(Foo.getDefaultInstance());
            }

         Example 3: Pack and unpack a message in Python.

            foo = Foo(...)
            any = Any()
            any.Pack(foo)
            ...
            if any.Is(Foo.DESCRIPTOR):
              any.Unpack(foo)
              ...

         Example 4: Pack and unpack a message in Go

             foo := &pb.Foo{...}
             any, err := anypb.New(foo)
             if err != nil {
               ...
             }
             ...
             foo := &pb.Foo{}
             if err := any.UnmarshalTo(foo); err != nil {
               ...
             }

        The pack methods provided by protobuf library will by default use

        'type.googleapis.com/full.type.name' as the type URL and the unpack

        methods only use the fully qualified type name after the last '/'

        in the type URL, for example "foo.bar.com/x/y.z" will yield type

        name "y.z".


        JSON

        ====

        The JSON representation of an `Any` value uses the regular

        representation of the deserialized, embedded message, with an

        additional field `@type` which contains the type URL. Example:

            package google.profile;
            message Person {
              string first_name = 1;
              string last_name = 2;
            }

            {
              "@type": "type.googleapis.com/google.profile.Person",
              "firstName": <string>,
              "lastName": <string>
            }

        If the embedded message type is well-known and has a custom JSON

        representation, that representation will be embedded adding a field

        `value` which holds the custom JSON in addition to the `@type`

        field. Example (for message [google.protobuf.Duration][]):

            {
              "@type": "type.googleapis.com/google.protobuf.Duration",
              "value": "1.212s"
            }
    coinbase.public_api.authed.retail_brokerage_api.LiquidityIndicator:
      type: string
      enum:
        - UNKNOWN_LIQUIDITY_INDICATOR
        - MAKER
        - TAKER
      default: UNKNOWN_LIQUIDITY_INDICATOR
    coinbase.public_api.authed.retail_brokerage_api.OrderSide:
      type: string
      enum:
        - BUY
        - SELL
      default: ''
    coinbase.public_api.authed.retail_brokerage_api.FillSource:
      type: string
      enum:
        - FILL_SOURCE_UNKNOWN
        - FILL_SOURCE_CLOB
        - FILL_SOURCE_RFQ
      default: FILL_SOURCE_UNKNOWN
      title: Represents the source of a fill in the system
    coinbase.public_api.authed.retail_brokerage_api.CommissionDetailTotal:
      type: object
      properties:
        total_commission:
          type: string
          title: |-
            Total commission amount charged for the order
            This is the sum of all commission charged on the order
        gst_commission:
          type: string
          title: Goods and Services Tax (GST) portion of the commission
        withholding_commission:
          type: string
          title: Tax withholding portion of the commission
        client_commission:
          type: string
          title: Client commission on the trade
        venue_commission:
          type: string
          title: Venue Commission
        regulatory_commission:
          type: string
          title: Regulatory Commission
        clearing_commission:
          type: string
          title: Clearing Commission
      title: >-
        CommissionDetailTotal contains the breakdown of commission charges for
        an order
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        A JWT signed using your CDP API Key Secret, encoded in base64. Refer to
        the [Creating API
        Keys](/coinbase-app/authentication-authorization/api-key-authentication)
        section of our Coinbase App Authentication docs for information on how
        to generate your Bearer Token.

````