Getting Started
1. Problems logging in to the DSV Developer Portal?
If after filling in the 'Sign in' form and clicking Enter or 'SIGN IN' you are routed straight back to the start page without an error and was not signed into your Developer Portal account. Please ensure that your Operating System, and Microsoft Teams account (if applicable) are set to the correct time zone. We have seen instances where if a PC was set to the inaccurate time zone - e.g. London – when based out of Germany, login issues may occur. If this does not help, please reach out to support.
2. What are the different API keys?
Each API product that you subscribe to on our developer portal will have with a primary and secondary service key. These keys are also known as "DSV-Subscription keys" and will provide you with access to a particular API Product and environment, for instance you will have separate Subscription keys for our Booking API in each of the environments (DEMO, QA, PROD) available for it.
Your DSV-Service-Auth key, which will be used to gain access to your data within the DSV system will be received in your communication with our IT support team, as they guide your initial onboarding to the API product(s) you have selected.
Your DSV-Service-Auth key, which will be used to gain access to your data within the DSV system will be received in your communication with our IT support team, as they guide your initial onboarding to the API product(s) you have selected.
Authorization
1. Will the API Subscription keys expire?
No, the API Subscription keys will not expire.
2. Where can I find my API Subscription key?
All your DSV-Subscription-keys are available under your Developer Portal’s profile.
3. Are there any additional authorizations required?
Yes, depending on the API used, you will be asked to authenticate via Basic Authorization, additional API key & token, or oAuth 2.0. You will find those requirements in the particular API’s Specification content, and additionally described under each API Guide (under the Documentation tab).
4. Where do I find my company’s account No. (MDM)?
Your MDM number is needed for the freightPayer and bookingParty addresses. In order to locate it for use in a Production API environment log on to Link using your api.dsv user and the password you received through text. Click the 3 lines in upper left corner of your screen and navigate to Settings. From Settings, scroll down to see the Company addresses details..
Booking Issues
1. Why are some of my API bookings failing? (Dangerous Goods)
When you send in a booking request that contains dangerous goods, some of the fields can become mandatory. For example, UN code 1993 requires information about the National and International Technical Name, which makes these fields business mandatory even if they technically are optional.
2. Why do I get the error "Product not available: Rail" or "Selected Product: null is no longer available"?
This error usually means that Rail is not available for the booking. This can happen in one of the following situations:
- Rail is not enabled for the user's account.
- Rail is enabled, but the selected route does not technically support Rail based on the chosen from and to locations.
- Rail transport is currently not available for the following countries: Russia, Germany, and Bulgaria.
Shipping
1. When will I be able to see the Serial Shipping Container Code (SSCC) numbers for my shipment?
When sending a tracking request shortly after the booking the SSCC numbers are not showing. While timing will depend on the specific booking, shortly after being created the SSCC numbers should become visible in the API Tracking response. If the number isn’t visible after 30 minutes, please reach out to support.
2. Can I print references on the DSV Label?
The packages / references / SHIPPER_REFERENCE and CONSIGNEE_REFERENCE types are visible on the label.
Please note that the value inserted to this field will be truncated if too long for the label. You can also add your own SSCC in packages / trackingNumbers. The number of SSCCs must match the quantity provided for the package.
If trackingNumbers are not sent in the booking DSV will create an SSCC for the package instead.
Value in packages / shippingMarks will show up in 'Marks'. (Package level Marks and Numbers)

Please note that the value inserted to this field will be truncated if too long for the label. You can also add your own SSCC in packages / trackingNumbers. The number of SSCCs must match the quantity provided for the package.
If trackingNumbers are not sent in the booking DSV will create an SSCC for the package instead.
Value in packages / shippingMarks will show up in 'Marks'. (Package level Marks and Numbers)
Common Errors & Responses
1. Why am I getting a “Drop Off service value must be set” error message?
If you are receiving an error message when submitting an API Booking request that states "Drop Off service value must be set" it is because the dropOff field is mandatory if your country has this option available.
{ "autobook": true,
"product": {
"dropOff": "",
"name": "Air"
} }
"product": {
"dropOff": "
"name": "Air"
} }
XPress Common Errors
1. How many digits can I put on “Invoice Line - Net Weight” Field?
If your provided weights as low as “0.0016” and you receive an error response saying: "Invoice Line - Net Weight should be greater than 0," it is because XPress will only accept 2 decimal places for the net weight. So, for this to work, the net weight per line should be set to the minimum of 0.01.
2. Quote Service: Why do I get "Shipment Shipper Organization not found" or "Rate not found" responses?
For the XPress Quote Service, we need either an organization with a default debtor or that the organization is receivable. A Default Debtor must be added to your account on XPress, in the “Organization” menu and “Shipper” tab.


3. Why am I not receiving Economy Service information?
Errors related to a lack of Economy Service information are likely due to the “grossWeight” field, where there is an acceptable weight limit on the network being exceeded. For example, the UPS Network limit is 70kg per piece, so if the weight input in the field exceeded this limit, an error would occur.
4. Why do I receive this message: "A pick-up request was already successfully submitted to carrier for the pickup location"?
The error message "A pick-up request was already successfully submitted to carrier for this pickup location. Therefore, no additional pick-up request was sent for this shipment. Please contact your local DSV representative if you need an additional pick-up to be scheduled." will be shown if more than one pick-up request was sent for one pick-up address on a single collection date.
- More bookings can be submitted, but if a second pick-up is needed for the same collection date and location, DSV operations must be contacted.
- DSV XPress will send a pickup request to the carrier only for the first shipment of the day.
- Shipments are grouped for pickup requests based on pickup address/day/carrier.
- More bookings can be submitted, but if a second pick-up is needed for the same collection date and location, DSV operations must be contacted.
- DSV XPress will send a pickup request to the carrier only for the first shipment of the day.
- Shipments are grouped for pickup requests based on pickup address/day/carrier.
5. Why I receive an error when cancelling shipments on the Demo environment?
When using the `voidShipment` function (#API Documentation Link), you may receive the following error: "Impossible to delete selected shipments!” This error may occur because our API Demo environment uses carrier test environments for bookings. Depending on the carrier, a booking cancellation may not be available as a feature within their test environment.
XPress Features & Configurations
1. What is the size of the XPress label?
This is a user setting in XPress and cannot be influenced by the API request. XPress labels can be received in two different formats:
- If the format is PDF, the sizes are fixed to either A4 or 10x15.
- If the format is ZPL, the size will depend on the printer configuration.
- If the format is PDF, the sizes are fixed to either A4 or 10x15.
- If the format is ZPL, the size will depend on the printer configuration.
2. Can I print a reference on a 'UPS' Label?
In order to get a reference, such as a delivery note included on a UPS label, it must be sent in the booking request with the reference qualifier "SHPR_REF." Only the first instance of SHPR_REF in a booking request will be included on the label.
3. How can we get a text message/SMS sent to our customers informing them of expected delivery when using GLS?
For Business-to-Customer (B2C) shipments, GLS will send a text message/SMS to the number (if any) included in the "contactPhoneNumber" field of the receiver. If a valid mobile number for the receiver was included in this field when the API request was sent, a text message/SMS with the expected delivery date/time will be sent by GLS.
4. Can I open my bookings in a browser?
You can use the following link: #DSV XPress Application Link to access the DSV XPress application in production. You will need to connect using your XPress credentials on this page. After which you can navigate to the shipment.
Parcel Shop
1. To request a shipment with Parcel Shop Delivery, how do I use the "extraOption" field in the API request?
To request a shipment with Parcel Shop Delivery you need to use the “extraOption” field in the API request.
In order to use the extraOption "SHOP_DELIVERY", you need to add the serviceOptions as follows:
And indicate Shop delivery as follows:
If you only provide the "code", the parcel shop closest to the delivery address will be selected.
To choose which shop it should be delivered to, then you must include the GLS parcel shop Id like this:
In order to use the extraOption "SHOP_DELIVERY", you need to add the serviceOptions as follows:
"serviceOptions": {
"packageType": "PARCELS",
"serviceCode": "DSVParcels"
},
"packageType": "PARCELS",
"serviceCode": "DSVParcels"
},
And indicate Shop delivery as follows:
"extraOption": {
"code": "SHOP_DELIVERY"
},
"code": "SHOP_DELIVERY"
},
If you only provide the "code", the parcel shop closest to the delivery address will be selected.
To choose which shop it should be delivered to, then you must include the GLS parcel shop Id like this:
"extraOption": {
"code": "SHOP_DELIVERY",
"param": (ex. "2080096205")
}
"code": "SHOP_DELIVERY",
"param":
}
OAuth 2.0 Integration
1. Why Is OAuth 2.0 Required for Accessing DSV APIs?
OAuth 2.0 ensures secure, scalable, and efficient interactions with DSV’s APIs, protecting sensitive data while enabling streamlined access for business-critical applications.
2. What is the impact of token expiration on my application?
If not managed properly, expired tokens can lead to failed API calls, disrupting workflows. Implement automated token refresh mechanisms to maintain seamless operations.
3. How can I prevent downtime due to token expiration?
Implement an automated token refresh system to renew access tokens before they expire, ensuring uninterrupted access to API resources.
4. What happens if my refresh token expires?
When your refresh token expires after 30 days, you will need to authenticate again using your username and password to obtain new tokens.
5. Can I automate token renewal?
Yes, it is recommended to automate the process of refreshing tokens before they expire to ensure uninterrupted access. Implement error handling to detect and respond to 401 errors by initiating a token refresh.
Public Spot Quote API
1. What is the Public Spot Quote API?
The Public Spot Quote API enables customers to request, receive, and convert transport quotes into bookings through a standardized interface, designed for seamless integration with customer systems to eliminate manual workload.
2. How does rate lookup work against tariff or tender agreements?
Currently, API supports spot quoting only. Customers may receive multiple quote options per request, and manual intervention may be required.
3. What is the onboarding process for new customers willing to use Spot Quote API?
Customers follow the same onboarding steps as with other DSV Public APIs:
- Subscribe via the DSV Developer Portal: developer.dsv.com/getting-started
- Customer identification record verification.
- Once verified, access is granted to the API suite
4. How does rate automation work?
Rate automation refers to the real-time calculation of transport rates, as of Q3 2025 available for the majority of less-than-truckload (LTL) shipments within most European countries. The system is capable of instantly returning a price for a specific spot shipment request without manual review, provided the cargo is standard and common. While automation is widely available, each country may have local specifics- such as regulatory requirements, service limitations, or pricing exceptions—that can trigger manual review of the quote request.
5. How to request different mode of transport options?
API allows to get either one quote response for mode of transport or up to three quote responses for all supported modes (Road, Air and Sea). DSV will check the feasibility of the request and revert options that are available.
6. What Quote ID shall be used for Booking?
For the booking process, please provide the selected Quote ID from the API Quote Response that indicates the desired option.
Webhook API
1. What is a webhook and how does it work?
A webhook allows DSV to automatically send event notifications to your system when something changes, such as a shipment milestone or status update. This removes the need for your system to keep checking the API for updates.
2. How do I subscribe to webhook events?
Webhook subscriptions are created using the Webhook API by providing the subscriptionEvent and your pushUrl (your HTTPS endpoint). Each event must be subscribed to individually using the exact event name
listed in the Webhook Guide.
3. Is the subscriptionEvent value case-sensitive?
Yes. The subscriptionEvent value is case-sensitive and must exactly match the event name listed in the Webhook Guide.
4. Which transport modes are supported for webhook events?
Not all webhook events are applicable to every transport mode. Refer to the Transport Mode Compatibility
section in the Webhook Guide for the supported modes per event.
5. What response should my webhook endpoint return?
Your endpoint should return a 2xx HTTP status code (for example, 200 OK) to confirm successful receipt of
the webhook message.
6. Are webhook subscriptions environment-specific?
Yes. Webhook subscriptions and subscription keys are environment-specific. Availability of webhooks may vary by API and environment (for example, Demo or Production).
7. How do I get access to Production webhooks?
Access to Production webhooks is provided by DSV Support. Please email developer.support@dsv.com and specify the required environment (Production).
Contract Logistics API
These FAQs are designed to support your integration with DSV Contract Logistics APIs and address common questions during onboarding, testing, and go-live preparation.
1. How do I get access to the Contract Logistics APIs?
To begin integration, please subscribe to the required APIs on the DSV Developer Portal.
After subscription, DSV will complete the onboarding steps and provide the required credentials.
You will receive:
After subscription, DSV will complete the onboarding steps and provide the required credentials.
You will receive:
- client_id
- client_secret
- API subscription key (DSV-Subscription-Key)
- warehouseId
2. When will I receive my credentials?
Credentials are provided by DSV as part of the onboarding process after your API subscription has been approved.
If you have not received them, please contact your DSV representative.
If you have not received them, please contact your DSV representative.
3. What is the warehouseId and where is it used?
The warehouseId is a unique identifier for your warehouse setup in DSV systems.
It is required in most API requests to ensure that data is processed in the correct warehouse context.
It is required in most API requests to ensure that data is processed in the correct warehouse context.
4. Why am I receiving a 401 Unauthorized response?
A 401 response usually indicates an authentication issue.
Please ensure that:
Please ensure that:
- A valid OAuth token is included in the Authorization header
- The DSV-Subscription-Key header is included
- The access token has not expired
- The correct credentials are being used
5. What is the recommended integration sequence?
To support a smooth integration, we recommend the following sequence:
- Authenticate and confirm API access
- Create or validate Product Data
- Test a simple API, such as Inventory by Product
- Send Inbound or Delivery Notifications
- Track progress using Status APIs
- Enable and validate Webhooks
6. Why is my request successful but not yet processed?
A successful API response confirms that the request was received by DSV.
Some processes may take time to complete because they are handled in the background.
To track progress, you can:
Some processes may take time to complete because they are handled in the background.
To track progress, you can:
- Use the Status API
- Subscribe to Webhooks for real-time updates
7. What are the common reasons for request failures, such as 400 errors?
A 400 response usually indicates a validation issue.
Common causes include:
Common causes include:
- Missing required fields
- Incorrect field formats, such as dates or codes
- Invalid or unsupported values
8. Why should I use Webhooks?
Webhooks allow DSV to send real-time updates directly to your system, such as:
- Order status updates
- Receipt confirmations
- Delivery confirmations
- Inventory changes
9. What is the recommended approach for testing Webhooks?
Webhook testing should be performed in two stages:
- Demo Environment: Used to understand the webhook payload structure using static sample messages
- Integration (INT) Environment: Used to validate real, event-driven behaviour
10. Which endpoint should I use for Webhook subscription?
Please use the appropriate endpoint based on your testing stage.
Demo:
INT:
Demo:
https://api.dsv.com/my-demo/webhook/v1/subscriptions/subscribe
INT:
https://api.dsv.com/my-int/webhook/v1/subscriptions/subscribe
11. What Webhook events can I subscribe to?
You can subscribe to events such as:
- Order status changes
- Receipt confirmations
- Delivery confirmations
- Inventory updates
12. Why am I not receiving Webhook events?
Please ensure that:
- Your endpoint is publicly accessible
- HTTPS is correctly configured
- Your endpoint can accept validation requests
- The Webhook subscription has been created successfully
13. Is there a maximum number of records per request?
No fixed record limit is defined in the API specification.
The practical limit depends on processing time and payload size.
The practical limit depends on processing time and payload size.
14. What is the maximum JSON payload size?
Payloads up to approximately 5 MB are generally considered safe based on the current API gateway configuration.
Larger payloads may require additional validation during testing.
Larger payloads may require additional validation during testing.
15. What is the main limiting factor for larger requests?
The main limiting factor is processing time.
As a guideline, processing should not exceed approximately 60 seconds per request.
As a guideline, processing should not exceed approximately 60 seconds per request.
16. How many records should I send in one request?
We recommend starting with approximately 200 records per request.
Higher volumes may work, but they should be validated through testing. Please increase batch sizes gradually and monitor the response time and success rate.
Higher volumes may work, but they should be validated through testing. Please increase batch sizes gradually and monitor the response time and success rate.
17. What are the key required fields across APIs?
Each API has its own schema, but common required fields include:
- warehouseId
- Unique identifiers such as productId, inboundId, or deliveryId
- The Delivery API requires warehouseId, deliveryId, and deliveryItems
- The Inbound API requires warehouseId, inboundId, and lineDetails
18. How do I retrieve inventory information?
You can use the Inventory API:
- Full inventory:
/inventory/{warehouseId} - Product-specific inventory:
/inventory/{warehouseId}/{productId}
19. What should I validate before moving to Production?
Before go-live, please ensure that:
- Authentication is working correctly
- Core APIs, such as Product, Inbound, and Delivery, have been tested
- Status tracking has been validated
- Webhooks have been tested using the INT environment
- Your system can correctly handle real-time updates
20. Where can I find testing tools, examples, and detailed structures?
Please refer to the API documentation on the DSV Developer Portal for detailed request and response structures.
A Postman collection is also available to support development and testing.
A Postman collection is also available to support development and testing.