Skip to content

Amazon Buyer Protection for Veeqo API Orders

Overview

Integrators who create orders in Veeqo via the Veeqo API can now benefit from Amazon Buy Shipping protections for their Amazon orders. When the correct API workflow is followed, eligible shipments receive claims protection through Amazon Buy Shipping.


Previously, this protection was only available to sellers shipping Amazon orders directly through the Veeqo UI or the Rate Shopping API. Now, any integration that creates an Amazon order via Veeqo API endpoints can unlock the same protections for their users.

Prerequisites

There are two prerequisites for getting Buyer Protection:

  1. An Amazon Channel for Custom Integrations must exist in Veeqo — This channel can only be created via the API (not the UI). See Step 1 below.
  2. Amazon Order Items must be present as Channel Sellables — Every item in an order must be linked to its Amazon listing via a channel sellable. See Step 2 below.

If both conditions are met, orders created via the /orders endpoint referencing the linked products will qualify for Buy Shipping Protection (BSP).

Step 1: Create a Custom Integration Channel

Amazon orders submitted via API must use a custom integration channel configured for Amazon. This is a one-time setup step. Once created, you reference this channel in all your Amazon orders. You can create multiple channels if you have multiple Amazon stores.

PropertyValueNotes
API Endpointhttps://api.veeqo.com/channels
HTTP MethodPOST
x-api-keyYour Veeqo API keyFound in Veeqo UI: Users > Edit User > API Key
Content-Typeapplication/json

Request

{
  "channel": {
    "name": "Amazon Store US (Custom Integration)",
    "type_code": "custom_integration",
    "currency_code": "USD",
    "short_name": "AZ",
    "veeqo_dictates_stock_level": false,
    "custom_integration_channel_specific_attributes": {
      "integration_type": "amazon"
    }
  }
}

Important: The type_code must be "custom_integration", the integration_type must be "amazon" and the short_name must be 2 characters maximum.

Response

{
  "id": 1234567,
  "type_code": "custom_integration",
  "name": "Amazon Store US (Custom Integration)",
  "short_name": "AZ",
  "currency_code": "USD",
  "state": "active",
  "custom_integration_channel_specific": {
    "integration_type": "amazon"
  }
}

Save the id — you will need it as channel_id when creating orders.

Step 2: Create Channel Sellables

Every Amazon listing must have a Channel Sellable (linked listing) record in Veeqo. This links your Veeqo inventory to the Amazon listing. Ensure a sellable exists before creating channel sellable. You can create a sellable using the "Create a New Product" endpoint.

PropertyValueNotes
API Endpointhttps://api.veeqo.com/api/v2/channel_sellables
HTTP MethodPOST
x-api-keyYour Veeqo API key
Content-Typeapplication/json
Acceptapplication/vnd.api+jsonRequired. Omitting this header results in a 415 "Unsupported Media Type" error.

Request — Create with new Channel Product

{
  "data": {
    "type": "channel_sellables",
    "attributes": {
      "sellable_id": "{{sellable_id}}",
      "channel_id": "{{channel_id}}",
      "remote_id": "{{ASIN}}",
      "remote_sku": "BLUE-WATER-BOTTLE-500ML",
      "remote_title": "Blue Water Bottle 500ml",
      "channel_product_attributes": {
        "remote_title": "Blue Water Bottle 500ml"
      }
    }
  }
}

Request — Link to existing Channel Product

{
  "data": {
    "type": "channel_sellables",
    "attributes": {
      "sellable_id": "{{sellable_id}}",
      "channel_id": "{{channel_id}}",
      "remote_id": "{{ASIN}}",
      "remote_sku": "BLUE-WATER-BOTTLE-500ML",
      "remote_title": "Blue Water Bottle 500ml"
    },
    "relationships": {
      "channel_product": {
        "data": {
          "type": "channel_product",
          "id": "{{channel_product_id}}"
        }
      }
    }
  }
}

Response

{
  "data": {
    "id": "123456789",
    "type": "channel_sellable",
    "attributes": {
      "remote_title": "Blue Water Bottle 500ml",
      "remote_sku": "BLUE-WATER-BOTTLE-500ML",
      "remote_price": "0.0",
      "remote_id": "B0EXAMPLE123",
      "active": true
    },
    "relationships": {
      "channel": { "data": { "id": "1234567", "type": "channel" } },
      "channel_product": { "data": { "id": "987654321", "type": "channel_product" } },
      "sellable": { "data": { "id": "111222333", "type": "sellable" } }
    }
  }
}

Step 3: Create the Order

With a custom integration channel and channel sellables in place, you can create BSP-eligible orders. The following fields are required for buyer protection:

  • channel_id — Must reference your custom_integration amazon channel
  • number — Must match the Amazon Order ID exactly (no prefixes/suffixes)
  • remote_id (on line items) — Must map to the Amazon Line Item ID (see our other guide on details of how to retrieve this)
  • sellable_id (on line items) — Must reference a sellable linked to the Amazon channel via a channel sellable
PropertyValue
API Endpointhttps://api.veeqo.com/orders
HTTP MethodPOST
x-api-keyYour Veeqo API key
Content-Typeapplication/json
Acceptapplication/json

Request

{
  "order": {
    "channel_id": "{{channel_id}}",
    "number": "{{amazon_order_number}}",
    "send_notification_email": false,
    "due_date": "2026-05-15",
    "delivery_cost": "5.99",
    "total_tax": "2.10",
    "currency_code": "USD",
    "line_items_attributes": [
      {
        "sellable_id": "{{sellable_id}}",
        "price_per_unit": "25.00",
        "quantity": 1,
        "tax_rate": 0.0,
        "taxless_discount_per_unit": "0.00",
        "remote_id": "{{amazon_line_item_id}}"
      }
    ],
    "customer_attributes": {
      "email": "john.smith@example.com",
      "phone": "+12065551234",
      "billing_address_attributes": {
        "first_name": "John",
        "last_name": "Smith",
        "address1": "123 Main St",
        "city": "Seattle",
        "state": "WA",
        "zip": "98101",
        "country": "US",
        "phone": "+12065551234"
      }
    },
    "deliver_to_attributes": {
      "first_name": "John",
      "last_name": "Smith",
      "address1": "123 Main St",
      "city": "Seattle",
      "state": "WA",
      "zip": "98101",
      "country": "US",
      "phone": "+12065551234",
      "email": "john.smith@example.com"
    },
    "payment_attributes": {
      "payment_type": "amazon",
      "reference_number": "{{amazon_order_number}}"
    }
  }
}

Troubleshooting

If shipments are not showing as protected, check the following:

  1. Do you have a custom_integration channel with integration_type: "amazon"?
  2. Have you created channel sellables linking your products to the Amazon channel?
  3. Are you including the exact Amazon Order ID in the number field?
  4. Are you including the Amazon Line Item ID in the remote_id field on each line item?