nShift Checkout is built on a new API. Migrating from DeliveryCheckout requires implementing this new API. This article provides a high-level overview of the key differences between the two APIs to help you plan and scope your integration work.
At a glance
| Area | DeliveryCheckout (v1) | nShift Checkout (v2) |
|---|---|---|
| Customer logs into | nShift Delivery | nShift Portal |
| API base URL | https://api.unifaun.com/rs-extapi/v1 | https://api.nshiftportal.com/checkout |
| Auth model | API key / bearer token | OAuth 2.0 token (Client ID + Secret) |
| API docs | nShift API Connect | developers.nshiftone.com |
Authentication
nShift Checkout uses a modern OAuth 2.0 authentication model. Rather than an API key, you use a Client ID and Client Secret created in your nShift Portal account to generate an access token.
- Token endpoint: https://account.nshiftportal.com/idp/connect/token
- Tokens are valid for 1 hour.
- Recommended: implement exponential backoff so that if a token request fails, retry with progressively longer intervals.
Endpoints overview
The following table summarises the key endpoint changes and the reasoning behind them.
| Action | DeliveryCheckout (v1) | nShift Checkout (v2) | Reason for change |
|---|---|---|---|
| Authenticate | N/A | POST /idp/connect/token |
More secure, standardised OAuth 2.0 authentication. |
| Create session | N/A | POST /v1/sessions/{checkoutConnectionId} |
Sessions tie consumer interactions together, enabling conversion tracking and A/B testing (Experiments). |
| Fetch delivery options | GET /delivery-checkouts |
POST /v1/shipping-options/{sessionId} |
Structured POST body enables richer input, better privacy, and future extension without breaking changes. |
| Create partial shipment | POST /delivery-checkouts |
POST /shipments/v1/shipments |
Unified shipment creation endpoint shared across nShift APIs; clear separation of concerns. |
Key changes in detail
Sessions
nShift Checkout introduces the concept of a session. A session ties the consumer's interactions together across their checkout journey, enabling consistent experiences and accurate conversion tracking. Sessions are also the foundation for Experiments (A/B testing).
- Sessions are created with:
POST /v1/sessions/{checkoutConnectionId} - A session is valid for 4 hours, refreshed with each interaction.
- Sending a body is required (can be empty); body values are used when pointing to a Group or Experiment with Segmentation.
Fetching delivery options
The call to fetch delivery options has moved from a GET request with query parameters to a structured POST request with a JSON body. This improves privacy, enables richer input, and is easier to debug and maintain.
Example: Delivery Checkout v1
GET https://api.unifaun.com/delivery-checkouts/123456 ?currency=SEK&language=sv&tocountry=SE&tozipcode=41756&weight=2.3&cartprice=499
Example: nShift Checkout v2
POST /v1/shipping-options/{sessionId}
{
"currencyCode": "SEK",
"languageCode": "sv",
"totalWeightKg": 2.3,
"receiver": {
"postalCode": "41756",
"country": "SE"
},
"packages": [{ "weightKg": 2.3, "volumeCm3": null }],
"variables": { "cartPrice": 499 }
}
Response: key field name changes
The familiar building blocks are still present in the response, for example, option IDs, carrier service IDs, pickup points, and add-ons, but some parameters have been renamed or restructured.
Some examples below:
| Concept | Delivery Checkout (v1) | nShift Checkout (v2) |
|---|---|---|
| Option identifier | id |
optionId |
| Price |
priceValue / priceDescription
|
price / priceDescription
|
| Pickup points | agents[] |
pickupPoints[] |
Creating a partial shipment
Once an order has been converted, you must create a partial shipment using POST /shipments/v1/shipments. This step is mandatory and ensures full compatibility with all current and future nShift Checkout features, including accurate conversion rate calculation for Experiments.
Note:
If you prefer not to use the partial shipment to create the actual shipment in your shipping solution, you can add the query parameter send-to-book-and-print=false to the /shipments URL. This registers the call for conversion tracking without creating a partial shipment in the shipping solution.
In that case, also add extended-result=true to receive an extended response from Checkout.
Booking and printing from the shipping solution
Creating the final shipment (booking and label printing) from the partial shipment still takes place within your nShift shipping solution, and this part of the integration is unchanged.
- Delivery: Prepared shipments
- Ship: Completing a partial shipment from nShift Checkout
- Transsmart: Create, update and book prepared shipments
Full API documentation
Available at: https://developers.nshiftone.com/checkout/getting-started