Optoro Exchange Orders API

The Exchange Orders API from Optoro — 1 operation(s) for exchange orders.

Operations 1

POST /exchange_orders Create Exchange Order #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optoro-exchange-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optoro-exchange-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Exchange Orders API
  description: "\nThe **Exchange Orders** API is used to place an order in your e-commerce platform when the shopper has chosen to exchange for a replacement item or receive their refund via a gift card.\nYour endpoint should handle all tax and shipping calculations.  The endpoint should be idempotent, using `original_order_id` as the key.  Only one exchange order can be placed against an `original_order_id`.\n\n**When it is used:**\n\n- Optoro POSTS an **Exchange Orders** message to you when the shopper has confirmed an exchange, selected a gift card refund, or both.\n\n#### Instant Exchange\nThis is an exchange of one or more items for a variant of the product (ex: different size, different color). This will be represented in the `items` array by an object like the following:\n\n```json\n{\n  \"sku\": \"888812345678\",\n  \"quantity\": 2,\n  \"title\": \"Fuzzy red t-shirt\",\n  \"unit_price_amount_cents\": 100,\n  \"product_amount_cents\": 200,\n  \"discount_amount_cents\": 20,\n  \"tax_amount_cents\": 100,\n  \"product_identifier\": \"1234-5678\",\n  \"variant_identifier\": \"1234-5678\",\n  \"original_sku\": \"888812345678\",\n  \"original_item_identifier\": \"1234\",\n  \"concept\": \"acme\"\n}\n```\n\n#### Instant Gift Card\nThis is an exchange of one or more items for a gift card. This will be represented in the `items` array by an object like the following:\n\n```json\n{\n  \"sku\": \"OPTOROGIFTCARD\",\n  \"quantity\": 1,\n  \"unit_price_amount_cents\": 800,\n  \"bonus_credit_amount_cents\": 200,\n  \"return_items\": [\n    {\n      \"title\": \"Pink Shirt\",\n      \"original_sku\": \"888812349672\",\n      \"original_item_identifier\": \"4567\",\n      \"quantity\": 1,\n      \"concept\": \"acme\"\n    }\n  ]\n}\n```\n\n`sku` will be the agreed upon value for an Instant Gift Card exchange and `return_items` will be the list of items being exchanged for the gift card.\n"
  version: 2.0.0
tags:
- name: Exchange Orders
paths:
  /exchange_orders:
    post:
      summary: Create Exchange Order
      operationId: exchange_orders
      parameters:
      - in: header
        name: X-Optiturn-Id
        schema:
          type: string
        required: true
        example: Modrno
      - in: header
        name: X-Optiturn-Api-Version
        schema:
          type: string
          enum:
          - '1'
          - '2'
        required: true
      requestBody:
        description: Exchange order object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/exchange_order'
      responses:
        '200':
          description: Order creation success message
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/exchange_order_response'
      tags:
      - Exchange Orders
components:
  schemas:
    exchange_order_address:
      required:
      - name
      - street1
      - city
      - province
      - postal_code
      - country_code
      type: object
      properties:
        name:
          description: Name of person.
          type: string
          example: Carmine Customer
        street1:
          description: The street address.
          type: string
          example: 123 Fake St.
        street2:
          description: An optional second line for the street address, for suite or other similar additions.
          type: string
          example: STE 1200
        city:
          description: The city for this address.
          type: string
          example: Utiopiannapolis
        province:
          description: The state or province for this address.
          type: string
          example: WA
        postal_code:
          description: The zip or postal code for this address.
          type: string
          example: '99877'
        country_code:
          description: The country code for this address.
          type: string
          example: US
        phone:
          description: Phone number.
          type: string
          example: 202-555-1212
    customer:
      required:
      - identifier
      - email
      description: Customer who placed order.
      type: object
      properties:
        identifier:
          description: Reference to customer record in your OMS
          type: string
          example: '123'
        first_name:
          description: Customer first name
          type: string
          example: Carmine
        last_name:
          description: Customer last name
          type: string
          example: Customer
        email:
          description: Customer contact email
          type: string
          example: customer@example.com
        phone:
          description: Customer phone
          type: string
          example: 202-555-1212
    exchange_order_response:
      required:
      - order_identifier
      - total_amount_cents
      - product_amount_cents
      - tax_amount_cents
      type: object
      properties:
        order_identifier:
          description: Identifier of created order, should be the same order id given to shoppers
          type: string
          example: OR124567
        total_amount_cents:
          description: Total amount of order in cents, including any gift card bonus credit (if applicable)
          type: integer
          format: int
          minimum: 0
          example: 100
        product_amount_cents:
          description: Product amount of order in cents, before discounts, taxes or shipping costs
          type: integer
          format: int
          minimum: 0
          example: 100
        tax_amount_cents:
          description: Tax amount of order in cents
          type: integer
          format: int
          minimum: 0
          example: 110
    exchange_order_item:
      required:
      - sku
      - quantity
      type: object
      properties:
        sku:
          description: An identifier which matches the catalog and represents the product for this order item.
          type: string
          example: '888812345678'
        quantity:
          description: The number of units within the order for each SKU (or UPC). Must be less than or equal to 1000.
          type: integer
          example: 2
        title:
          description: Title of product
          type: string
          example: Fuzzy red t-shirt
        unit_price_amount_cents:
          description: Unit price amount in cents of a single unit of a product.
          type: integer
          format: int
          minimum: 0
          example: 100
        product_amount_cents:
          type: integer
          description: Product amount in cents, before discounts, taxes or shipping costs.
          format: int
          minimum: 0
          example: 200
        discount_amount_cents:
          type: integer
          description: Line item discount amount in cents.
          format: int
          minimum: 0
          example: 20
        tax_amount_cents:
          description: Line item tax amount in cents.
          type: integer
          format: int
          minimum: 0
          example: 100
        bonus_credit_amount_cents:
          description: Gift card bonus credit amount in cents. This field is only present for an Instant Gift Card exchange.
          type: integer
          format: int
          minimum: 0
          example: 100
        product_identifier:
          description: Id unique to that product (ex. same SKU from different vendors).
          type: string
          example: 1234-5678
        variant_identifier:
          description: Variant can help disambiguate specific variant of a product class (e.g. blue color of a sweater product) -- product_identifier can be the same as variant_identifier in some systems.
          type: string
          example: 1234-5678
        original_sku:
          description: SKU of the item from original order that is being exchanged.
          type: string
          example: '888812345678'
        original_item_identifier:
          description: Order line item identifier of the item from original order that is being exchanged.
          type: string
          example: '1234'
        concept:
          description: The concept brand that this item belongs to.
          type: string
          example: acme
        return_items:
          description: An array of order line items being exchanged for a gift card. This field is only present for an Instant Gift Card exchange.
          type: array
          items:
            $ref: '#/components/schemas/exchange_order_return_item'
    exchange_order_return_item:
      required:
      - original_sku
      - original_item_identifier
      - quantity
      type: object
      properties:
        title:
          description: Title of product
          type: string
          example: Pink Shirt
        original_sku:
          description: SKU of the item from original order that is being exchanged.
          type: string
          example: '888812345678'
        original_item_identifier:
          description: Order line item identifier of the item from original order that is being exchanged.
          type: string
          example: '1234'
        quantity:
          description: The number of units within the order for each SKU (or UPC). Must be less than or equal to 1000.
          type: integer
          example: 2
        concept:
          description: The concept brand that this item belongs to.
          type: string
          example: acme
    exchange_order:
      required:
      - currency
      - original_order_id
      - is_gift
      - items
      - customer
      - shipping_address
      - billing_address
      - payment
      type: object
      properties:
        currency:
          description: Currency code. Must be ISO-4217 reference. E.g. "USD"
          type: string
          example: USD
        rma_identifier:
          description: The RMA exchange goods are to be returned under
          type: string
          example: RMA12345
        original_order_id:
          type: string
          description: The original order id of item(s) to be exchanged
          example: OR123456
        original_secondary_order_id:
          type: string
          description: The original secondary order id of item(s) to be exchanged
          example: OR987654
        is_gift:
          description: Treat as a gift order, don’t show price or allow refund to original form of payment.
          type: boolean
          example: false
        items:
          description: An array of order line items.
          type: array
          items:
            $ref: '#/components/schemas/exchange_order_item'
          example:
          - sku: '888812345678'
            quantity: 2
            title: Fuzzy red t-shirt
            unit_price_amount_cents: 100
            product_amount_cents: 200
            discount_amount_cents: 20
            tax_amount_cents: 100
            product_identifier: 1234-5678
            variant_identifier: 1234-5678
            original_sku: '888812345678'
            original_item_identifier: '1234'
            concept: acme
          - sku: OPTOROGIFTCARD
            quantity: 1
            unit_price_amount_cents: 800
            bonus_credit_amount_cents: 200
            return_items:
            - title: Pink Shirt
              original_sku: '888812349672'
              original_item_identifier: '4567'
              quantity: 1
              concept: acme
        customer:
          description: Customer
          type: object
          $ref: '#/components/schemas/customer'
        shipping_address:
          description: Address to receive goods
          type: object
          $ref: '#/components/schemas/exchange_order_address'
        billing_address:
          description: Payment billing address
          type: object
          $ref: '#/components/schemas/exchange_order_address'
        payment:
          title: Exchange Payment
          type: object
          required:
          - transaction_id
          properties:
            transaction_id:
              type: string
              description: Optoro generated number for order payment
              example: 8ef05fb8-283e-4edd-a3d7-47f9fe520cfe