Vendasta Sales Orders API
The SalesOrders API from Vendasta — 3 operation(s) for salesorders.
The SalesOrders API from Vendasta — 3 operation(s) for salesorders.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/vendasta-salesorders-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Sales Orders API
version: 1.134.0
servers:
- description: Production
url: https://prod.apigateway.co/grpc
tags:
- name: SalesOrders
paths:
/v1/order/create:
post:
operationId: SalesOrders_CreateSalesOrder
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateSalesOrderRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/v1CreateSalesOrderResponse'
description: A successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/googlerpcStatus'
description: An unexpected error response.
security:
- OAuth2:
- order
summary: Create Sales Order
tags:
- SalesOrders
/v1/order/get:
post:
operationId: SalesOrders_GetSalesOrder
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1GetSalesOrderRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/v1GetSalesOrderResponse'
description: A successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/googlerpcStatus'
description: An unexpected error response.
security:
- OAuth2:
- order
- order:read
summary: Get Sales Order
tags:
- SalesOrders
/v1/order/list:
post:
operationId: SalesOrders_ListSalesOrder
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListSalesOrderRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/v1ListSalesOrderResponse'
description: A successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/googlerpcStatus'
description: An unexpected error response.
security:
- OAuth2:
- order
- order:read
summary: List Sales Orders
tags:
- SalesOrders
components:
schemas:
v1BillingPeriod:
properties:
duration:
$ref: '#/components/schemas/salesv1Duration'
endDate:
format: date-time
title: The end date of the billing period
type: string
startDate:
format: date-time
title: The start date of the billing period
type: string
title: The Time frame to bill for
type: object
v1CreateSalesOrderRequest:
properties:
attachments:
items:
$ref: '#/components/schemas/v1Attachment'
title: Data for the attachments on the order
type: array
businessId:
title: ID of the business that the order is for
type: string
commonFields:
items:
$ref: '#/components/schemas/v1CommonField'
title: A list of additional information that is shared across multiple products
type: array
contractDuration:
$ref: '#/components/schemas/salesv1Duration'
customFields:
items:
$ref: '#/components/schemas/v1CustomField'
title: A list of additional unique information pertaining to an individual product
type: array
customerAttachments:
items:
$ref: '#/components/schemas/v1Attachment'
title: Data for the customer attachments on the order
type: array
customerNotes:
title: Additional notes written for customer by a salesperson
type: string
enforceContractTerm:
title: Indicates whether to enforce the contract term
type: boolean
extraFields:
items:
$ref: '#/components/schemas/v1Field'
title: Extra fields are the fields that a partner (or market) admin has added to their orders by default to be filled
type: array
idempotencyKey:
title: Optional key used to prevent request duplication and allows safety when retrying requests
type: string
lineItems:
items:
$ref: '#/components/schemas/v1LineItem'
title: Lineitems replace Products and Packages
type: array
marketId:
title: ID of the market that the order belongs to
type: string
notes:
title: Additional notes written by a salesperson for admin only
type: string
opportunityIds:
items:
type: string
title: Opportunity id(s) that the order is fulfilling
type: array
orderIsSmbPayable:
title: Indicates whether the order should be charged to the SMB or not
type: boolean
origin:
$ref: '#/components/schemas/v1Origin'
packages:
items:
$ref: '#/components/schemas/v1Package'
title: Data for the package(s) being activated upon approval of this order
type: array
partnerId:
title: ID of the partner that the order belongs to
type: string
products:
items:
$ref: '#/components/schemas/v1Product'
title: Data for the product(s) being activated upon approval of this order
type: array
quoteId:
title: ID of the quote associated with the order if the order was created from a quote
type: string
requestedActivation:
format: date-time
title: Time submitted by a salesperson that indicates when an administrator should activate the products on the order
type: string
salespersonId:
title: ID of the salesperson who should attend to the order
type: string
tags:
items:
type: string
title: Tags on the order
type: array
useCustomerPrice:
title: 'Indicates whether or not to automatically resolve the line items'' retail pricing.
The request''s line items are expected to have nil revenue if this is set to true.
For more information and error scenarios, see Confluence docs:
https://vendasta.jira.com/wiki/spaces/PSYC/pages/2211971323/New+use+customer+price+on+sales-orders+Create+APIs'
type: boolean
title: Containing information to create a new order
type: object
v1GetSalesOrderResponse:
properties:
order:
$ref: '#/components/schemas/v1Order'
title: Response of getting an order
type: object
v1CustomerRecipient:
description: Details about the customer who receives the order.
properties:
firstName:
description: Output only. The user's first name.
readOnly: true
type: string
lastName:
description: Output only. The user's last name.
readOnly: true
type: string
userId:
description: Output only. The ID of the user.
readOnly: true
type: string
title: Customer Recipient
type: object
v1TaxOptions:
properties:
initialAmount:
format: int64
title: The initial amount (in cents) of tax to be applied to an order after all tax rules have been taken into account
type: string
label:
title: Setting that defines a name for a given tax that should be applied to an order
type: string
percentageMultiplier:
format: double
title: Setting that defines a tax percentage multiplier with a precision between 0.0000 and 1.0000
type: number
taxRateId:
title: The id of the tax rate that this tax corresponds to
type: string
type: object
v1Salesperson:
description: Details about the salesperson who submitted the order.
properties:
email:
description: Output only. The email address of the salesperson.
readOnly: true
type: string
firstName:
description: Output only. The first name of the salesperson.
readOnly: true
type: string
lastName:
description: Output only. The last name of the salesperson.
readOnly: true
type: string
phoneNumber:
description: Output only. The phone number of the salesperson.
readOnly: true
type: string
title: Salesperson
type: object
v1Order:
description: A sales order representing a request to activate products for a business.
properties:
addonActivations:
description: Output only. The list of addons with their corresponding activation status.
items:
$ref: '#/components/schemas/v1AddonActivation'
readOnly: true
type: array
agreements:
description: Output only. The terms that a customer has agreed to for this order.
items:
$ref: '#/components/schemas/v1Agreement'
readOnly: true
type: array
attachments:
description: Optional. Attachments on the order.
items:
$ref: '#/components/schemas/v1Attachment'
type: array
business:
$ref: '#/components/schemas/v1Business'
businessId:
description: Required. The business the order is being made for.
type: string
commonFields:
description: Optional. Common field answers for the packages.
items:
$ref: '#/components/schemas/v1CommonField'
type: array
contractDuration:
$ref: '#/components/schemas/salesv1Duration'
created:
description: Output only. Time the order was submitted by a salesperson.
format: date-time
readOnly: true
type: string
customFields:
description: Optional. Custom field answers for the packages.
items:
$ref: '#/components/schemas/v1CustomField'
type: array
customerAttachments:
description: Optional. Customer attachments on the order.
items:
$ref: '#/components/schemas/v1Attachment'
type: array
customerNotes:
description: Optional. Notes for the customer from the salesperson/admin.
type: string
customerRecipient:
$ref: '#/components/schemas/v1CustomerRecipient'
declinedReason:
title: 'DEPRECATED: declined_reason is now added to the StatusHistoryItem
The reason the order was declined'
type: string
enforceContractTerm:
description: Optional. Indicates whether to enforce the contract term.
type: boolean
expiryDate:
description: Output only. The expiry date for the order.
format: date-time
readOnly: true
type: string
extraFields:
description: Optional. Extra fields are the fields that a partner (or market) admin has added to their orders by default to be filled.
items:
$ref: '#/components/schemas/v1Field'
type: array
finalizedAt:
description: Output only. When the order's totals and taxes were locked in, used as the invoice issued date.
format: date-time
readOnly: true
type: string
fulfillmentStatus:
$ref: '#/components/schemas/v1FulfillmentOrderStatus'
hasFulfillment:
description: Output only. Determines if the sales order has any fulfillment forms associated with it.
readOnly: true
type: boolean
idempotencyKey:
description: Optional. Key used to prevent request duplication and allows safety when retrying requests.
type: string
invoiceId:
description: Output only. The billing invoice ID created from this order during the charge workflow.
readOnly: true
type: string
leasedToAutomations:
format: date-time
title: 'DEPRECATED: No longer supported'
type: string
lineItems:
description: Optional. Line items that make up the order.
items:
$ref: '#/components/schemas/v1LineItem'
type: array
marketId:
description: Optional. The market the order is being made under.
type: string
notes:
description: Optional. Notes for the partner administrator from the salesperson.
type: string
offerExpiry:
description: 'Output only. The most recently added date that the customer must approve this order by. This cannot be set on creation and only
when sending the order to a customer. It is valid that this is in the past for expired orders, or orders that have
made it through the customer approval stage.'
format: date-time
readOnly: true
type: string
opportunityIds:
description: Optional. The opportunities that are being used for the order.
items:
type: string
type: array
orderId:
description: Output only. The unique identifier of the order.
readOnly: true
type: string
orderIsSmbPayable:
description: Optional. Indicates whether the order should be charged to the SMB or not.
type: boolean
origin:
$ref: '#/components/schemas/v1Origin'
packages:
items:
$ref: '#/components/schemas/v1Package'
title: Packages in the order
type: array
partnerId:
description: Required. The partner the order is being made under.
type: string
paymentMethodToken:
description: Optional. An id used by BIY sales orders to associate a payment method.
type: string
productActivations:
description: Output only. The list of products with their corresponding activation status.
items:
$ref: '#/components/schemas/v1ProductActivation'
readOnly: true
type: array
products:
items:
$ref: '#/components/schemas/v1Product'
title: Products in the order
type: array
quoteId:
description: Optional. The id of the quote associated to the order if the order was created from a quote.
type: string
requestedActivation:
description: Optional. The requested activation date for the order's products.
format: date-time
type: string
retailSubscriptionGroups:
additionalProperties:
$ref: '#/components/schemas/v1RetailSubscriptionGroup'
description: Output only. The retail subscription groups on the order.
readOnly: true
type: object
salesperson:
$ref: '#/components/schemas/v1Salesperson'
salespersonId:
description: Required. The salesperson who submitted the order.
type: string
status:
$ref: '#/components/schemas/salesordersv1Status'
statusHistory:
description: Output only. The historical list of status updates that have taken place on the order.
items:
$ref: '#/components/schemas/v1StatusHistoryItem'
readOnly: true
type: array
tags:
description: Optional. Tags for orders.
items:
type: string
type: array
taxOptions:
description: Output only. Options for adding tax to orders.
items:
$ref: '#/components/schemas/v1TaxOptions'
readOnly: true
type: array
required:
- salespersonId
- partnerId
- businessId
title: Order
type: object
v1CustomField:
description: A set of custom field answers that are unique to a specific product or addon.
properties:
addonKey:
$ref: '#/components/schemas/v1AddonKey'
fields:
description: Optional. List of custom fields for a given product.
items:
$ref: '#/components/schemas/v1Field'
type: array
productId:
description: Optional. Unique identifier of the product that the custom questions belong to. Will not be provided if the custom field belongs to an addon.
type: string
title: Custom Field
type: object
salesv1Duration:
properties:
duration:
$ref: '#/components/schemas/v1DurationPeriod'
value:
description: Value for duration of time of a given operation.
format: int64
type: string
type: object
v1ListSalesOrderRequestSortDirection:
default: ASCENDING
enum:
- ASCENDING
- DESCENDING
title: The directions that a result set can be sorted in
type: string
v1Field:
description: An information field pertaining to a product, containing a question and its answer.
properties:
answer:
description: Optional. Response related to the question of the field_id.
type: string
description:
description: Optional. The description of the field.
type: string
fieldId:
description: Required. Unique identifier of a custom or common field.
type: string
fieldType:
$ref: '#/components/schemas/v1FieldType'
label:
description: Optional. The question for the custom or common field.
type: string
prefix:
description: Optional. For textbox fields, this string will be displayed in front of the textbox.
type: string
regexErrorMessage:
description: Optional. The error message displayed if the regex_validator does not match the answer.
type: string
regexValidator:
description: Optional. A regex string used to validate a field's answer.
type: string
suffix:
description: Optional. For textbox fields, this string will be displayed behind the textbox.
type: string
required:
- fieldId
title: Field
type: object
LineItemAppKey:
properties:
appId:
type: string
editionId:
type: string
packageId:
description: A package id is optional, it is used to group line items together in a package.
type: string
packageInstanceId:
description: 'A package instance id keeps track of the package instance that a line item belongs to. For example, if the customer purchases two packages that contain the same product,
this will identify which package the product belongs to.
This must be provided if a package id is provided, and should not be provided if there is no package id provided. The ID should be a uuid.'
type: string
type: object
v1Source:
default: SOURCE_INVALID
enum:
- SOURCE_INVALID
- SOURCE_SYSTEM
- SOURCE_SYSTEM_ADMIN
type: string
v1ListSalesOrderRequestFilters:
properties:
businessId:
title: Singular business filter
type: string
created:
$ref: '#/components/schemas/v1ListSalesOrderRequestDateRangeFilter'
expiryDate:
$ref: '#/components/schemas/v1ListSalesOrderRequestDateRangeFilter'
includeArchivedOrders:
title: Will include archived orders if true
type: boolean
marketId:
title: 'DEPRECATED: Singular market filter. Use market_ids instead. If both are supplied, market_ids will be used instead'
type: string
marketIds:
items:
type: string
title: Multi market request
type: array
orderId:
title: 'DEPRECATED: Singular order identifier to filter for. Use order_ids instead. If both are supplied, order_ids will be used instead'
type: string
orderIds:
items:
type: string
title: Multiple order identifiers to filter for
type: array
packageId:
title: Singular package filter
type: string
productEditionId:
title: Singular product edition filter
type: string
productId:
title: Singular product filter
type: string
requestedActivation:
$ref: '#/components/schemas/v1ListSalesOrderRequestDateRangeFilter'
salespersonId:
title: 'DEPRECATED: Singular salesperson filter. Use salesperson_ids instead. If both are supplied, salesperson_ids
will be used instead'
type: string
salespersonIds:
items:
type: string
title: Multiple salesperson filter
type: array
statuses:
items:
$ref: '#/components/schemas/salesordersv1Status'
title: Multiple status filter
type: array
tags:
items:
type: string
title: Tags required to be on the order
type: array
untagged:
description: Will filter for orders that don't have tags if true.
type: boolean
title: Filters to list sales orders based on given filter criterias
type: object
v1Origin:
default: SSC
enum:
- SSC
- VBC
- PC
- IMPORT
title: Origin of the create request, whether a salesperson or smb created it
type: string
v1RetailSubscriptionGroupDisplayOption:
default: DISPLAY_OPTION_INVALID
enum:
- DISPLAY_OPTION_INVALID
- SHOW_CONTENT_SHOW_PRICES
- SHOW_CONTENT_HIDE_PRICES
- HIDE_CONTENT_HIDE_PRICES
type: string
v1Revenue:
properties:
revenueComponents:
items:
$ref: '#/components/schemas/v1RevenueComponent'
type: array
title: Revenue represents the retail price of an order
type: object
v1GetSalesOrderRequest:
properties:
businessId:
title: The business the order belongs to
type: string
orderId:
title: Unique identifier of an order
type: string
projectionFilter:
$ref: '#/components/schemas/v1SalesOrderProjectionFilter'
title: Containing information to get an order
type: object
googlerpcStatus:
properties:
code:
format: int32
type: integer
details:
items:
$ref: '#/components/schemas/protobufAny'
type: array
message:
type: string
type: object
v1AddonKey:
properties:
addonId:
title: Unique identifier of an addon
type: string
appId:
title: The parent app for the addon
type: string
type: object
v1RetailSubscriptionGroup:
properties:
displayOption:
$ref: '#/components/schemas/v1RetailSubscriptionGroupDisplayOption'
iconUrl:
title: The icon url of the retail subscription group
type: string
name:
title: The name of the retail subscription group
type: string
sourceIdentifier:
title: The source identifier of the retail subscription group
type: string
type: object
v1RevenueComponent:
properties:
isStartingRevenue:
title: The indication if this is only the starting price or the actual price
type: boolean
period:
$ref: '#/components/schemas/v1RevenuePeriod'
value:
description: The value in the smallest common currency unit i.e. cents. Therefore 4000 would represent $40.00.
format: int64
type: string
type: object
v1CommonField:
description: A field answer that may be shared across multiple products or addons.
properties:
addonKeys:
description: Optional. List of addon keys that share the common field.
items:
$ref: '#/components/schemas/v1AddonKey'
type: array
field:
$ref: '#/components/schemas/v1Field'
productIds:
description: Optional. List of unique product identifiers that share the common field.
items:
type: string
type: array
title: Common Field
type: object
v1RevenuePeriod:
default: ONETIME
enum:
- ONETIME
- DAILY
- WEEKLY
- BIWEEKLY
- MONTHLY
- YEARLY
type: string
salesordersv1Status:
default: SUBMITTED
description: "- SUBMITTED: Submitted is the status when an order is ready for admin approval\n - APPROVED: Approved is the status when an order is has been approved by an admin\n - DECLINED: Declined is the status when an order is has been declined by an admin or a smb\n - DRAFTED: Drafted is currently not used but would be the state the order can be created in before it's sent to someone else\n - FULFILLED: Fulfilled is the status when an order has had all of the products activated\n - PROCESSING: Processing is the status when an order is currently activating the products\n - ACTIVATION_ERRORS: ActivationErrors is the status when an order is has encountered an error when activating products\n - ARCHIVED: Archived is the status to use when hiding the orders from the ui unless explicitly asked for\n - SUBMITTED_FOR_CUSTOMER_APPROVAL: SubmittedForCustomerApproval is the status when an order has been sent to a SMB to approve\n - CANCELLATION_REQUESTED: CancellationRequested is the status when a sales person requests to cancel a full order\n - CANCELLED: Cancelled is the status when a after an admin has approved a Cancellation\n - SCHEDULED_ACTIVATION: ScheduledActivation is the status of an order after the admin requests to activate products on the contract start date\n - AWAITING_PAYMENT: AwaitingPayment is the status of a BIY order on creation before we attempt to charge\n - PROCESSING_PAYMENT: ProcessingPayment is the status of a BIY order while waiting on confirmation for the charge\n - RESUBMITTED: Resubmitted is the status of an order when it has been resubmitted for admin approval, after being submitted at least one other time in the past"
enum:
- SUBMITTED
- APPROVED
- DECLINED
- DRAFTED
- FULFILLED
- PROCESSING
- ACTIVATION_ERRORS
- ARCHIVED
- SUBMITTED_FOR_CUSTOMER_APPROVAL
- CANCELLATION_REQUESTED
- CANCELLED
- SCHEDULED_ACTIVATION
- AWAITING_PAYMENT
- PROCESSING_PAYMENT
- RESUBMITTED
title: The different statuses representing any given state an order can be in
type: string
v1LineItem:
properties:
appKey:
$ref: '#/components/schemas/LineItemAppKey'
autoBillable:
title: 'DEPRECATED: use non_billable instead'
type: boolean
billToRecipientId:
description: 'The billing recipient for this line item.
When set to a partner_id, wholesale billing applies (default behavior).
When set to an account_group_id, retail billing is triggered for that customer.
When empty, defaults to the merchant (partner) paying wholesale.'
type: string
billingPeriod:
$ref: '#/components/schemas/v1BillingPeriod'
cost:
$ref: '#/components/schemas/v1Cost'
currency:
$ref: '#/components/schemas/v1Currency'
currencyCode:
description: The 3-letter currency code defined in ISO 4217.
type: string
currentRevenue:
$ref: '#/components/schemas/v1Revenue'
customPrices:
items:
$ref: '#/components/schemas/v1CustomPriceMapping'
title: The custom price mapping for variable priced products in a package in the order
type: array
initialRevenue:
$ref: '#/components/schemas/v1Revenue'
isTrial:
title: Only used when AppKey is the identifier
type: boolean
nonBillable:
title: 'Indicates whether this line item should be billable or not
If true, the item will not be billed'
type: boolean
packageId:
type: string
quantity:
format: int64
type: string
retailSubscriptionGroupId:
title: The retail subscription group id that this line item belongs to (if any)
type: string
taxRateIds:
items:
type: string
title: The tax rate ids that apply to this line item
type: array
type: object
v1ListSalesOrderRequest:
properties:
cursor:
title: current cursor position
type: string
filters:
$ref: '#/components/schemas/v1ListSalesOrderRequestFilters'
pageSize:
format: int64
title: 'size of the page to list
0 assumes the default page size'
type: string
partnerId:
title: partner id for partner making request
type: string
sortOption:
$ref: '#/components/schemas/v1ListSalesOrderRequestSortOption'
title: Request to get a list of orders for a partner
type: object
v1ListSalesOrderRequestDateRangeFilter:
properties:
beginRange:
format: date-time
type: string
endRange:
format: date-time
type: string
title: Begin and end of date range
type: object
v1Attachment:
description: A file attachment associated with an order.
properties:
name:
description: Required. The name of the attachment.
type: string
url:
description: Required. The URL to the attachment.
type: string
required:
- name
- url
title: Attachment
type: object
v1Cost:
properties:
customPrice:
format: int64
title: The custom price of the order item. Can only be changed if the application supports custom pricing
type: string
title: Cost represents the wholesale cost of an order
type: object
v1UserRole:
default: USER_ROLE_UNSPECIFIED
enum:
- USER_ROLE_UNSPECIFIED
- USER_ROLE_ADMIN
- USER_ROLE_SALESPERSON
- USER_ROLE_CLIENT
type: string
v1ListSalesOrderResponse:
properties:
hasMore:
title: Whether or not more results exist
type: boolean
nextCursor:
title: A cursor that can be provided to retrieve the next page of results
type: string
orders:
items:
$ref: '#/components/schemas/v1Order'
title: list of the requested sales order data
type: array
totalResults:
format: int64
title: The number of total results there are
type: string
title: Response to get a list of orders for a partner
type: object
v1CustomPriceMapping:
properties:
customPrice:
format: int64
title: The custom price value of the product
type: string
productId:
title: The ID of the product
type: string
title: Representing custom prices for variable priced products in a package
type: object
v1FieldType:
default: NOT_SPECIFIED
enum:
- NOT_SPECIFIED
- TEXT
- TEXTAREA
- DROPDOWN
- CHECKBOX
- FILE
- VBCUSER
title: Available types that a field can be
type: string
v1Currency:
default: USD
description: '- ZAR: Do not add to this list. If more currencies are required currency_code should be used instead'
enum:
- USD
- CAD
- EUR
- AUD
- GBP
- NZD
- ZAR
type: string
v1StatusHi
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vendasta/refs/heads/main/openapi/vendasta-salesorders-api-openapi.yml