API Documentation
Orders - Submitting an Order
The POST orders
endpoint is used to post new orders to the system.
You can submit orders utilizing the PartnerBillingKey
which is essentially submitting an order on credit.
When you have a billing method connected and you have orders submitted using the PartnerBillingKey
, our system will charge you using your connected billing method and push your orders to production.
You can connect a billing method by adding your payment information under the Billing tab in the Settings of the Gooten Admin. You have the option to provide a payment method of credit or with a PayPal account.

Gooten will accept orders even if you do not have a billing method connected, but please be aware that orders accepted without a billing method connected will end up in the Payment Issue Status. Once you connect a billing method, orders in this status will be pushed forward.
Note that there are places within the order and each item to put ancillary information. For instance, both the order object and item object have SourceId
to store your internal ID, as well as Meta
to store any other properties you wish to save against the order/items.
Avoiding Duplicate Orders
Before getting to the different types of payment methods we support, know that we have a special method that will help you make sure you never submit the same order twice. What a relief!
How it works:
- You pass in your internal order ID into the
SourceId
field - At the root of the order object, you set
IsPartnerSourceIdUnique
totrue
And that’s it. If you already have an order with that SourceId
in our system, we will block the order submission.
Selecting a Shipping Method
There are two ways of specifying shipping methods for items.
Item.ShipType
is by far the easiest. Pass in a string value of standard
, expedited
or overnight
and subject to availability, that method will just be selected. If you pass in a value that is not available, an error will be thrown notifying you.
Item.ShipCarrierMethodId
offers a more granular selection. In order to get an integer value to pass into that field, please see the documentation for finding shipping options.
Either ShipType
or ShipCarrierMethodId
need to be passed for each item in the order; you never need to pass both.
Submitting on Credit
IsInTestMode
- optional - a boolean which tells Gooten API not to process the payment (used for testing)ShipToAddress
object, with the following properties:FirstName
- required - the first name of the userLastName
- required - the last name of the userLine1
- required - shipping address line 1Line2
- optional - shipping address line 2City
- required - shipping cityState
- optional - shipping state (if applicable)PostalCode
- required - shipping postal codeCountryCode
- required - shipping 2-letter country codeEmail
- required - user’s emailPhone
- required - user’s phone
BillingAddress
object, with the following properties:FirstName
- required - the first name of the userLastName
- required - the last name of the userPostalCode
- required - shipping postal codeCountryCode
- required - shipping 2-letter country code
Items
an array of objects containing the following properties:SKU
- required - SKU of product variantShipCarrierMethodId
- required ifShipType
not used -Id
of shipping carrier method from the/shippingprices
endpointShipType
- required ifShipCarrierMethodId
not used - a type of shipping, with accepted values:standard
,expedited
, orovernight
Quantity
- required - the number of items with this SKUImages
- required - list of images, each containing aUrl
to a publicly-accessible image and optionally anIndex
to indicate image order, when neededMeta
- optional - a map of key/value pairs where you can submit any extra info you want to be attached to the itemSourceId
- optional - a space to put your internal order item id
Payment
object, with the following properties:PartnerBillingKey
- a private key that should never be shared or used client-side!
Meta
- optional - a map of key/value pairs where you can submit any extra info you want to be attached to the orderSourceId
- optional - a space to put your internal order idIsPartnerSourceIdUnique
- optional - a boolean that sets if you want us to block orders where a previous order has been submitted with the sameSourceId
{
"ShipToAddress": {
"FirstName": "Gooten",
"LastName": "Test",
"Line1": "222 Broadway",
"City": "New York",
"State": "NY",
"CountryCode": "US",
"PostalCode": "10038",
"IsBusinessAddress": false,
"Phone": "1234567890",
"Email": "test@gooten.com"
},
"BillingAddress": {
"FirstName": "Gooten",
"LastName": "Test",
"Line1": "222 Broadway",
"City": "New York",
"State": "NY",
"CountryCode": "US",
"PostalCode": "10038",
"IsBusinessAddress": false,
"Phone": "1234567890",
"Email": "test@gooten.com"
},
"IsInTestMode": true,
"Items": [
{
"Quantity": 1,
"SKU": "PhoneCase-GalaxyNote2-Matte",
"ShipCarrierMethodId": 1,
"Images": [
{
"Url": "https:\/\/printio-widget-live.s3.amazonaws.com\/200E4604-4CD5-4E0C-A131-9F5AF25006E6.jpg",
"Index": 0,
"ThumbnailUrl": "https:\/\/printio-widget-live.s3.amazonaws.com\/200E4604-4CD5-4E0C-A131-9F5AF25006E6.jpg"
}
]
},
{
"Quantity": 2,
"SKU": "PhoneCase-Glossy-GalaxyNote3",
"ShipCarrierMethodId": 1,
"Images": [
{
"Url": "https:\/\/printio-widget-live.s3.amazonaws.com\/200E4604-4CD5-4E0C-A131-9F5AF25006E6.jpg",
"Index": 0,
"ThumbnailUrl": "https:\/\/printio-widget-live.s3.amazonaws.com\/200E4604-4CD5-4E0C-A131-9F5AF25006E6.jpg"
}
],
"Meta":{
"key1":"value"
}
}
],
"Payment": {
"PartnerBillingKey":"super-secret!"
},
"Meta":{
"key1":"value"
}
}
This yields the response:
{
"Id": "7-023c9dfe-2e18-4c01-93dd-883e9f2d64d5"
}
If you're using Shopify, Etsy, or WooCommerce, these platforms have a built-in checkout function. This function will charge your customers and then our system will charge you when the order is fully synced and pushed to production.
If you have a custom website, you must build your own checkout using any method that you prefer as Gooten does not collect payments from your customers.