The Two Operations Worth Wiring Next #
Creating the label is the headline integration. But a label on its own does not make an operation — the parcel still has to be collected, and someone still has to know what it costs before agreeing to ship it.
The two calls
PostQuote returns a rate estimate and books nothing. PostPickup_v6 schedules a courier collection. On the same SOAP service as the shipment call, with the same conventions and the same delimited-string responses.
Start With the Quote, Because It Is Safe #
This is the practical reason to build the quote first, and it has little to do with rates.
On a service with no sandbox, where every shipment call files a real customs declaration and creates a real waybill, PostQuote is the one operation you can fire freely. It is read-only. Nothing is booked, nothing is filed, nothing needs cancelling.
Which makes it the ideal first live call:
- It proves your credentials work
Site ID, password and account number are either right or they are not, and you find out without consequences.
- It proves your SOAP envelope is well-formed
Contract name, action header, namespace — all exercised by a harmless call.
- It proves your response parser works
The delimited-string format is the same shape here. Get the parser right on a call that cannot hurt you.
Do this before you attempt a single shipment call. Three of the four things that break on your first live shipment are not shipment-specific, and the quote flushes them out for free.
The quote is also genuinely useful in the product: showing a rate in the label-review screen before an operator commits turns an irreversible action into an informed one.
The Pickup Call #
PostPickup_v6 asks DHL to send a courier. The inputs are what you would expect — collection address, a ready time and a closing time, package count and weight, contact details.
Things that make the difference between a working integration and a daily annoyance:
- Ready time and close time are a promise. A pickup window the warehouse cannot actually meet produces a failed collection and a wasted courier visit. Derive it from real cut-offs, not from a constant.
- One pickup covers many shipments. Do not call it per label. Book once for the batch — usually once per site per day.
- Store the confirmation reference. When a collection does not happen, the first question is what was booked. Persist the response against the batch.
- Make it visible and re-runnable. A card in the UI showing today's pickup, with a book-again action, saves more time than the API call itself. Ops teams do not want an automatic pickup they cannot see.
Conventions That Apply to All of These Calls #
If you have already built the shipment call, none of this is new — but if you are starting from the quote, these are the rules that apply throughout the service:
| Rule | What goes wrong if you miss it |
|---|---|
| The SOAP action contract name must be exact | Silently rejected, with no useful error |
| Responses are delimited strings, not structured XML | Your XML parser returns nothing and you assume the call failed |
| Country names must match the carrier's spelling | Rejected — a code where a full name is expected, or a spelling variant |
| There is no sandbox | Your first test is production |
That third row is worth a sentence of its own. Services of this vintage often want a full country name rather than an ISO code, spelled exactly as their reference data has it. Keep a mapping from your internal country codes to the carrier's expected strings, and treat it as data you maintain rather than something you generate.
Building the label side too? DHL India CSB-V covers the 142-field shipment envelope and the dry-run pattern, and the Hybrid API covers consolidating a batch under one master waybill.
FAQ #
How do I get a DHL rate quote on the India SOAP service?
The PostQuote operation returns a rate estimate and books nothing. Because it is read-only it is the safest way to verify credentials, envelope construction and response parsing on a service with no sandbox.
How do I schedule a DHL pickup programmatically?
PostPickup_v6 schedules a courier collection, taking the collection address, a ready and closing time, package count and weight, and contact details. Book once per site per day for the whole batch rather than once per label.
What should I call first on a carrier API with no sandbox?
Whatever operation is read-only — usually the rate quote. It exercises credentials, the request envelope and the response parser without creating a shipment or filing anything with customs.
Why does my country field get rejected?
Older carrier services frequently expect a full country name spelled exactly as their reference data has it, not an ISO code. Maintain an explicit mapping from your internal codes to the carrier's expected strings.
Should pickups be booked automatically?
Book them programmatically, but keep them visible and re-runnable in your interface. Operations teams need to see what was booked and be able to book again — an invisible automatic pickup is hard to trust and harder to debug when a collection is missed.
Related guides
Shipping APIs
DHL India CSB-V: The SOAP API That Returns a Delimited String
Integrating India's CSB-V commercial export lane means a SOAP service with 142 positional fields, no sandbox, and responses that are delimited strings rather than parseable XML. Here's what CSB-V actually is, the four things about this API that break normal SOAP tooling, and how to test an integration that has no test environment.
Read guide →Shipping APIs
FedEx Open Ship: The Consolidation API Hiding in the Ship API
Consolidating export parcels under one master shipment is often run by hand through a desktop tool, on the assumption that the shipping API can't do it. It can — FedEx's Ship API exposes it as Open Ship. Here's what Open Ship is, the request shape that actually works, and the four things about it the docs gloss over.
Read guide →Shipping APIs
DHL's Hybrid API: Mother-Baby Consolidation That Actually Has an API
Consolidating many parcels under one master airway bill is standard practice for export, and with most carriers it means a desktop app and manual data entry. DHL India exposes it as a real SOAP operation — one call carrying a General block, a Mother, and an array of Babies. Here's how the structure works, and the gate you should keep it behind until you've seen a live response.
Read guide →Don't want to build this yourself?
I set this up for sellers and agencies every week. Book a free 30-minute audit of your Amazon data & PPC setup — you'll leave with a plan either way, whether we work together or not.