---
displayed_sidebar: servicesSidebar
---

import ParameterTypes from "@site/src/components/ParameterTypes"

# Swap

A swap can be created when a Customer wishes to exchange Products that they have purchased with different Products. It consists of a Return of previously purchased Products and a Fulfillment of new Products. It also includes information on any additional payment or refund required based on the difference between the exchanged products.

## constructor

`**new Swap**()`

A swap can be created when a Customer wishes to exchange Products that they have purchased with different Products. It consists of a Return of previously purchased Products and a Fulfillment of new Products. It also includes information on any additional payment or refund required based on the difference between the exchanged products.

___

## Properties

<ParameterTypes parameters={[
  {
    "name": "additional_items",
    "type": "[LineItem](LineItem.mdx)[]",
    "description": "The details of the new products to send to the customer, represented as line items.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "allow_backorder",
    "type": "`boolean`",
    "description": "If true, swaps can be completed with items out of stock",
    "optional": false,
    "defaultValue": "false",
    "expandable": false,
    "children": []
  },
  {
    "name": "canceled_at",
    "type": "`Date`",
    "description": "The date with timezone at which the Swap was canceled.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "cart",
    "type": "[Cart](Cart.mdx)",
    "description": "The details of the cart that the customer uses to complete the swap.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "cart_id",
    "type": "`string`",
    "description": "The ID of the cart that the customer uses to complete the swap.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "confirmed_at",
    "type": "`Date`",
    "description": "The date with timezone at which the Swap was confirmed by the Customer.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "created_at",
    "type": "`Date`",
    "description": "The date with timezone at which the resource was created.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "deleted_at",
    "type": "`null` \\| `Date`",
    "description": "The date with timezone at which the resource was deleted.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "difference_due",
    "type": "`number`",
    "description": "The difference amount between the order’s original total and the new total imposed by the swap. If its value is negative, a refund must be issues to the customer. If it's positive, additional payment must be authorized by the customer. Otherwise, no payment processing is required.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "fulfillment_status",
    "type": "[SwapFulfillmentStatus](../enums/SwapFulfillmentStatus.mdx)",
    "description": "The status of the Fulfillment of the Swap.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "fulfillments",
    "type": "[Fulfillment](Fulfillment.mdx)[]",
    "description": "The details of the fulfillments that are used to send the new items to the customer.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "id",
    "type": "`string`",
    "description": "The swap's ID",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "idempotency_key",
    "type": "`string`",
    "description": "Randomly generated key used to continue the completion of the swap in case of failure.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "metadata",
    "type": "`Record<string, unknown>`",
    "description": "An optional key-value map with additional details",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "no_notification",
    "type": "`boolean`",
    "description": "If set to true, no notification will be sent related to this swap",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "order",
    "type": "[Order](Order.mdx)",
    "description": "The details of the order that the swap belongs to.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "order_id",
    "type": "`string`",
    "description": "The ID of the order that the swap belongs to.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "payment",
    "type": "[Payment](Payment.mdx)",
    "description": "The details of the additional payment authorized by the customer when `difference\\_due` is positive.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "payment_status",
    "type": "[SwapPaymentStatus](../enums/SwapPaymentStatus.mdx)",
    "description": "The status of the Payment of the Swap. The payment may either refer to the refund of an amount or the authorization of a new amount.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "return_order",
    "type": "[Return](Return.mdx)",
    "description": "The details of the return that belongs to the swap, which holds the details on the items being returned.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "shipping_address",
    "type": "[Address](Address.mdx)",
    "description": "The details of the shipping address that the new items should be sent to.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "shipping_address_id",
    "type": "`string`",
    "description": "The Address to send the new Line Items to - in most cases this will be the same as the shipping address on the Order.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "shipping_methods",
    "type": "[ShippingMethod](ShippingMethod.mdx)[]",
    "description": "The details of the shipping methods used to fulfill the additional items purchased.",
    "optional": false,
    "defaultValue": "",
    "expandable": true,
    "children": []
  },
  {
    "name": "updated_at",
    "type": "`Date`",
    "description": "The date with timezone at which the resource was updated.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

___

## Methods

### beforeInsert

`Private **beforeInsert**(): void`

#### Returns

`void`

<ParameterTypes parameters={[
  {
    "name": "void",
    "type": "`void`",
    "optional": true,
    "defaultValue": "",
    "description": "",
    "expandable": false,
    "children": []
  }
]} />
