Skip to content

Test Mode

Test mode gives you a safe, consequence-free sandbox to validate your integration before real shipments and real money flow through the platform. Both modes run on the same production environment — not a separate staging server — so what works in test will work in live.

Mode is determined entirely by which API key you use. There is no mode parameter in the request body and no environment toggle. A single integration codebase can switch between modes by swapping the API key, typically via an environment variable.

Key prefixMode
dp_test_Test mode
dp_live_Live mode
AreaLive modeTest mode
Fee calculationFull calculation using production tariff database and exchange ratesIdentical calculation — same tariff DB, same rates, same fee engine
Additional feesApplied per brand configurationApplied identically
Email notificationsSent to the consignee’s real emailSuppressed. Logged as SIMULATED with full content viewable in dashboard
SMS notificationsSent during the next daytime windowSuppressed. Logged as SIMULATED with message content visible
Payment pageReal payment methods are chargedTest mode — only test cards are accepted; no real charges
Payment processingReal charges collectedNo real charges; only test cards accepted
ReceiptsGenerated and emailed to consigneeGenerated but not emailed. Viewable in dashboard, watermarked “TEST”
SFTP relayFiles pushed to SFTP serverNot pushed. Files generated and downloadable from dashboard
Webhook relayPOST sent to your endpointPOST sent normally; test shipments are identifiable by the is_test field in the dashboard
Dashboard visibilityDefault shipment listSeparate “Test” filtered view with visual indicator
ReportsIncluded in all report typesExcluded from live reports. Separate test export available
Data retention7-year retention per compliance90-day retention, then auto-purged
Opt-out preferencesPersisted and enforcedIsolated from live opt-outs

In the dashboard, go to Settings > API Keys and click Generate New Key. Select Test mode, optionally restrict it to a specific brand, and add a label.

Use the test key in your API requests:

Terminal window
curl -X POST https://api.dutypro.exelot.com/api/shipments/ \
-H "Content-Type: application/json" \
-H "X-API-Key: dp_test_YOUR_KEY_HERE" \
-d '{ ... }'

The response is identical to live mode — same schema, same fee calculations. The is_test field in the response will be true.

Switch to “Test” mode using the toggle in the dashboard header. Test shipments appear in a separate filtered view with a visible test indicator throughout the UI.

Open the payment_link from the response. The payment page runs in test mode, so use test cards:

Card numberBehavior
4242 4242 4242 4242Succeeds
4000 0000 0000 0002Declined

Any future expiry date and any 3-digit CVC will work.

If you use SFTP, test files are not pushed to the server. Download them from the dashboard instead.

Webhook events are delivered normally for test shipments. Test shipments are identifiable in the dashboard by their test badge.

When a shipment is created with a test API key, the payment page runs in test mode. No real charges are collected — only test cards are accepted. This lets you verify the full payment flow without moving real money.

A mode toggle in the dashboard header switches between “Live” and “Test” views. This toggle filters all data across the entire dashboard — shipment lists, communication logs, status relay logs, and reports.

Test shipments display a visible badge/banner to prevent confusion. When viewed in detail, they show the same fee breakdown, communication timeline, and status history as live shipments, but with simulated entries clearly labeled.

Test data is retained for 90 days, then automatically purged. You can also manually purge test data at any time from the dashboard. Live data is retained for 7 years per compliance requirements.

The same rate limits apply to both live and test mode. This prevents accidental load-testing scenarios that could affect production infrastructure.