<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="#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="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>