📄 Overview
A physical card enters the production and shipping flow as soon as the user’s application succeeds. The system keeps one shipping tracking record per physical card and advances it through a fixed state machine. You can query the current status at any time, and once the card reaches the shipping stage you also get the tracking number and the carrier name. Status changes are pushed in real time over WebSocket as well (see below).Shipping status state machine
Physical card shipping advances through the following four states in strict order:Transitions follow a strict sequence: PENDING_EMBOSSING → EMBOSSING_IN_PROGRESS → IN_DELIVERY → DELIVERY_COMPLETE.trackingNumberandtrackingCompanyNameare populated only after the card reaches IN_DELIVERY.
This shipping state machine and the card’sphysicalCardStatus(UN_APPLY/INACTIVE/ACTIVE/REPLACE/FROZEN/CANCELLED, see Managing Cards · Overview) are two separate status fields: the former describes where the card sits in the shipping chain, the latter describes whether the card itself is usable. Do not mix them up.
Query shipping information
Preconditions
- The card is a physical card and has been applied for successfully, so a shipping tracking record exists. A virtual card, or a card for which no physical card has been requested, has no matching record.
- You already hold the user’s
externalUserIdand the target card’scardId.
Endpoint
Request example
The request must carry the authentication headers (X-DAPI-API-KEY/X-DAPI-SIGN/X-DAPI-TIMESTAMP/X-DAPI-NONCE); see Integration Resources › Authentication Guide. In the example,<EXTERNAL_USER_ID>and<CARD_ID>are placeholders that you replace with real values. Never write real PII into examples.
Response fields (data)
Response example (masked placeholders)
The response envelope is always{ code, message, messageDetail, data }(there is nosuccessboolean), and the success literal forcodeisSYS_SUCCESS(consistent across this documentation set). On success,messageDetailis usuallynull.
Error handling
Real-time WebSocket notifications
Besides querying on demand, DCS pushes a real-time WebSocket notification whenever the shipping status changes (a signature capability of the DeCard-Managed model), so you learn the latest progress without polling.When a push is sent
- When the shipping tracking record is created
- When the shipping status changes
- When the shipping information (tracking number or carrier) is updated
Message type and data structure
The WebSocket message type isCARD_PHYSICAL_SHIPPING, and its payload fields match the response fields above (cardId / externalUserId / cardMantissa / status / trackingNumber / trackingCompanyName).
The WebSocket handshake, authentication, and full data structures are consolidated on the Integration Resources › Webhook and WebSocket Real-Time Notifications page; the payload fields for this message type are in the
CARD_PHYSICAL_SHIPPING physical card shipping information section of that page (messageType = CARD_PHYSICAL_SHIPPING).Next steps
- To apply for, activate, or set the PIN of a physical card (H5 guidance page), see Issuing Cards.
- For overall card status and the
physicalCardStatusstate machine, see Managing Cards · Overview. - For WebSocket and webhook connectivity and the full data structures, see Integration Resources › Webhook and WebSocket Real-Time Notifications.

