<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.settlementtransactions.html">settlementtransactions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(merchantId, settlementId, maxResults=None, pageToken=None, transactionIds=None)</a></code></p>
<p class="firstline">Retrieves a list of transactions for the settlement.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(merchantId, settlementId, maxResults=None, pageToken=None, transactionIds=None)</code>
  <pre>Retrieves a list of transactions for the settlement.

Args:
  merchantId: string, The Merchant Center account to list transactions for. (required)
  settlementId: string, The Google-provided ID of the settlement. (required)
  maxResults: integer, The maximum number of transactions to return in the response, used for paging. The default value is 200 transactions per page, and the maximum allowed value is 5000 transactions per page.
  pageToken: string, The token returned by the previous request.
  transactionIds: string, The list of transactions to return. If not set, all transactions will be returned. (repeated)

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;content#settlementtransactionsListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;content#settlementtransactionsListResponse&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for the retrieval of the next page of returns.
    &quot;resources&quot;: [
      { # Settlement transactions give a detailed breakdown of the  settlement report. (== resource_for v2.1.settlementtransactions ==)
        &quot;amount&quot;: { # The amount for the transaction.
          &quot;commission&quot;: {
            &quot;category&quot;: &quot;A String&quot;, # The category of the commission.
                #
                # Acceptable values are:
                # - &quot;`animalsAndPetSupplies`&quot;
                # - &quot;`dogCatFoodAndCatLitter`&quot;
                # - &quot;`apparelAndAccessories`&quot;
                # - &quot;`shoesHandbagsAndSunglasses`&quot;
                # - &quot;`costumesAndAccessories`&quot;
                # - &quot;`jewelry`&quot;
                # - &quot;`watches`&quot;
                # - &quot;`hobbiesArtsAndCrafts`&quot;
                # - &quot;`homeAndGarden`&quot;
                # - &quot;`entertainmentCollectibles`&quot;
                # - &quot;`collectibleCoins`&quot;
                # - &quot;`sportsCollectibles`&quot;
                # - &quot;`sportingGoods`&quot;
                # - &quot;`toysAndGames`&quot;
                # - &quot;`musicalInstruments`&quot;
                # - &quot;`giftCards`&quot;
                # - &quot;`babyAndToddler`&quot;
                # - &quot;`babyFoodWipesAndDiapers`&quot;
                # - &quot;`businessAndIndustrial`&quot;
                # - &quot;`camerasOpticsAndPhotography`&quot;
                # - &quot;`consumerElectronics`&quot;
                # - &quot;`electronicsAccessories`&quot;
                # - &quot;`personalComputers`&quot;
                # - &quot;`videoGameConsoles`&quot;
                # - &quot;`foodAndGrocery`&quot;
                # - &quot;`beverages`&quot;
                # - &quot;`tobaccoProducts`&quot;
                # - &quot;`furniture`&quot;
                # - &quot;`hardware`&quot;
                # - &quot;`buildingMaterials`&quot;
                # - &quot;`tools`&quot;
                # - &quot;`healthAndPersonalCare`&quot;
                # - &quot;`beauty`&quot;
                # - &quot;`householdSupplies`&quot;
                # - &quot;`kitchenAndDining`&quot;
                # - &quot;`majorAppliances`&quot;
                # - &quot;`luggageAndBags`&quot;
                # - &quot;`media`&quot;
                # - &quot;`officeSupplies`&quot;
                # - &quot;`softwareAndVideoGames`&quot;
                # - &quot;`vehiclePartsAndAccessories`&quot;
                # - &quot;`vehicleTiresAndWheels`&quot;
                # - &quot;`vehicles`&quot;
                # - &quot;`everythingElse`&quot;
            &quot;rate&quot;: &quot;A String&quot;, # Rate of the commission in percentage.
          },
          &quot;description&quot;: &quot;A String&quot;, # The description of the event.
              #
              # Acceptable values are:
              # - &quot;`taxWithhold`&quot;
              # - &quot;`principal`&quot;
              # - &quot;`principalAdjustment`&quot;
              # - &quot;`shippingFee`&quot;
              # - &quot;`merchantRemittedSalesTax`&quot;
              # - &quot;`googleRemittedSalesTax`&quot;
              # - &quot;`merchantCoupon`&quot;
              # - &quot;`merchantCouponTax`&quot;
              # - &quot;`merchantRemittedDisposalTax`&quot;
              # - &quot;`googleRemittedDisposalTax`&quot;
              # - &quot;`merchantRemittedRedemptionFee`&quot;
              # - &quot;`googleRemittedRedemptionFee`&quot;
              # - &quot;`eeeEcoFee`&quot;
              # - &quot;`furnitureEcoFee`&quot;
              # - &quot;`copyPrivateFee`&quot;
              # - &quot;`eeeEcoFeeCommission`&quot;
              # - &quot;`furnitureEcoFeeCommission`&quot;
              # - &quot;`copyPrivateFeeCommission`&quot;
              # - &quot;`principalRefund`&quot;
              # - &quot;`principalRefundTax`&quot;
              # - &quot;`itemCommission`&quot;
              # - &quot;`adjustmentCommission`&quot;
              # - &quot;`shippingFeeCommission`&quot;
              # - &quot;`commissionRefund`&quot;
              # - &quot;`damaged`&quot;
              # - &quot;`damagedOrDefectiveItem`&quot;
              # - &quot;`expiredItem`&quot;
              # - &quot;`faultyItem`&quot;
              # - &quot;`incorrectItemReceived`&quot;
              # - &quot;`itemMissing`&quot;
              # - &quot;`qualityNotExpected`&quot;
              # - &quot;`receivedTooLate`&quot;
              # - &quot;`storePackageMissing`&quot;
              # - &quot;`transitPackageMissing`&quot;
              # - &quot;`unsuccessfulDeliveryUndeliverable`&quot;
              # - &quot;`wrongChargeInStore`&quot;
              # - &quot;`wrongItem`&quot;
              # - &quot;`returns`&quot;
              # - &quot;`undeliverable`&quot;
              # - &quot;`refundFromMerchant`&quot;
              # - &quot;`returnLabelShippingFee`&quot;
          &quot;transactionAmount&quot;: { # The amount that contributes to the line item price.
            &quot;currency&quot;: &quot;A String&quot;, # The currency of the price.
            &quot;value&quot;: &quot;A String&quot;, # The price represented as a number.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the amount.
              #
              # Acceptable values are:
              # - &quot;`itemPrice`&quot;
              # - &quot;`orderPrice`&quot;
              # - &quot;`refund`&quot;
              # - &quot;`earlyRefund`&quot;
              # - &quot;`courtesyRefund`&quot;
              # - &quot;`returnRefund`&quot;
              # - &quot;`returnLabelShippingFeeAmount`&quot;
        },
        &quot;identifiers&quot;: { # Identifiers of the transaction.
          &quot;adjustmentId&quot;: &quot;A String&quot;, # The identifier of the adjustments, if it is available.
          &quot;merchantOrderId&quot;: &quot;A String&quot;, # The merchant provided order ID.
          &quot;orderItemId&quot;: &quot;A String&quot;, # The identifier of the item.
          &quot;settlementEntryId&quot;: &quot;A String&quot;, # The unique ID of the settlement transaction entry.
          &quot;shipmentIds&quot;: [ # The shipment ids for the item.
            &quot;A String&quot;,
          ],
          &quot;transactionId&quot;: &quot;A String&quot;, # The Google transaction ID.
        },
        &quot;kind&quot;: &quot;content#settlementTransaction&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;`content#settlementTransaction`&quot;
        &quot;transaction&quot;: { # Details of the transaction.
          &quot;postDate&quot;: &quot;A String&quot;, # The time on which the event occurred in ISO 8601 format.
          &quot;type&quot;: &quot;A String&quot;, # The type of the transaction that occurred.
              #
              # Acceptable values are:
              # - &quot;`order`&quot;
              # - &quot;`reversal`&quot;
              # - &quot;`orderRefund`&quot;
              # - &quot;`reversalRefund`&quot;
              # - &quot;`issueRelatedRefundAndReplacement`&quot;
              # - &quot;`returnLabelShippingFeeTransaction`&quot;
              # - &quot;`reversalIssueRelatedRefundAndReplacement`&quot;
              # - &quot;`reversalReturnLabelShippingFeeTransaction`&quot;
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>