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:
- 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.
- 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.
| Property | Value | Notes |
|---|---|---|
| API Endpoint | https://api.veeqo.com/channels | |
| HTTP Method | POST | |
| x-api-key | Your Veeqo API key | Found in Veeqo UI: Users > Edit User > API Key |
| Content-Type | application/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.
| Property | Value | Notes |
|---|---|---|
| API Endpoint | https://api.veeqo.com/api/v2/channel_sellables | |
| HTTP Method | POST | |
| x-api-key | Your Veeqo API key | |
| Content-Type | application/json | |
| Accept | application/vnd.api+json | Required. 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 channelnumber— 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
| Property | Value |
|---|---|
| API Endpoint | https://api.veeqo.com/orders |
| HTTP Method | POST |
| x-api-key | Your Veeqo API key |
| Content-Type | application/json |
| Accept | application/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:
- Do you have a
custom_integrationchannel withintegration_type: "amazon"? - Have you created channel sellables linking your products to the Amazon channel?
- Are you including the exact Amazon Order ID in the
numberfield? - Are you including the Amazon Line Item ID in the
remote_idfield on each line item?