Frequently asked questions
Can I switch providers by changing one line?
The application can depend on BaseLogisticsProvider or BaseSMSProvider and
consume typed results. Provider accounts, geography, required fields and supported
features still differ. See capabilities.
Does Jukto classify every upstream error?
No. Documented codes receive audited mappings where evidence exists; unknown codes
remain generic and unexpected schemas raise UnexpectedProviderResponseError.
The matrix records unresolved contracts. Programming
errors are not hidden by a blanket exception wrapper.
Does Pathao always expire tokens after one hour?
The cache follows validated provider expires_in, not a fixed one-hour promise.
It uses a monotonic deadline, an expiry-dependent margin and process-local
single-flight refresh. Refresh outages propagate; only a classified rejected
refresh can trigger password fallback. Order replay after 401 is disabled unless
retry_unauthorized_orders=True; there is no verified idempotency guarantee.
Does ACCEPTED or GreenWeb SENT mean delivered?
No. These represent submission output. Typed shipment polling currently retains
UNKNOWN plus the original provider status because polling vocabularies are not
verified. GreenWeb partial batches preserve every response entry; response indices
are not guaranteed to correspond to the original recipient list.
Can FastAPI call these clients in async def?
Sync client calls block and need a sync route, thread-pool bridge or worker.
The alpha Async*Client classes support native awaited calls; see the
async lifespan example. Both examples manage provider cleanup.
Can I use bKash, Nagad or SSLCommerz today?
The alpha includes one experimental SSLCOMMERZ hosted BDT flow, including server verification and refund APIs. It is not sandbox/live certified. Standalone bKash and Nagad clients remain planned. See the payment guide and contract audit.
Are the provider integrations production-certified?
No. Tests are offline. Published specification comparisons and unverified details are recorded separately from actual live/sandbox transaction verification.