Shipping APIs 6 min read

DHL India: Booking Pickups and Getting Rate Quotes Over SOAP

Once you can create a CSB-V label, two smaller operations turn it into a workable daily process: a rate quote that books nothing, and a pickup request that gets a courier to the door. Both are worth wiring early — the quote because it is the only safe way to exercise a live API, and the pickup because otherwise someone is on the phone every afternoon.

Updated Aug 2026
DHL India: Booking Pickups and Getting Rate Quotes Over SOAP

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.

A delivery courier with parcels, representing a scheduled pickup
Without a pickup call, someone is telephoning the depot every afternoon.

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:

  1. It proves your credentials work

    Site ID, password and account number are either right or they are not, and you find out without consequences.

  2. It proves your SOAP envelope is well-formed

    Contract name, action header, namespace — all exercised by a harmless call.

  3. 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:

RuleWhat goes wrong if you miss it
The SOAP action contract name must be exactSilently rejected, with no useful error
Responses are delimited strings, not structured XMLYour XML parser returns nothing and you assume the call failed
Country names must match the carrier's spellingRejected — a code where a full name is expected, or a spelling variant
There is no sandboxYour 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.

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.

Found this helpful? Share it:

WhatsApp