Live in production · Multi-vendor · Sub-ms allocation

Buy & sell gift cards at enterprise scale.

Starship is the voucher platform behind Rocket Incentive — a branded web portal and a production-grade REST API, both backed by inventory-first fulfillment and slick integrations with the vendors that matter. Cache hit means delivered in milliseconds. Miss means admin-gated vendor fallback. No double-spend, no ghost allocations, ever.

Integrated
starship — operations
Inventory-First
Fulfillment
< 1 ms
Cache Hit Alloc
Web + API
Client Channels
Auto
Reconciliation
VoucherKart 5,120 synced
2m
Web #8472 delivered (0.8ms)
45s
API POST /orders webhook fired
18s
Recon #94 847 matched · 0 drifts
12s

One platform. Two integration models.

Serve enterprise buyers through a branded portal, or wire partners in directly over REST. Same inventory, same allocation guarantees, same audit trail.

Channel · Web

Web Clients

A production-grade Next.js portal per client. Wallet, catalog, cart, orders, exports, and reports — all branded, multi-currency, and backed by the same inventory pool the API uses.

  • Per-client branding & theming
  • Wallet balance, top-ups, bulk orders
  • SSO & 2FA for enterprise buyers
  • Excel exports & downloadable vouchers
  • 8+ currencies with live FX
Channel · API

API Clients

A versioned REST API for partners who want vouchers delivered as a service. Auth, idempotency, webhook callbacks, and a clean request/response model — documented and battle-tested.

  • Versioned /api/v1/* endpoints
  • OAuth2 + HMAC request signing
  • Idempotency keys on every write
  • Webhook events for delivery & retries
  • IP allowlisting & rate limits

Everything you need. Nothing you don't.

Opinionated coverage of the voucher lifecycle — from catalog sync to reconciled delivery — with the sharp edges already filed down.

Inventory-First Fulfillment

Orders hit the cache first. Instant delivery on hit, admin-gated vendor fallback on miss. No surprise upstream calls.

Sub-Millisecond Allocation

Atomic ZPOPMIN from a sorted Valkey pool. Zero double-allocation under concurrent load, deterministic under contention.

Dual-Layer Cache

ZSet sorted pool plus HSet metadata, kept in lockstep by a 108-key invalidation matrix. No drift, no orphans.

Multi-Currency & FX

USD, EUR, GBP, CAD, AUD, SGD, NZD, PHP, and more. Live FX rates, per-client currency locking, per-product denominations.

Admin Controls & Release Gates

Every vendor fallback, price change, and exception passes through an admin gate with a full audit trail. No silent auto-spend.

Webhooks & Events

Delivery confirmations, partial fulfillments, retries, and reconciliation drifts — all as signed, replay-safe webhook events.

Automated Reconciliation

Background jobs match every allocation to vendor-side records. Drifts are auto-flagged for operator review, not auto-trusted.

Operator Dashboard

Real-time ops console: inventory depth by vendor, order queues, pending retries, reconciliation health, pump metrics.

Slick vendor plumbing, already wired.

Production integrations with the suppliers your customers actually ask for — HMAC signing, catalog sync, webhook callbacks, idempotency, all battle-tested.

VK
VoucherKart
INR catalog · instant fulfillment
Live Sync Catalog Instant
BAM
Bamboo
Global aggregator · USD
Live Catalog Async Multi-currency
GP
Gate.io (GatePay)
Crypto gift cards · USDT/USDC
Live HMAC-SHA512 Polling
PL
PineLabs (Woohoo)
QwikGift V3 · OAuth2 + HMAC
Cert Webhook Async Idempotent
FK
Flipkart
Discount programs · INR
Live Catalog Discounts
+N
More on request
Custom integrations · 2–4 weeks
REST SOAP CSV/SFTP

From catalog sync to delivered.

Four stages turn a vendor catalog into a fulfilled order — with cache-backed instant delivery on the happy path and admin-gated fallback when it isn't.

01

Catalog Sync

Vendors publish catalog + denominations. Starship normalizes currencies, countries, and SKUs.

API · CSV · SFTP
02

Inventory Pool

Imported vouchers land in the dual-layer Valkey cache. ZSet sorted by priority & expiry, HSet for metadata.

Pumped every 30 min
03

Order & Fulfill

Web or API order → cache lookup. Hit: delivered in under 1 ms. Miss: admin-gated vendor fallback.

Atomic ZPOPMIN
04

Reconcile

Every allocation matched to vendor records. Drifts flagged, never auto-resolved.

Signed webhooks
Order received Web · API Cache hit? HIT · < 1ms DELIVERED from cache pool MISS · admin gate PENDING vendor fallback (opt-in) Happy path — inventory-first, instant Fallback — never automatic, always logged

Go + Next.js. Boring in all the good ways.

A layered architecture you can reason about at 2am — Go/Fiber API, two Next.js frontends, a Valkey cache that does one job well, and PostgreSQL as the record of truth.

Client Layer
Web Portal
Admin Panel
API Clients
API Layer
Go / Fiber · JWT · HMAC · IP Allowlist
Service Layer
Inventory
Allocation
Orders
Pricing
Reconciliation
Jobs
Integration Layer
VoucherKart
Bamboo
Gate.io
PineLabs
Flipkart
Cache Layer
Valkey · ZSet pool + HSet metadata
Data Layer
PostgreSQL
RabbitMQ
Object Storage (R2)
Go 1.24 Fiber v2 Next.js PostgreSQL 16 Valkey RabbitMQ Squirrel Goose gocron Jet templates OpenTelemetry WebAuthn Docker Playwright Newman

Dual-layer. Atomic. Sub-millisecond.

The cache isn't a performance afterthought — it's the allocation engine. Two complementary structures, one invariant: what the pool sees is what the metadata sees.

ZSet

Sorted Inventory Pool

Each vendor's available vouchers live in a Valkey Sorted Set, scored by priority and expiry. Allocation is a single atomic ZPOPMIN — guaranteed-unique selection under concurrent load.

  • Sorted by priority & expiry
  • Atomic ZPOPMIN — no double-spend
  • O(log N) allocation complexity
  • Per-vendor pool isolation
HSet

Metadata Layer

Every voucher has a companion Hash holding denomination, vendor, expiry, and status. A 108-key invalidation matrix keeps pool and metadata in perfect lockstep — no orphan entries, no ghost allocations.

  • O(1) metadata lookups
  • 108-key invalidation matrix
  • Bi-directional sync with ZSet pool
  • Status tracking across lifecycle
Valkey
In-Memory Cache
ZSet
Pool Structure
Auto
Invalidation
Atomic
Allocation Guard

Production-hardened, not a demo.

Running live with real clients, real vendors, and real money moving through it.

5+
Vendors integrated
in production
8
Currencies supported
with live FX
<1 ms
Cache-hit allocation
under concurrent load
0
Double-allocations
since launch

The honest answers.

What enterprise buyers and API partners actually ask before signing.

Do we have to use the web portal, or can we integrate over API only?
Either works. Some clients use only the branded web portal. Others integrate purely over REST and never touch a UI. Most enterprise buyers end up using both — API for high-volume partner flows and the portal for ops, reporting, and exception handling.
How long does a new client onboarding take?
Typical timeline is 3–5 business days for a standard Web + API client with existing catalog access. Custom vendor integrations add 2–4 weeks depending on the vendor's API maturity. We run a sandbox certification before any prod key is issued.
What happens when inventory is exhausted — do you call the vendor API automatically?
No — never automatically. Cache miss puts the order into PENDING status. Vendor fallback is an explicit admin action with a full audit trail. This is a deliberate design choice: silent auto-spend on a partner API is how you end up with reconciliation nightmares.
Which vendors are already integrated?
Live in production: VoucherKart (India catalog), Bamboo (global aggregator), Gate.io (crypto gift cards), Flipkart (discount programs). PineLabs / Woohoo (QwikGift V3) is in sandbox certification. Custom integrations quoted on request.
How do you handle multi-currency and FX?
Each client is locked to a settlement currency. Vouchers stay in their native currency; display and settlement amounts use live FX rates from a curated pair table (USD, EUR, GBP, CAD, AUD, SGD, NZD, PHP). Rate snapshots are stored per-order so historical reports stay accurate even as FX moves.
What's your SLA and typical response time?
Cache-hit API responses typically return in under 1 ms at the service layer (p50), under 50 ms end-to-end including TLS and WAN. Support response is typically within 48 hours — enterprise plans include faster paths and a direct Slack channel.
Is the platform open-source or self-hostable?
It's a managed platform today. Self-hosted deployments for qualifying enterprises are available on request — contact us with your volumes and compliance constraints and we'll have a pragmatic conversation.

Ready to move gift cards at scale?

Tell us about your volumes, vendors, and timelines. We'll scope it honestly and show you the parts that are already done.

Request a Demo
All Systems Operational | Last verified: | Typical response: 48h | Contact