Hoscoo
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_..." }'