<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.html">Content API for Shopping</a> . <a href="content_v2.orderinvoices.html">orderinvoices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#createchargeinvoice">createchargeinvoice(merchantId, orderId, body)</a></code></p>
<p class="firstline">Creates a charge invoice for a shipment group, and triggers a charge capture for orderinvoice enabled orders.</p>
<p class="toc_element">
  <code><a href="#createrefundinvoice">createrefundinvoice(merchantId, orderId, body)</a></code></p>
<p class="firstline">Creates a refund invoice for one or more shipment groups, and triggers a refund for orderinvoice enabled orders. This can only be used for line items that have previously been charged using createChargeInvoice. All amounts (except for the summary) are incremental with respect to the previous invoice.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="createchargeinvoice">createchargeinvoice(merchantId, orderId, body)</code>
  <pre>Creates a charge invoice for a shipment group, and triggers a charge capture for orderinvoice enabled orders.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "operationId": "A String", # [required] The ID of the operation, unique across all operations for a given order.
    "invoiceSummary": { # [required] Invoice summary.
      "productTotal": { # [required] Total price for the product.
        "tax": { # [required] Tax value.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "pretax": { # [required] Value before taxes.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
      },
      "merchantBalance": { # Deprecated.
        "tax": { # [required] Tax value.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "pretax": { # [required] Value before taxes.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
      },
      "googleBalance": { # Deprecated.
        "tax": { # [required] Tax value.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "pretax": { # [required] Value before taxes.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
      },
      "promotionSummaries": [ # Deprecated.
        {
          "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "promotionId": "A String", # [required] ID of the promotion.
        },
      ],
      "customerBalance": { # Deprecated.
        "tax": { # [required] Tax value.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
        "pretax": { # [required] Value before taxes.
          "currency": "A String", # The currency of the price.
          "value": "A String", # The price represented as a number.
        },
      },
      "additionalChargeSummaries": [ # Summary of the total amounts of the additional charges.
        {
          "totalAmount": { # [required] Total additional charge for this type.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "type": "A String", # [required] Type of the additional charge.
        },
      ],
    },
    "invoiceId": "A String", # [required] The ID of the invoice.
    "shipmentGroupId": "A String", # [required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.
    "lineItemInvoices": [ # [required] Invoice details per line item.
      {
        "unitInvoice": { # [required] Invoice details for a single unit.
          "promotions": [ # Deprecated.
            {
              "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
                "tax": { # [required] Tax value.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "pretax": { # [required] Value before taxes.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
              },
              "promotionId": "A String", # [required] ID of the promotion.
            },
          ],
          "unitPricePretax": { # [required] Price of the unit, before applying taxes.
            "currency": "A String", # The currency of the price.
            "value": "A String", # The price represented as a number.
          },
          "unitPriceTaxes": [ # Tax amounts to apply to the unit price.
            {
              "taxType": "A String", # [required] Type of the tax.
              "taxAmount": { # [required] Tax amount for the tax type.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "taxName": "A String", # Optional name of the tax type. This should only be provided if taxType is otherFeeTax.
            },
          ],
          "additionalCharges": [ # Additional charges for a unit, e.g. shipping costs.
            {
              "additionalChargeAmount": { # [required] Amount of the additional charge.
                "tax": { # [required] Tax value.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "pretax": { # [required] Value before taxes.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
              },
              "type": "A String", # [required] Type of the additional charge.
              "additionalChargePromotions": [ # Deprecated.
                {
                  "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
                    "tax": { # [required] Tax value.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                    "pretax": { # [required] Value before taxes.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                  },
                  "promotionId": "A String", # [required] ID of the promotion.
                },
              ],
            },
          ],
        },
        "shipmentUnitIds": [ # [required] The shipment unit ID is assigned by the merchant and defines individual quantities within a line item. The same ID can be assigned to units that are the same while units that differ must be assigned a different ID (for example: free or promotional units).
          "A String",
        ],
        "lineItemId": "A String", # ID of the line item. Either lineItemId or productId must be set.
        "productId": "A String", # ID of the product. This is the REST ID used in the products service. Either lineItemId or productId must be set.
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderinvoicesCreateChargeInvoiceResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderinvoicesCreateChargeInvoiceResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="createrefundinvoice">createrefundinvoice(merchantId, orderId, body)</code>
  <pre>Creates a refund invoice for one or more shipment groups, and triggers a refund for orderinvoice enabled orders. This can only be used for line items that have previously been charged using createChargeInvoice. All amounts (except for the summary) are incremental with respect to the previous invoice.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "shipmentInvoices": [ # Invoice details for different shipment groups.
      {
        "invoiceSummary": { # [required] Invoice summary.
          "productTotal": { # [required] Total price for the product.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "merchantBalance": { # Deprecated.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "googleBalance": { # Deprecated.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "promotionSummaries": [ # Deprecated.
            {
              "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
                "tax": { # [required] Tax value.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "pretax": { # [required] Value before taxes.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
              },
              "promotionId": "A String", # [required] ID of the promotion.
            },
          ],
          "customerBalance": { # Deprecated.
            "tax": { # [required] Tax value.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
            "pretax": { # [required] Value before taxes.
              "currency": "A String", # The currency of the price.
              "value": "A String", # The price represented as a number.
            },
          },
          "additionalChargeSummaries": [ # Summary of the total amounts of the additional charges.
            {
              "totalAmount": { # [required] Total additional charge for this type.
                "tax": { # [required] Tax value.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
                "pretax": { # [required] Value before taxes.
                  "currency": "A String", # The currency of the price.
                  "value": "A String", # The price represented as a number.
                },
              },
              "type": "A String", # [required] Type of the additional charge.
            },
          ],
        },
        "shipmentGroupId": "A String", # [required] ID of the shipment group. It is assigned by the merchant in the shipLineItems method and is used to group multiple line items that have the same kind of shipping charges.
        "lineItemInvoices": [ # [required] Invoice details per line item.
          {
            "unitInvoice": { # [required] Invoice details for a single unit.
              "promotions": [ # Deprecated.
                {
                  "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
                    "tax": { # [required] Tax value.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                    "pretax": { # [required] Value before taxes.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                  },
                  "promotionId": "A String", # [required] ID of the promotion.
                },
              ],
              "unitPricePretax": { # [required] Price of the unit, before applying taxes.
                "currency": "A String", # The currency of the price.
                "value": "A String", # The price represented as a number.
              },
              "unitPriceTaxes": [ # Tax amounts to apply to the unit price.
                {
                  "taxType": "A String", # [required] Type of the tax.
                  "taxAmount": { # [required] Tax amount for the tax type.
                    "currency": "A String", # The currency of the price.
                    "value": "A String", # The price represented as a number.
                  },
                  "taxName": "A String", # Optional name of the tax type. This should only be provided if taxType is otherFeeTax.
                },
              ],
              "additionalCharges": [ # Additional charges for a unit, e.g. shipping costs.
                {
                  "additionalChargeAmount": { # [required] Amount of the additional charge.
                    "tax": { # [required] Tax value.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                    "pretax": { # [required] Value before taxes.
                      "currency": "A String", # The currency of the price.
                      "value": "A String", # The price represented as a number.
                    },
                  },
                  "type": "A String", # [required] Type of the additional charge.
                  "additionalChargePromotions": [ # Deprecated.
                    {
                      "promotionAmount": { # [required] Amount of the promotion. The values here are the promotion applied to the unit price pretax and to the total of the tax amounts.
                        "tax": { # [required] Tax value.
                          "currency": "A String", # The currency of the price.
                          "value": "A String", # The price represented as a number.
                        },
                        "pretax": { # [required] Value before taxes.
                          "currency": "A String", # The currency of the price.
                          "value": "A String", # The price represented as a number.
                        },
                      },
                      "promotionId": "A String", # [required] ID of the promotion.
                    },
                  ],
                },
              ],
            },
            "shipmentUnitIds": [ # [required] The shipment unit ID is assigned by the merchant and defines individual quantities within a line item. The same ID can be assigned to units that are the same while units that differ must be assigned a different ID (for example: free or promotional units).
              "A String",
            ],
            "lineItemId": "A String", # ID of the line item. Either lineItemId or productId must be set.
            "productId": "A String", # ID of the product. This is the REST ID used in the products service. Either lineItemId or productId must be set.
          },
        ],
      },
    ],
    "invoiceId": "A String", # [required] The ID of the invoice.
    "returnOption": { # Option to create an invoice for a refund and mark all items within the invoice as returned. Exactly one of refundOnlyOption or returnOption must be provided.
      "reason": "A String", # [required] Reason for the return.
      "description": "A String", # Optional description of the return reason.
    },
    "refundOnlyOption": { # Option to create a refund-only invoice. Exactly one of refundOnlyOption or returnOption must be provided.
      "reason": "A String", # [required] Reason for the refund.
      "description": "A String", # Optional description of the refund reason.
    },
    "operationId": "A String", # [required] The ID of the operation, unique across all operations for a given order.
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderinvoicesCreateRefundInvoiceResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderinvoicesCreateRefundInvoiceResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

</body></html>