Omni Way developer docs v1.0.0
Getting Started

Sandbox, UAT & Go-Live

Test mode is a complete, parallel world: same endpoints, same objects, same checkout โ€” simulated money. Build everything against sk_test_, then go live by switching one key.

How the sandbox behaves

ThingSandbox behaviour
PaymentsAuto-settle ~18 seconds after creation, so you can watch the full pending โ†’ paid arc. Codes still expire after 10 minutes if unpaid.
Withdrawal codesStay pending until claimed via the instant-settle hook (they simulate a customer action).
PayoutsSubmit instantly, settle ~20 s later, confirm on the next processor pass (~1โ€“2 min end to end).
WebhooksFire exactly as in production, signed with your endpoint secret.
Balances & ledgerFully separate from live. Nothing in test mode can ever touch real money.

Instant settle (skip the 18 seconds)

Demos and automated tests should not wait. Any test payment can be settled instantly:

# settle now
curl -X POST https://omniway.online/checkout/{payment_id}/mockpay

# or force the expiry path instead
curl -X POST https://omniway.online/checkout/{payment_id}/mockpay \
  -H "Content-Type: application/json" -d '{"outcome": "expired"}'
โ—†
Refused for live payments

mockpay returns 403 for anything created with a live key. It exists purely so your CI and demos are deterministic.

Simulating failures

Real integrations must survive the unhappy paths. The sandbox gives you deterministic levers:

ScenarioHow to trigger it in test modeWhat you should observe
Payment never paidCreate a payment and wait 10 minutes (or mockpay with outcome: "expired")status: "expired", a payment.expired webhook, no ledger movement
Payout rejectedAsk the platform admin to point your test payout destination at an account ending 0000status: "failed", your balance automatically restored, a payout.failed webhook
Transient gateway flakeTest payout destination ending 0096First attempt retries internally; payout still completes โ€” you see nothing but a short delay
Insufficient fundsRequest a payout larger than your test balanceHTTP 402, error.code: "insufficient_funds", nothing debited
Idempotent retryRe-send any money POST with the same Idempotency-KeyThe original response is returned; no duplicate movement

UAT with InnBucks

Before production credentials are issued, InnBucks reviews a sign-off pack. If you integrate only through this platform you inherit most of it โ€” the platform records every gateway interaction (references, stan/authNumber, trace IDs) and the hosted checkout already satisfies the InnBucks branding requirements. A typical merchant UAT is simply:

01

Run your flows in test

Payment paid, payment expired, payout, refund-path you care about.

โ†’
02

Capture references

Keep the payment_ids and references from each run.

โ†’
03

Hand them over

The platform team assembles the evidence pack and walks InnBucks sign-off with you.

Go-live checklist

  • โœ… Whole flow green in test mode โ€” including the expired and failed-payout paths.
  • โœ… Webhook endpoint deployed over https with signature verification (guide).
  • โœ… Fulfilment keyed off payment.paid (webhook or server-side GET) โ€” never off the browser redirect.
  • โœ… Payout destination verified (your dashboard shows payout verified).
  • โœ… Mint a sk_live_ key from the dashboard, set it in your server env, deploy.
  • โœ… Make one small real payment, watch it land in the dashboard, request a small payout.
โœฆ
Keep the test key wired into CI

Test mode never expires. Run your end-to-end suite against sk_test_ on every deploy โ€” with mockpay your suite is fast and deterministic.

Omni Way is the financial core; your storefront or till is the surface it powers. Integrate once and the same ledger, payouts and reporting work across every product you adopt.

omniway.online ยท InnBucksPowered by InnBucks (MicroBank Limited) ยท USD & ZWG.