Skip to main content

FBN Inbound API Overview

The FBN Inbound API allows partners to create and manage ASN shipments for forward deployment into FBN warehouses. Partner identity is resolved from the authentication context — all operations are scoped to the authenticated partner.


Base URL

All API requests are sent to:

https://noon-api-gateway.noon.partners/inbound

All endpoints are prefixed with /v1. For example:

POST https://noon-api-gateway.noon.partners/inbound/v1/shipment/create

Authentication

The FBN Inbound API uses the same authentication mechanism as all other Noon Partner APIs. Partner identity is resolved automatically from your authentication headers — all operations are scoped to your account.

See Authenticating Your Requests for instructions on obtaining and using credentials.


Rate Limits

Limit typeValue
Max requests per minute1,500
Burst limit1,500 requests per minute

Requests exceeding the rate limit return HTTP 429 Too Many Requests. Implement exponential backoff when retrying.


Conventions

Timestamps

All timestamps use ISO 8601 format in UTC:

2026-03-09T14:30:00Z

Dates

Scheduled dates and other date-only fields use YYYY-MM-DD format:

2026-03-09

Country Codes

Country codes follow the two-letter ISO 3166-1 alpha-2 standard (e.g., AE, SA, EG).

Pagination

Paginated endpoints return a next_token field in the response. Pass this token in the next request to fetch the following page. When next_token is null or absent, you have reached the last page.

GET /v1/shipment/list?next_token=<token_from_previous_response>&page_size=50

Idempotency

CreateShipment is idempotent: retrying with the same exref_nr and shipment_type returns the existing ASN rather than creating a duplicate.


Inbound Lifecycle Flow

CREATE (Header) → ADD ITEMS → SEAL → CHECK AVAILABILITY → SCHEDULE → RECEIVING → INBOUNDED

See Appendix A for full status descriptions and all possible transitions.


Workflow Overview

Step 1 — Create a shipment

Create an ASN header using CreateShipment. The ASN starts in CREATED status with no items.

Step 2 — Check eligible items

Use the ListEligibleItems endpoint to see which of your catalog items are eligible for FBN inbound. Only items with a mapped barcode, title, and uploaded image are eligible.

Step 3 — Add items

Add items to the draft ASN using UpdateShipmentItems. You can call this multiple times to add or update quantities (upsert). Maximum 1,000 items per call.

Step 4 — Seal the shipment

Finalize the ASN using UpdateShipmentStatus with STATUS_ACTION_SEAL. After sealing, items cannot be modified. Status transitions from CREATEDSEALED.

Step 5 — Check slot availability

Retrieve eligible warehouses and their available check-in dates and time slots using GetSlotAvailability.

Step 6 — Schedule the shipment

Book a warehouse slot using ScheduleShipment with the warehouse code, date, and time slot from the previous step. Status transitions from SEALEDSCHEDULED.

Step 7 — Deliver inventory

Physically deliver the shipment to the warehouse at the scheduled time. Noon will update the ASN to INBOUNDED after processing.

For full endpoint details, see the FBN Inbound API Reference.


Key Constraints

warning
  • Bulky and non-bulky items cannot be mixed in the same ASN. Each ASN must contain items of the same storage type.
  • One FBN warehouse per country is designated for inbound. Use GetSlotAvailability to find the correct warehouse for each country.
  • Maximum 1,000 items per API call for item add/delete operations.
  • The FBN_GLOBAL shipment type is used for ERP integrations.

Error Handling

All APIs return a standardized error response:

{
"detail": {
"code": "MACHINE_READABLE_CODE",
"message": "Human-readable description of what went wrong"
}
}

See Appendix B for the full list of error codes per endpoint, and Appendix C for example error payloads.


Appendix A: ASN Status Flow

         /--> CANCELED          /--> CANCELED
/ /
CREATED --> SEALED --> SCHEDULED --> RECEIVING --> INBOUNDED
\
\--> EXPIRED
StatusDescription
ASN_STATUS_CREATEDDraft ASN. Items can be added, updated, or deleted.
ASN_STATUS_SEALEDFinalized. Items locked. Ready for scheduling.
ASN_STATUS_SCHEDULEDSlot reserved. Awaiting physical delivery.
ASN_STATUS_RECEIVINGGoods are being received at the warehouse.
ASN_STATUS_INBOUNDEDGoods fully received and put away.
ASN_STATUS_CANCELEDCanceled by the partner. Terminal state.
ASN_STATUS_EXPIREDNot sealed or scheduled within the required window. Terminal state.

Appendix B: Error Code Reference

CodeHTTP StatusAPIsDescription
UNAUTHORIZED401AllMissing or invalid authentication token.
FORBIDDEN403AllPartner does not own this ASN or country mismatch.
WRONG_COUNTRY403Create, Status (seal)Country code in request does not match the authenticated country.
ASN_NOT_FOUND404AllASN reference does not exist.
VALIDATION_ERROR422AllMalformed payload — missing required fields, wrong types.
ITEM_VALIDATION_FAILED400Update Items, Delete ItemsOne or more items failed catalog validation (see details array).
ITEMS_LIMIT_EXCEEDED400Update Items, Delete ItemsRequest exceeds the maximum of 1,000 items per call.
PARTNER_SKU_NOT_FOUNDUpdate Items, Delete Items(Item detail) partner_sku could not be resolved for this partner.
INACTIVE_PSKU_CODEUpdate Items(Item detail) partner_sku resolves to an inactive product.
NO_MAPPED_PBARCODEUpdate Items(Item detail) partner_sku has no active barcode mapping.
INVALID_STORAGE_TYPEUpdate Items(Item detail) Invalid storage_type.
INVALID_ASN_STATUS409Status, Update Items, Delete Items, Schedule, AvailabilityASN is not in the required status for this operation.
CAPACITY_EXCEEDED400ScheduleNo available capacity for the requested date/slot.
CANNOT_CANCEL409Status (cancel)ASN is manifested or inbound has started.
CANNOT_RESCHEDULE409Status (reschedule)Scheduled slot has already started.
RATE_LIMIT_EXCEEDED429AllToo many requests. Retry with exponential backoff.
INTERNAL_ERROR500AllUnexpected server error. Retry with backoff.

Appendix C: Common Errors Across All APIs

401 Unauthorized

{
"detail": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid authentication token"
}
}

422 Unprocessable Entity

{
"detail": {
"code": "VALIDATION_ERROR",
"message": "field required",
"details": [
{"field": "asn_nr", "message": "field required"}
]
}
}

500 Internal Server Error

{
"detail": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred. Please try again later."
}
}