Sandbox
Hoscoo sandbox portal
Everything here runs against sandbox-api.hoscoo.com with an hsc_test_ key. No sandbox call can reach a live rail or move real money.
POST/v1/sandbox/paymentssandbox-only
The first-call integration path: a domestic CROSS_MNO_TO_MNO wallet-to-wallet payment. No bank fixture, no FX.
curl -X POST https://sandbox-api.hoscoo.com/v1/payments \
-H "Authorization: Bearer hsc_test_..." \
-H "Content-Type: application/json" \
-d '{
"channel": "MNO_TO_MNO",
"amountMinor": "500000",
"currency": "TZS",
"market": "TZ",
"source": { "providerCode": "MPESA_TZ", "accountType": "WALLET", "identifier": "+255740000001" },
"destination": { "providerCode": "AIRTEL_MONEY", "accountType": "WALLET", "identifier": "+255780000001" },
"reference": "order-1001"
}'POST/v1/sandbox/fx-quotesandbox-only
Second call: quote a cross-border corridor before initiating a CROSS_BORDER instruction.
curl -X POST https://sandbox-api.hoscoo.com/v1/fx-quote \
-H "Authorization: Bearer hsc_test_..." \
-H "Content-Type: application/json" \
-d '{ "corridorId": "TZ-KE", "amountMinor": "1000000" }'POST/v1/sandbox/simulatesandbox-only
Register a programmable outcome rule scoped to this API key.
curl -X POST https://sandbox-api.hoscoo.com/v1/simulate \
-H "Authorization: Bearer hsc_test_..." \
-H "Content-Type: application/json" \
-d '{ "scope": { "type": "NEXT_CALL" }, "outcome": { "kind": "LIFECYCLE_STATE", "state": "FAILED", "reasonCode": "TIMEOUT" } }'POST/v1/sandbox/webhooks/replaysandbox-only
Re-deliver a stored event verbatim to exercise merchant idempotency logic.
curl -X POST https://sandbox-api.hoscoo.com/v1/webhooks/replay \
-H "Authorization: Bearer hsc_test_..." \
-H "Content-Type: application/json" \
-d '{ "eventId": "hsc_evt_..." }'