Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions content/_snippets/_moving-fulfillment-orders.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Moving a fulfillment order items to a new fulfillment location is a common order



#### Move Fulfillment Order Flow
### Move Fulfillment Order Flow
```mermaid
stateDiagram-v2
direction LR
Expand All @@ -20,7 +20,7 @@ Moving fulfillment order items is a 2-step process:
<Callout type="info">
Fulfillment Orders must be `"status": "open"` to be moved to a new location. If the fulfillment order you want to move is `"status": "processing"`, use the [cancellationRequestSend](/docs/admin-api/reference/fulfillment/cancellationRequestSend) endpoint to request cancellation with the current fulfillment location before moving to a new location.
</Callout>
#### Retrieve Available Locations
### Retrieve Available Locations

Fulfillment order line items often contain products that are in stock at many locations where they could be fulfilled from. To check what locations fulfillment order items are available at, use the [availableLocationsRetrieve](/docs/admin-api/reference/fulfillment/availableLocationsRetrieve) endpoint.

Expand All @@ -46,7 +46,7 @@ Fulfillment order line items often contain products that are in stock at many lo
}
```

#### Move a Fulfillment Order
### Move a Fulfillment Order

Once the available locations fulfillment order line items can move, use the [fulfillmentOrdersMove](/docs/admin-api/reference/fulfillment/fulfillmentOrdersMove) endpoint to move all or some of the line items.

Expand Down
4 changes: 2 additions & 2 deletions content/_snippets/_splitting-fulfillment-orders.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Splitting a fulfillment order moves some items onto a second fulfillment order a

Use it when a location can ship part of what it was sent but not all of it. Split off items that cannot be shipped and then fulfill the remaining items. The split items become their own fulfillment order, which can be moved, held, or cancelled separately. The alternative is rejecting the whole request, which sends the order back to the merchant to amend and request fulfillment again.

#### Split a Fulfillment Order
### Split a Fulfillment Order

Use the [fulfillmentOrdersSplit](/docs/admin-api/reference/fulfillment/fulfillmentOrdersSplit) endpoint, passing the line items and quantities to move onto the new fulfillment order. Both `id` and `quantity` are required for each entry.

Expand Down Expand Up @@ -37,7 +37,7 @@ The response returns both fulfillment orders, so you can see the resulting split

The split fulfillment order inherits the original's status, request status, shipping address, shipping method, and assigned location. A `fulfillment_order_split` event is added to the order timeline.

#### Split Rules
### Split Rules

- Each line must belong to the fulfillment order being split.
- `quantity` cannot exceed that line's `fulfillable_quantity`.
Expand Down
10 changes: 5 additions & 5 deletions content/capabilities.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ capabilities:
- /docs/storefront/event-tracking
api_operations: [tag:storefront]
webhooks: []
skills: [next-theme-dev, next-theme-figma]
skills: [next-theme-dev, next-theme-figma, next-theme-design]
status: available
last_verified: 2026-09-03

Expand Down Expand Up @@ -437,15 +437,15 @@ capabilities:
- id: agent-skills
title: AI agent skills
summary: >-
Pre-built skills that give AI coding agents platform knowledge (theme development,
campaign provisioning and setup, bulk operations, daily ops scans), installable with
the skills CLI or loadable as plain markdown.
Pre-built skills that give AI coding agents platform knowledge (Figma and live-site
theme handoffs, theme development, campaign provisioning and setup, bulk operations,
daily ops scans), installable with the skills CLI or loadable as plain markdown.
audiences: [developer]
operator_docs: []
developer_docs:
- /docs/skills
api_operations: []
webhooks: []
skills: [next-theme-figma, next-theme-dev, next-campaigns-create, next-campaigns-setup, next-bulk-fulfill, next-bulk-move, next-bulk-subscription, next-ops-scan]
skills: [next-theme-figma, next-theme-design, next-theme-dev, next-campaigns-create, next-campaigns-setup, next-bulk-fulfill, next-bulk-move, next-bulk-subscription, next-ops-scan]
status: available
last_verified: 2026-09-14
14 changes: 7 additions & 7 deletions content/docs/admin-api/guides/exports.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The Exports API allows you to generate and download bulk data exports from your
Exports are processed asynchronously. After creating an export, you'll need to poll for completion before downloading the file.
</Callout>

### Export Flow
## Export Flow

```mermaid
sequenceDiagram
Expand All @@ -32,7 +32,7 @@ Creating and downloading an export is a 3-step process:
2. Create a new export using the [exportsCreate](/docs/admin-api/reference/exports/exportsCreate) endpoint with your desired type and date range.
3. When you receive the `export.created` webhook, download the file using the [exportsDownloadRetrieve](/docs/admin-api/reference/exports/exportsDownloadRetrieve) endpoint.

### Available Export Types
## Available Export Types

Use the [exportsTypesRetrieve](/docs/admin-api/reference/exports/exportsTypesRetrieve) endpoint to list all available export types, or reference the table below.

Expand All @@ -52,7 +52,7 @@ Use the [exportsTypesRetrieve](/docs/admin-api/reference/exports/exportsTypesRet
| `fulfillment_list` | Fulfillments |
| `fulfillment_line_items` | Fulfillment Line Items |

### Create an Export
## Create an Export

To create a new export, send a POST request to the [exportsCreate](/docs/admin-api/reference/exports/exportsCreate) endpoint with the export `type` and date range.

Expand All @@ -78,7 +78,7 @@ The response returns the export object with a `pending` status.
}
```

### Poll Export Status
## Poll Export Status

After creating an export, poll the [exportsRetrieve](/docs/admin-api/reference/exports/exportsRetrieve) endpoint until the `status` changes from `pending` to `available`.

Expand All @@ -98,7 +98,7 @@ After creating an export, poll the [exportsRetrieve](/docs/admin-api/reference/e
Avoid polling too frequently. Checking every couple of minutes is sufficient for pending exports. For a more efficient approach, subscribe to the `export.created` [webhook event](/docs/webhooks) to be notified immediately when an export is available for download.
</Callout>

### Download Export File
## Download Export File

Once the export status is `available`, use the [exportsDownloadRetrieve](/docs/admin-api/reference/exports/exportsDownloadRetrieve) endpoint to get a download URL for the CSV file.

Expand All @@ -112,7 +112,7 @@ Once the export status is `available`, use the [exportsDownloadRetrieve](/docs/a
Download URLs are temporary signed URLs. Fetch the file promptly after retrieving the URL. If the URL expires, request a new one from the download endpoint.
</Callout>

### Export Webhooks
## Export Webhooks

Subscribe to the `export.created` [webhook event](/docs/webhooks) to be notified immediately when an export is available for download. The webhook payload includes the export object data, allowing you to proceed directly to downloading the file without additional API calls.

Expand All @@ -121,7 +121,7 @@ Using the `export.created` webhook is the recommended approach for automated exp
</Callout>


### List Exports
## List Exports

Use the [exportsList](/docs/admin-api/reference/exports/exportsList) endpoint to retrieve previous exports with optional filtering by type and creation date.

Expand Down
28 changes: 14 additions & 14 deletions content/docs/admin-api/guides/external-checkout.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ stateDiagram-v2
upsell --> Confirmation
```

### Create Cart
## Create Cart

Carts are the starting point for all orders, carts are essentially draft orders waiting to be converted into orders. Creating the cart is a vital step in capturing leads and setting up abandoned cart flows.

Expand Down Expand Up @@ -57,7 +57,7 @@ Carts are the starting point for all orders, carts are essentially draft orders
- Attribution added to a cart is carried over to the Orders and Subscriptions created on the users next order, you do not need to pass this data on the order request.
- If you need to capture an address with the cart, use the [usersAddressesCreate](/docs/admin-api/reference/customers/usersAddressesCreate) endpoint which will create a default address for the user.
</Callout>
### Create Order
## Create Order
Creating an order is the core resource in an external checkout flow, see the example below to familiarize yourself with the [ordersCreate](/docs/admin-api/reference/orders/ordersCreate) API endpoint.

```json title="Request" http-method="POST" http-target="https://{store}.29next.store/api/admin/orders/"
Expand Down Expand Up @@ -99,7 +99,7 @@ Creating an order is the core resource in an external checkout flow, see the exa
- If you already created an address for the user, pass `use_default_shipping_address` and `use_default_billing_address` as true to use their default address for the order.
- For additional payment methods, see the [Payment Methods](/docs/admin-api/guides/payment-methods) guides — [Bankcard](/docs/admin-api/guides/payment-methods/bankcard), [3DS2](/docs/admin-api/guides/payment-methods/bankcard#3d-secure-3ds2), [Apple Pay](/docs/admin-api/guides/payment-methods/apple-pay), [PayPal](/docs/admin-api/guides/payment-methods/paypal), [Klarna](/docs/admin-api/guides/payment-methods/klarna), [Affirm](/docs/admin-api/guides/payment-methods/affirm), [Afterpay](/docs/admin-api/guides/payment-methods/afterpay), [Twint](/docs/admin-api/guides/payment-methods/twint), [Swish](/docs/admin-api/guides/payment-methods/swish), [Bancontact](/docs/admin-api/guides/payment-methods/bancontact), and [SEPA](/docs/admin-api/guides/payment-methods/sepa-debit).
</Callout>
### Add Upsells
## Add Upsells

Add additional products (line items) to the original order through the [ordersAddLineItemsCreate](/docs/admin-api/reference/orders/ordersAddLineItemsCreate) API. Adding items to the order will automatically re-use the order's initial payment method to collect payment for the additional products.

Expand All @@ -122,7 +122,7 @@ Check `supports_post_purchase_upsells` on the initial order create response befo
<Callout type="warn">
The `ordersAddLineItemsCreate` API requires that the order initial **payment method** supports merchant initiated charges. See the [Payment Methods](/docs/admin-api/guides/payment-methods) capability matrix for which methods support upsells.
</Callout>
### Cart / Order / Upsell lines Detail
## Cart / Order / Upsell lines Detail
Cart, Order, and Upsell line items represent the products the customer is purchasing. When an order is created, the product fulfillment location will be automatically chosen based on product stock records and inventory availability.

```json title="Specify Line Items and Currency"
Expand All @@ -140,7 +140,7 @@ Cart, Order, and Upsell line items represent the products the customer is purcha
<Callout type="idea">
Ensure you use the variant product ID for order line items. **Single variant products still contain a variant product future product management to add additional variants.**
</Callout>
#### Subscription Line Items
### Subscription Line Items

Lines also accept an optional `subscription` object to specify a subscription that will be automatically created after the initial order is successfully created.

Expand All @@ -165,7 +165,7 @@ Subscription line items have two `price` fields available. The order line item l
<Callout type="warn">
Orders with Subscription line items **must have an initial payment** (order total > 0.00) to validate and retain the bankcard for future usage.
</Callout>
#### Custom Line Item Properties
### Custom Line Item Properties

Lines accept an optional `properties` object of key/value pairs to capture customization details for personalized or made-to-order products, such as an engraving, monogram, or gift message. The values are stored on the line item and persist to the created order (and to the subscription line item when the line creates a subscription).

Expand All @@ -185,7 +185,7 @@ Lines accept an optional `properties` object of key/value pairs to capture custo
<Callout type="info">
Line item `properties` are used to determine the uniqueness of line item products and flow all the way through to fulfillment order line items for customized product fulfillment.
</Callout>
### Cart / Order User Detail
## Cart / Order User Detail

The `user` object on carts/orders represents the **customer** which includes their contact details. Below are the recommended fields to pass for the user for ease of use and support of external integrations that may rely on the data, i.e. `user_agent`.

Expand All @@ -207,7 +207,7 @@ Users are first checked for an existing user by `email` before creating a new us
<Callout type="warn">
**It is not recommended to pass `phone_number` directly on the user when creating a cart or order, we recommend passing a local phone number in the `shipping_address` instead.** Address fields have country context, which allows local phone numbers to be passed and converted to [E.164 format](https://en.wikipedia.org/wiki/E.164) before being saved. A `phone_number` passed to the `user` object directly must be in E.164 format.
</Callout>
### Cart / Order Attribution Detail
## Cart / Order Attribution Detail
Cart and Order `attribution` object sets the [marketing attribution](https://docs.nextcommerce.com/docs/features/offers/marketing-attribution) on the order for tracking the source of orders and use in orders reporting. You can also pass in [metadata](https://docs.nextcommerce.com/docs/build-a-store/technical-settings/metadata-fields-and-tags) fields that are configured on the store to track custom attribution parameters and integrate external tracking platforms.

```json title="Attribution Detail"
Expand All @@ -219,15 +219,15 @@ Cart and Order `attribution` object sets the [marketing attribution](https://doc
}
```

### Order Shipping Detail
## Order Shipping Detail

```json title="Shipping Detail"
"shipping_code": "default",
"shipping_price": "5.48",
```
The `shipping_code` is an optional field to specify the Shipping Method to be used for the order, **if not passed, the cheapest Shipping Method will be used**. `shipping_price` is also optional and provides a way to override the configured price for the Shipping Method of the order allowing you to discount or charge an upsell for shipping on the order.

### Order Addresses Detail
## Order Addresses Detail
The `shipping_address` object on the order represents the address where the order will be shipped, and similarly for the `billing_address`. The first `shipping_address` and `billing_address` created for a user is automatically set as their default shipping and billing address, [see API Reference](/docs/admin-api/reference/orders/ordersCreate).

<Callout type="idea">
Expand All @@ -250,7 +250,7 @@ Use `billing_same_as_shipping_address` to forego having to pass a full duplicate
- User `phone_number` is automatically saved from the user's first address if they do not have an existing `phone_number`.
- In a "Two Step" flow where the customer address is collected before creating the order, create an address for the user and then pass the `use_default_shipping_address` and `use_default_billing_address` as true on the `orders_create` request.
</Callout>
### Order Payment Detail
## Order Payment Detail

The order `payment_method` and `payment_details` objects work in tandem to specify the payment method for the order and provide any additional data that may be required per payment method.

Expand All @@ -266,14 +266,14 @@ The example below uses a [Test Card Token](/docs/admin-api/guides/testing-guide)
```

To route the order to a specific gateway or gateway group, include `payment_gateway` or `payment_gateway_group` (an id, never both) inside `payment_details`. See [Gateway Routing](/docs/admin-api/guides/payment-methods/bankcard#gateway-routing) in the Bankcard guide.
#### Statement Descriptor
### Statement Descriptor

Merchants have the option to pass a custom `statement_descriptor` on orders so the end customer will more easily recognize the charge on their card bank statement. Using this field will override all subsequent transactions for the bankcard, even across payment gateways.

<Callout type="info" title="Statement Descriptor Validation">
Descriptors can be up to 22 alphanumeric characters, spaces, and these special characters: `& , . - #`. Passing in an invalid statement descriptor will be ignored.
</Callout>
#### Payment Method Guides
See the [**Payment Methods**](/docs/admin-api/guides/payment-methods) section for method-specific guides on creating orders, plus the full capability matrix (flow type, express checkout, upsell, and subscription support per method).
### Payment Method Guides
See the [Payment Methods](/docs/admin-api/guides/payment-methods) section for method-specific guides on creating orders, plus the full capability matrix (flow type, express checkout, upsell, and subscription support per method).

**[View all payment methods →](/docs/admin-api/guides/payment-methods)**
Loading
Loading