openapi: 3.1.0
info:
title: API Reference subpackage_billing subpackage_returns API
version: 1.0.0
servers:
- url: https://api.shipbob.com
- url: https://sandbox-api.shipbob.com
tags:
- name: subpackage_returns
paths:
/2026-01/return:
post:
operationId: create-return-order
summary: 'Create Return Order
'
description: 'Creates a new return order for a previously shipped order. Specify the original shipment, inventory items to return, and requested return actions.
'
tags:
- subpackage_returns
parameters:
- name: Authorization
in: header
description: Authentication using Personal Access Token (PAT) token or OAuth2
required: true
schema:
type: string
- name: shipbob_channel_id
in: header
description: Retrieve your channel ID from the [GET /channel](/api/channels/get-channels) endpoint. Use the channel ID that has write scopes.
required: true
schema:
type: string
format: int32
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.PublicReturnV1Dto'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ProblemDetails'
'401':
description: Authorization missing or invalid
content:
application/json:
schema:
description: Any type
'403':
description: The provided credentials are not authorized to access this resource
content:
application/json:
schema:
description: Any type
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ApiError'
requestBody:
description: The return order creation request containing return details, items, and configuration.
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.CreateReturnRequest'
get:
operationId: get-return-orders
summary: 'Get Return Orders
'
description: 'Retrieves a paginated list of return orders with optional filters for IDs, statuses, dates, and other criteria. Use this to track all returns across your ShipBob account.
'
tags:
- subpackage_returns
parameters:
- name: Ids
in: query
description: 'The IDs of the returns to fetch. Accepts a comma-separated list of return IDs (e.g., 123,456,789).
'
required: false
schema:
type: string
- name: ReferenceIds
in: query
description: 'Comma-separated list of return reference IDs (RMA numbers) to filter by.
'
required: false
schema:
type: string
- name: Status
in: query
description: 'Comma-separated list of return statuses to filter by (e.g., AwaitingArrival,Arrived,Processing,Completed,Cancelled).
'
required: false
schema:
type: string
- name: FulfillmentCenterIds
in: query
description: 'Comma-separated list of fulfillment center IDs to filter by.
'
required: false
schema:
type: string
- name: TrackingNumbers
in: query
description: 'Comma-separated list of tracking numbers to filter by.
'
required: false
schema:
type: string
- name: OriginalShipmentIds
in: query
description: 'Comma-separated list of original shipment IDs to filter by.
'
required: false
schema:
type: string
- name: InventoryIds
in: query
description: 'Comma-separated list of inventory IDs to filter by.
'
required: false
schema:
type: string
- name: StartDate
in: query
description: 'Filter returns created on or after this date (ISO 8601 format).
'
required: false
schema:
type: string
format: date-time
- name: EndDate
in: query
description: 'Filter returns created on or before this date (ISO 8601 format).
'
required: false
schema:
type: string
format: date-time
- name: ReturnTypes
in: query
description: 'Comma-separated list of return types to filter by (e.g., Regular,ReturnToSender).
'
required: false
schema:
type: string
- name: ReturnActions
in: query
description: 'Comma-separated list of return actions to filter by (e.g., Restock,Quarantine,Dispose).
'
required: false
schema:
type: string
- name: StoreOrderIds
in: query
description: 'Comma-separated list of store order IDs to filter by.
'
required: false
schema:
type: string
- name: Sortby
in: query
description: 'Field to sort results by.
'
required: false
schema:
type: string
- name: CompletedStartDate
in: query
description: 'Filter returns completed on or after this date (ISO 8601 format).
'
required: false
schema:
type: string
format: date-time
- name: CompletedEndDate
in: query
description: 'Filter returns completed on or before this date (ISO 8601 format).
'
required: false
schema:
type: string
format: date-time
- name: Cursor
in: query
description: 'Page number to retrieve. Used for pagination through result sets.
'
required: false
schema:
type: integer
- name: Limit
in: query
description: 'Maximum number of records to return per page.
'
required: false
schema:
type: integer
- name: SortOrder
in: query
description: 'Sort order for results. Desc = newest to oldest, Asc = oldest to newest, Desc is default
'
required: false
schema:
$ref: '#/components/schemas/202601ReturnGetParametersSortOrder'
- name: Authorization
in: header
description: Authentication using Personal Access Token (PAT) token or OAuth2
required: true
schema:
type: string
- name: shipbob_channel_id
in: header
description: Retrieve your channel ID from the [GET /channel](/api/channels/get-channels) endpoint. Use the channel ID that has write scopes.
required: false
schema:
type: string
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.PublicReturnDtoPagedUrlResultDto'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ProblemDetails'
'401':
description: Authorization missing or invalid
content:
application/json:
schema:
description: Any type
'403':
description: The provided credentials are not authorized to access this resource
content:
application/json:
schema:
description: Any type
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ProblemDetails'
/2026-01/return/{id}:
get:
operationId: get-return-order
summary: 'Get Return Order
'
description: 'Retrieves the complete details of a specific return order by its unique ID. Use this to view return status, inventory items, transactions, and processing history.
'
tags:
- subpackage_returns
parameters:
- name: id
in: path
description: 'The Id of the Return
'
required: true
schema:
type: string
format: int32
- name: Authorization
in: header
description: Authentication using Personal Access Token (PAT) token or OAuth2
required: true
schema:
type: string
- name: shipbob_channel_id
in: header
description: Retrieve your channel ID from the [GET /channel](/api/channels/get-channels) endpoint. Use the channel ID that has write scopes.
required: false
schema:
type: string
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.PublicReturnDto'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ProblemDetails'
'401':
description: Authorization missing or invalid
content:
application/json:
schema:
description: Any type
'403':
description: The provided credentials are not authorized to access this resource
content:
application/json:
schema:
description: Any type
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ProblemDetails'
put:
operationId: edit-return-order
summary: 'Edit Return Order
'
description: 'Updates an existing return using the provided request body and returns the updated return payload.
'
tags:
- subpackage_returns
parameters:
- name: id
in: path
description: ''
required: true
schema:
type: string
format: int32
- name: Authorization
in: header
description: Authentication using Personal Access Token (PAT) token or OAuth2
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.PublicReturnV1Dto'
'401':
description: Authorization missing or invalid
content:
application/json:
schema:
description: Any type
'403':
description: The provided credentials are not authorized to access this resource
content:
application/json:
schema:
description: Any type
'404':
description: Not Found
content:
application/json:
schema:
description: Any type
'422':
description: Client Error
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.ApiError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Returns.CreateReturnRequest'
/2026-01/return/{id}:cancel:
post:
operationId: cancel-return-order
summary: 'Cancel Return order
'
description: 'Cancels a return order for given return ID
'
tags:
- subpackage_returns
parameters:
- name: id
in: path
description: 'Id of the return order
'
required: true
schema:
type: string
format: int32
- name: Authorization
in: header
description: Authentication using Personal Access Token (PAT) token or OAuth2
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Returns_cancelReturnOrder_Response_200'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'401':
description: Authorization missing or invalid
content:
application/json:
schema:
description: Any type
'403':
description: The provided credentials are not authorized to access this resource
content:
application/json:
schema:
description: Any type
components:
schemas:
Returns.PublicReturnDtoPagedUrlResultDto:
type: object
properties:
first:
type:
- string
- 'null'
format: uri
description: Return url for first cursor
items:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.PublicReturnDto'
description: Return records
last:
type:
- string
- 'null'
format: uri
description: Return url for last cursor
next:
type:
- string
- 'null'
format: uri
description: Return url for next cursor
prev:
type:
- string
- 'null'
format: uri
description: Return url for prev cursor
title: Returns.PublicReturnDtoPagedUrlResultDto
Returns.ActionTakenDto:
type: object
properties:
action:
type:
- string
- 'null'
description: The return action taken
action_reason:
type:
- string
- 'null'
description: The reason the action was taken
image_url:
type:
- string
- 'null'
format: uri
description: Image of inventory processed with this action.
quantity_processed:
type: integer
description: The quantity of inventory items processed with this reason and action
description: The details of an action taken for inventory item in the return
title: Returns.ActionTakenDto
Returns.StatusHistoryDto:
type: object
properties:
status:
type:
- string
- 'null'
description: Status to change
timestamp:
type: string
format: date-time
description: Date change status
description: Status history
title: Returns.StatusHistoryDto
Returns.ProblemDetails:
type: object
properties:
detail:
type:
- string
- 'null'
instance:
type:
- string
- 'null'
status:
type:
- integer
- 'null'
title:
type:
- string
- 'null'
type:
type:
- string
- 'null'
title: Returns.ProblemDetails
Returns.ApiError:
type: object
properties:
details:
oneOf:
- description: Any type
- type: 'null'
errors:
type:
- array
- 'null'
items:
type: string
message:
type:
- string
- 'null'
stackTrace:
type:
- string
- 'null'
description: StackTrace of the Exception
title: Returns.ApiError
Returns.ReturnInventory:
type: object
properties:
id:
type: integer
description: ID of the inventory item to return.
lot_date:
type:
- string
- 'null'
format: date-time
lot_number:
type:
- string
- 'null'
quantity:
type: integer
description: Quantity of the returned inventory item in the return.
requested_action:
$ref: '#/components/schemas/Returns.ReturnAction'
required:
- id
- quantity
- requested_action
description: An inventory being returned, includes the quantity and an override for the return action.
title: Returns.ReturnInventory
Returns.ChannelDto:
type: object
properties:
id:
type: integer
description: Unique Id of the channel
name:
type:
- string
- 'null'
description: Name given to the channel
description: The details of a Channel
title: Returns.ChannelDto
Returns.Facility:
type: object
properties:
id:
type: integer
description: Unique identifier of the facility
name:
type:
- string
- 'null'
description: Name of the facility (It is optional because public API integrations do not pass this)
required:
- id
description: A Facility to process Returns.
title: Returns.Facility
Returns.TransactionDto:
type: object
properties:
amount:
type: number
format: double
description: The amount charged for this transaction
transaction_type:
type:
- string
- 'null'
description: The type of transaction
description: The details of a transaction charged to the return order
title: Returns.TransactionDto
Returns.PublicReturnV1Dto:
type: object
properties:
channel:
$ref: '#/components/schemas/Returns.ChannelDto'
completed_date:
type:
- string
- 'null'
format: date-time
description: The date and time for when the return order was completely processed
customer_name:
type:
- string
- 'null'
description: Name of merchant that return belongs to
fulfillment_center:
$ref: '#/components/schemas/Returns.FulfillmentCenterDto'
id:
type: integer
description: Unique id of the return order
insert_date:
type: string
format: date-time
description: The date and time for when the return order was created
inventory:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.InventoryItemV1Dto'
description: List of inventory items in return order
invoice_amount:
type:
- number
- 'null'
format: double
description: Amount merchant was invoiced for processing the return
original_shipment_id:
type:
- integer
- 'null'
description: ShipmentId for which return was created
reference_id:
type:
- string
- 'null'
description: Unique reference id of the return order. Created by merchant if a regular return.
return_type:
type:
- string
- 'null'
description: Type of the return, i.e. Regular, RTS
status:
type:
- string
- 'null'
description: Status of the return order, i.e. AwaitingArrival
store_order_id:
type:
- string
- 'null'
description: Reference to external order id
tracking_number:
type:
- string
- 'null'
description: The tracking number of the return shipping label
transactions:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.TransactionDto'
description: List of transactions that make up the billable amount to invoice a merchant
description: The details of a public return order (V1), including the transactions and inventory items
title: Returns.PublicReturnV1Dto
Returns.ReturnAction:
type: string
enum:
- Default
- Restock
- Quarantine
- Dispose
title: Returns.ReturnAction
Returns.PublicReturnDto:
type: object
properties:
arrived_date:
type:
- string
- 'null'
format: date-time
description: The date and time when the return arrived at the fulfillment center
awaiting_arrival_date:
type:
- string
- 'null'
format: date-time
description: The date and time when the return entered Awaiting Arrival status
cancelled_date:
type:
- string
- 'null'
format: date-time
description: The date and time when the return was cancelled, if applicable
channel:
$ref: '#/components/schemas/Returns.ChannelDto'
completed_date:
type:
- string
- 'null'
format: date-time
description: The date and time for when the return order was completely processed
customer_name:
type:
- string
- 'null'
description: Name of merchant that return belongs to
fulfillment_center:
$ref: '#/components/schemas/Returns.FulfillmentCenterDto'
id:
type: integer
description: Unique id of the return order
insert_date:
type: string
format: date-time
description: The date and time for when the return order was created
inventory:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.InventoryItemDto'
description: List of inventory items in return order
invoice:
$ref: '#/components/schemas/Returns.InvoiceDto'
original_shipment_id:
type:
- integer
- 'null'
description: ShipmentId for which return was created
processing_date:
type:
- string
- 'null'
format: date-time
description: The date and time when the return started processing
reference_id:
type:
- string
- 'null'
description: Unique reference id of the return order. Created by merchant if a regular return.
return_type:
type:
- string
- 'null'
description: Type of the return, i.e. Regular, RTS
shipment_tracking_number:
type:
- string
- 'null'
description: The tracking number of the original shipment
status:
type:
- string
- 'null'
description: Status of the return order, i.e. Awaiting Arrival
status_history:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.StatusHistoryDto'
description: List of status history in return order
store_order_id:
type:
- string
- 'null'
description: Reference to external order id
tracking_number:
type:
- string
- 'null'
description: The tracking number of the return shipping label
transactions:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.TransactionDto'
description: List of transactions that make up the billable amount to invoice a merchant
description: The details of a public return order, including the transactions and inventory items
title: Returns.PublicReturnDto
202601ReturnGetParametersSortOrder:
type: string
enum:
- Asc
- Desc
title: 202601ReturnGetParametersSortOrder
Returns.InvoiceDto:
type: object
properties:
amount:
type:
- number
- 'null'
format: double
description: Amount being charged
currency_code:
type:
- string
- 'null'
description: Currency code of amount
description: The invoice amount and curency
title: Returns.InvoiceDto
Returns.FulfillmentCenterDto:
type: object
properties:
id:
type: integer
description: Unique id of the fulfillment center
name:
type:
- string
- 'null'
description: Name give to the fulfillment center
description: The details of a Fulfillment Center
title: Returns.FulfillmentCenterDto
Returns.LotInformationDto:
type: object
properties:
expiration:
type:
- string
- 'null'
format: date-time
description: The expiration date for this lot.
minimumShelfLife:
type:
- integer
- 'null'
description: A minimum amount of time in days this product can be safely returned to the shelf without expiring.
number:
type:
- string
- 'null'
description: An alphanumeric string uniquely identifying this lot of produced inventory.
description: Lot information associated with a specific inventory item.
title: Returns.LotInformationDto
Returns.ActionRequestedDto:
type: object
properties:
action:
type:
- string
- 'null'
description: The action to take
action_type:
type:
- string
- 'null'
description: The source of the action to take, i.e. Inventory Default or Overriden by Merchant at creation
instructions:
type:
- string
- 'null'
description: The instructions for how to take the action given by inventory owning Merchant
description: The details of the action requested for inventory
title: Returns.ActionRequestedDto
Returns.InventoryItemV1Dto:
type: object
properties:
action_requested:
$ref: '#/components/schemas/Returns.ActionRequestedDto'
action_taken:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.ActionTakenDto'
description: List of actions taken
id:
type: integer
description: Unique id of the inventory
name:
type:
- string
- 'null'
description: Name of the product
quantity:
type: integer
description: Number of inventory that is being returned
description: The details of the inventory in the return order
title: Returns.InventoryItemV1Dto
Returns.CreateReturnRequest:
type: object
properties:
fulfillment_center:
$ref: '#/components/schemas/Returns.Facility'
inventory:
type: array
items:
$ref: '#/components/schemas/Returns.ReturnInventory'
description: Array of inventory items being returned
original_shipment_id:
type:
- integer
- 'null'
description: Shipment from which the items in the return originated 123456
reference_id:
type: string
description: "Client-defined external unique identifier for the return order.\r\n If tracking id is not provided, this value must appear on the box label as RMA. Example: ShipBob_Return_123"
tracking_number:
type:
- string
- 'null'
description: Tracking number for the return shipment 1Z9999999999999999
required:
- fulfillment_center
- inventory
- reference_id
description: The request payload for creating a Return of inventory.
title: Returns.CreateReturnRequest
Returns_cancelReturnOrder_Response_200:
type: object
properties: {}
description: Empty response body
title: Returns_cancelReturnOrder_Response_200
Returns.InventoryItemDto:
type: object
properties:
action_requested:
$ref: '#/components/schemas/Returns.ActionRequestedDto'
action_taken:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Returns.ActionTakenDto'
description: List of actions taken
barcodes:
type:
- array
- 'null'
items:
type: string
description: List of barcodes associated with the inventory item
id:
type: integer
description: Unique id of the inventory
lot_information:
$ref: '#/components/schemas/Returns.LotInformationDto'
name:
type:
- string
- 'null'
description: Name of the product
quantity:
type: integer
description: Number of inventory that is being returned
sku:
type:
- string
- 'null'
description: Stock keeping unit identifier for the inventory item
description: The details of the inventory in the return order
title: Returns.InventoryItemDto
securitySchemes:
PAT:
type: http
scheme: bearer
description: Authentication using Personal Access Token (PAT) token or OAuth2