Six native SDKs. One REST baseline. All the same object model.
Install with the package manager you already use. Every SDK is strongly typed, idempotent by default, and open-source on GitHub. If your language isn't listed, the REST API is the ground truth, every SDK wraps it.
@tapped/node
Promise-based, isomorphic. Works in Cloudflare Workers, Vercel Edge, Deno, and vanilla Node. First-class TypeScript types, every field, every enum, every response shape.
TappedSwift
Swift Package Manager and CocoaPods. Ships with the Tap Core reader binding so your iOS app becomes a terminal with one import. async/await throughout.
tapped-android
Published to Maven Central. Coroutine-native. Includes the Tap Core reader binding and a ready-to-drop Compose UI for the payment sheet if you want it.
Tapped.NET
Targets netstandard2.1 and net6.0. Async/await end-to-end, with a synchronous wrapper for legacy. Integrates with IHttpClientFactory and the standard .NET logging stack.
tapped-ruby
Rails-friendly. Ships ActiveSupport instrumenters, a Rack middleware for webhook signature verification, and a generator that scaffolds a working sub-merchant onboarding flow.
tapped-go
Context-aware, zero-dependency (uses stdlib net/http). Typed errors for every scheme decline code. Structured logging hooks that drop straight into zap or slog.
What every SDK gives you
Safe retries, always
Every mutation accepts an Idempotency-Key. Retries never double-charge. Keys persist 24h.
Every field, every enum
Strongly typed end to end. Autocomplete the entire API object graph, including error codes.
Hooks & logs
Request/response hooks for tracing, structured logging, and on-failure diagnostics drop-in.
Signature verification
Built-in HMAC-SHA256 verification helpers. Raw-body access preserved across frameworks.
No SDK in your stack? No problem.
Every SDK is a wrapper around the REST API. Base URL api.tapped.so. TLS 1.3. Bearer-token auth. JSON in, JSON out. OpenAPI 3.1 spec published with every release.
If you're in Elixir, Rust, Python, PHP, Java, you're one HTTP client away from a working integration. Community SDKs for all of the above live on GitHub; they pass the same conformance suite we run against our first-party libraries.
# curl, nothing else required curl https://api.tapped.so/v1/taps \ -H "Authorization: Bearer sk_live_3x9..." \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "amount": 4850, "currency": "SGD", "submerchant": "sm_9T3xA...", "device": "dev_ios_a81..." }' # → 200 OK # { "id": "tap_3K2...", "status": "approved", ... }