---
displayed_sidebar: entitiesSidebar
slug: /references/entities/classes/Swap
---

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.

## Properties

<ParameterTypes parameters={[
  {
    "name": "additional_items",
    "type": "[LineItem](entities.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](entities.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/entities.SwapFulfillmentStatus.mdx)",
    "description": "The status of the Fulfillment of the Swap.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "fulfillments",
    "type": "[Fulfillment](entities.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](entities.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](entities.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/entities.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](entities.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](entities.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](entities.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": []
  }
]} expandUrl="https://docs.medusajs.com/development/entities/repositories#retrieving-a-list-of-records"/>
