Create Fulfillment Order
Version | Date | Created / Updated | Notes |
---|---|---|---|
v1.0 | 05.03.2025 | Bogomil Pavlov | First publish |
v1.1 | 20.03.2025 | Bogomil Pavlov | Delivery Window changes |
v1.2 | 13.05.2025 | Bogomil Pavlov | Remove Mapping for Per Unit fields, Additional Mappings and State logic |
v1.3 | 09.06.2025 | Bogomil Pavlov | Additional Validation |
v1.4 | 30.06.2025 | Bogomil Pavlov | Include featureConstraints |
We want to have the following triggers when creating orders to MCF:
Amazon MCF Connector > Create Orders = Yes Order > Order Status = Ready For Shipping Order > Connector Order ID = ““ OR Product In Order > Connector Order ID = ““ Product In Order > Connector Exported = No Order > Connector Error = ““
If we have bundle products we want to include the products which are based on the setup of Amazon MCF Connector > Order Items for Export. The available options are:
-Only Bundle Products -Only Component Products (Default Value) -Both type of products
Please note all products which are not bundles or components are always selected
<v1.3> As additional validation we want to add if we have an order and even one of the products are with missing Product On Orders > Seller to NOT export the order and return an internal error “There are products with missing Seller” </v1.3>
API Call : POST /fba/outbound/2020-07-01/fulfillmentOrders
Sample Request:
POST [https://sellingpartnerapi-na.amazon.com](https://sellingpartnerapi-na.amazon.com/fba/outbound/2020-07-01/features?marketplaceId=ATVPDKIKX0DER)/fba/outbound/2020-07-01/fulfillmentOrders
Body:
{
"destinationAddress": {
"addressLine1": "<string>",
"countryCode": "<string>",
"stateOrRegion": "<string>",
"name": "<string>",
"postalCode": "<string>",
"addressLine2": "<string>",
"addressLine3": "<string>",
"city": "<string>",
"districtOrCounty": "<string>",
"phone": "<string>"
},
"displayableOrderComment": "<string>",
"displayableOrderDate": "<dateTime>",
"displayableOrderId": "<string>",
"items": [
{
"quantity": "<integer>",
"sellerFulfillmentOrderItemId": "<string>",
"sellerSku": "<string>",
"giftMessage": "<string>",
"displayableComment": "<string>",
"fulfillmentNetworkSku": "<string>",
"perUnitDeclaredValue": {
"currencyCode": "<string>",
"value": "<string>"
},
"perUnitPrice": {
"currencyCode": "<string>",
"value": "<string>"
},
"perUnitTax": {
"currencyCode": "<string>",
"value": "<string>"
}
},
{
"quantity": "<integer>",
"sellerFulfillmentOrderItemId": "<string>",
"sellerSku": "<string>",
"giftMessage": "<string>",
"displayableComment": "<string>",
"fulfillmentNetworkSku": "<string>",
"perUnitDeclaredValue": {
"currencyCode": "<string>",
"value": "<string>"
},
"perUnitPrice": {
"currencyCode": "<string>",
"value": "<string>"
},
"perUnitTax": {
"currencyCode": "<string>",
"value": "<string>"
}
}
],
"sellerFulfillmentOrderId": "<string>",
"shippingSpeedCategory": "Standard",
"marketplaceId": "<string>",
"deliveryWindow": {
"endDate": "<dateTime>",
"startDate": "<dateTime>"
},
"deliveryPreferences": {
"deliveryInstructions": "<string>",
"dropOffLocation": {
"type": "BICYCLE_BASKET",
"attributes": {
"Loremc57": "<string>",
"ad_6": "<string>"
}
}
},
"fulfillmentAction": "Hold",
"fulfillmentPolicy": "FillAll",
"codSettings": {
"isCodRequired": "<boolean>",
"codCharge": {
"currencyCode": "<string>",
"value": "<string>"
},
"codChargeTax": {
"currencyCode": "<string>",
"value": "<string>"
},
"shippingCharge": {
"currencyCode": "<string>",
"value": "<string>"
},
"shippingChargeTax": {
"currencyCode": "<string>",
"value": "<string>"
}
},
"shipFromCountryCode": "<string>",
"notificationEmails": [
"<string>",
"<string>"
],
"featureConstraints": [
{
"featureName": "<string>",
"featureFulfillmentPolicy": "Required"
},
{
"featureName": "<string>",
"featureFulfillmentPolicy": "Required"
}
],
"paymentInformation": [
{
"paymentTransactionId": "<string>",
"paymentMode": "<string>",
"paymentDate": "<dateTime>"
},
{
"paymentTransactionId": "<string>",
"paymentMode": "<string>",
"paymentDate": "<dateTime>"
}
]
}
Request Mapping: Please note everything which is N/A can be excluded from the payload.
Amazon Field | Required | Hemi Field | Comment | |||
---|---|---|---|---|---|---|
destinationAddress |
||||||
addressLine1 |
Yes | Order > Shipping Street 1 | ||||
countryCode |
Yes | Order > Shipping Country Code | ||||
stateOrRegion |
Yes | Order > Shipping State Province | <v1.2> |
We want to add additional mapping and map the Order > Shipping State Province
against the "State Name - State Code” look up list and map the State Name
.
If we have a match we want to push State Code
if there is no match we simply send Order > Shipping State Province
</v1.2> |
| | name
| | | Yes | Order > Shipping Buyer Name | |
| | postalCode
| | | Yes | Order > Shipping Postal Code | |
| | addressLine2
| | | No | Order > Shipping Street 2 | |
| | addressLine3
| | | No | N/A | |
| | city
| | | No | Order > Shipping City | |
| | districtOrCounty
| | | No | N/A | |
| | phone
| | | No | Order > Shipping Phone | |
| displayableOrderComment
| | | | Yes | Channel Amazon MCF Connector > Order Comment
OR
Order > Note | Order > Note is with priority |
| displayableOrderDate
| | | | Yes | Order > Order Created Time | Date time format - "2022-10-07T14:49:45Z” |
| displayableOrderId
| | | | Yes | <v1.2>Order > Marketplace Order Id</v1.2> | |
| items
| | | | | | |
| | quantity
| | | Yes | Product In Order > Quantity | |
| | sellerFulfillmentOrderItemId
| | | Yes | Product In Order > Id | |
| | sellerSku
| | | Yes | Product In Order > Item SKU | |
| | giftMessage
| | | No | N/A | |
| | displayableComment
| | | No | Product In Order > Note | |
| | fulfillmentNetworkSku
| | | No | N/A | |
| | <v1.2>perUnitDeclaredValue
| | | | N/A | |
| | | currencyCode
| | No | N/A | Order > Order Currency |
| | | value
| | No | N/A | Product In Order > Original Price |
| | perUnitPrice
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| | perUnitTax
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| sellerFulfillmentOrderId
| | | | Yes | <v1.2>Order > Marketplace Order Id</v1.2> | |
| shippingSpeedCategory
| | | | Yes | Channel Amazon MCF Connector Services
OR
Channel Amazon MCF Connector > Default Shipping Speed Category | We want to first check if we have any mappings added in Amazon MCF Connector Services and if we match the Order > Shipping Service we want to pick the shippingSpeedCategory
from the mapping otherwise we use the Amazon MCF Connector > Default Shipping Speed Category |
| marketplaceId
| | | | | Channel Amazon MCF Connector > Country
| Based on Channel Amazon MCF Connector > Country
we get the correct MarketplaceId |
| deliveryWindow
| | | | | | |
| | endDate
| | | No | Order > Delivery By Date | We want to push the deliveryWindow
only if both endDate
and startDate
are presented otherwise <v1.1>we do not include it in the payload.</v1.1>
Date time format- "2022-10-07T14:49:45Z” |
| | startDate
| | | No | Order > Ship By Date | We want to push the deliveryWindow
only if both endDate
and startDate
are presented otherwise <v1.1>we do not include it in the payload.</v1.1>
Date time format - "2022-10-07T14:49:45Z” |
| deliveryPreferences
| | | | | | |
| | deliveryInstructions
| | | No | N/A | This feature is currently supported only in the JP marketplace and not applicable for other marketplaces. |
| | dropOffLocation
| | | | | |
| | | type
| | No | N/A | |
| | | attributes
| | | | |
| | | | Loremc57
| No | N/A | |
| | | | ad_6
| No | N/A | |
| fulfillmentAction
| | | | No | Hardcoded as “Ship” | Specifies whether the fulfillment order should ship now or have an order hold put on it.
We will support only ship for the moment |
| fulfillmentPolicy
| | | | No | Channel Amazon MCF Connector > Fulfillment Policy | FillOrKill- If an item in a fulfillment order is determined to be unfulfillable before any shipment in the order has acquired the status of Pending (the process of picking units from inventory has begun), then the entire order is considered unfulfillable. However, if an item in a fulfillment order is determined to be unfulfillable after a shipment in the order has acquired the status of Pending, Amazon cancels as much of the fulfillment order as possible. Refer to the FulfillmentShipment object for shipment status definitions.
FillAll - All fulfillable items in the fulfillment order are shipped. The fulfillment order remains in a processing state until all items are either shipped by Amazon or cancelled by the seller.
FillAllAvailable - All fulfillable items in the fulfillment order are shipped. All unfulfillable items in the order are cancelled. |
| codSettings
| | | | | | |
| | isCodRequired
| | | No | N/A | |
| | codCharge
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| | codChargeTax
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| | shippingCharge
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| | shippingChargeTax
| | | | | |
| | | currencyCode
| | No | N/A | |
| | | value
| | No | N/A | |
| shipFromCountryCode
| | | | No | N/A | |
| notificationEmails
| | | | No | Order > Buyer Mail | We want to add the email only if we have Amazon MCF Connector > Send Customer Email = Yes |
| featureConstraints
| | | | | | |
| | featureName
| | | No | <v1.4>“BLANK_BOX” | If we have Channel Amazon MCF Connector > Use Blank Box = Yes then we want to push the featureConstraints
otherwise we exclude it from the payload.
By default the want to have Channel Amazon MCF Connector > Use Blank Box = No |
| | featureFulfillmentPolicy
| | | No | “Required” | </v1.4> |
| paymentInformation
| | | | | | |
| | paymentTransactionId
| | | Yes | Order Payment > Transaction Id
OR
Order > Marketplace Order Id | If Order Payment > Transaction Id is missing we want to pick Order > Marketplace Order Id
We want to pick the transaction id from the order payment > type = payment row. If we have more than one we pick the lowest id. | paymentMode |
Yes | Order > Order Payment Method OR Channel Amazon MCF Connector > Payment Mode | If Order > Order Payment Method is missing we want to pick Channel Amazon MCF Connector > Payment Mode | ||||
---|---|---|---|---|---|---|---|---|
paymentDate |
Yes | Order Payment > Payment Date |
OR Orders > Order Created Time | If the Order Payment > Payment Date is missing we want to use Orders > Order Created Time
We want to pick the date from the order payment > type = payment row. If we have more than one we pick the lowest id.
Date time format- "2022-10-07T14:49:45Z” |
Response 200:
{}
Response Mapping:
If successful since we are not receiving any unique Amazon order id or anything in the response we want to add our Order > ID
and Order > Marketplace Order Id
concatenated with - as Orders > Connector Order ID
and Product In Order > Connector Order ID
Example: Order > ID
-Order > Marketplace Order Id
We will also need to update Product in Order > Connector Exported field
= Yes
Sample Error Response:
{
"errors": [
{
"code": "Unauthorized",
"message": "Access to requested resource is denied.",
"details": "The access token you provided has expired."
}
]
}
If we receive an error during the creation we need to store the error (code - message) in Order > Connector Error with the relevant error message