TaneiPay Developer Hub
Integrate payments, manage sub-merchants, and build on top of the TaneiPay platform. All traffic routes through a single endpoint at taneipay.com.
Build payment integrations
Submit transactions, receive real-time webhooks, export data, and manage your POS environment via REST.
White-label & resell
Provision sub-merchants, apply your branding, manage settlements, and integrate as a reseller or embedded platform.
https://taneipay.com/api — use https://sandbox.taneipay.com/api for testing
Merchant API
A REST API over HTTPS for submitting transactions, managing users and webhooks, and exporting data from your TaneiPay merchant account.
Response format
All responses are JSON. Successful responses include the requested data. Errors return an error field.
HTTP status codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad request — missing or invalid fields |
| 401 | Unauthorized — missing or expired token |
| 403 | Forbidden — insufficient role |
| 404 | Not found |
| 409 | Conflict — duplicate idempotency key |
| 429 | Rate limited — 120 req/min per IP |
| 500 | Internal server error |
Authentication
TaneiPay uses Firebase Authentication. Call POST /api/auth/login with your credentials to receive a short-lived ID token (~1 hour). Pass it as a Bearer token on every subsequent request.
Roles
| Role | Access |
|---|---|
| admin | Full access — users, branding, webhooks, exports, audit log |
| cashier | Submit transactions and view own transaction history only |
Login
| Field | Type | Required | Description |
|---|---|---|---|
| username | string | ✓ | Merchant username |
| pin | string | ✓ | 4-digit PIN |
| totp_code | string | — | 6-digit TOTP (required if 2FA is enabled) |
/api/auth/login again to refresh. A 401 response means the token has expired or been revoked.{"totp_required": true}. Re-submit with the same credentials plus totp_code.Quick Start — submit your first transaction in 3 steps
Authenticate
Exchange your username and PIN for a Bearer token.
Verify connectivity
Call the public health endpoint to confirm routing is working.
Submit a transaction
POST a transaction from your ECR or backend. Always include an Idempotency-Key header to prevent duplicates.
Transactions
Creates a new transaction. If a record with the same ecr_txn_id already exists the status is updated (idempotent). Fires a transaction.created webhook for new records.
Headers
| Header | Description |
|---|---|
Idempotency-Key | Unique key per transaction (use the ECR UUID). Prevents double-submission. |
Body
| Field | Type | Required | Description |
|---|---|---|---|
| ecr_txn_id | string | ✓ | Unique ECR transaction UUID |
| user_id | string | ✓ | Cashier user ID |
| user_name | string | ✓ | Cashier display name |
| status | string | ✓ | approved | failed | pending |
| grand_total | number | ✓ | Total incl. VAT and tip (€) |
| items | array | — | Line items — see schema below |
| tip_amount | number | — | Tip (€) |
| payment_brand | string | — | e.g. Visa, Mastercard |
| wpiResponse | object | — | Raw Worldline terminal response |
| timestamp | string | — | ISO 8601 timestamp |
Returns paginated transactions. Cashiers see only their own; admins see all.
| Query param | Type | Description |
|---|---|---|
| status | string | approved | failed | pending |
| from | string | ISO 8601 start date (e.g. 2026-04-01) |
| to | string | ISO 8601 end date |
| limit | number | Max results (default 200, max 1000) |
| offset | number | Pagination offset (default 0) |
| user_id | string | Filter by cashier (admin only) |
Transaction Exports
Downloads a formatted report. Supports Excel (.xlsx) and CSV. Up to 5,000 transactions per export.
| Param | Type | Description |
|---|---|---|
| format | string | xlsx (default) or csv |
| from / to | string | ISO 8601 date range |
| status | string | Filter by status |
Columns: Transaction ID · Date/Time · Cashier · Status · Items · Subtotal · VAT 0%/9%/21% · Tip · Grand Total · Payment Brand · Card (masked) · Auth Code · Synced
Download a report with only the columns you specify, in the order you specify them. Use preview=true to see the first 5 rows as JSON without downloading.
| Param | Type | Description |
|---|---|---|
| fields | string | Comma-separated field keys (see below) |
| format | string | xlsx or csv |
| preview | boolean | Return JSON preview of first 5 rows |
Dashboard Stats
| Param | Values |
|---|---|
| period | day | week | month | year |
Branding
Read and update the white-label branding applied to your merchant portal and receipts.
Partial update — only send fields you want to change. Colors must be hex (#RRGGBB). Logo: URL or base64 data URI (max ~500 KB).
Webhook Integration Guide
When a configured event occurs, TaneiPay sends a signed HTTP POST to your endpoint. Delivery is retried up to 3 times on failure. Respond with any 2xx status within 10 seconds.
Create your endpoint
Accept POST with Content-Type: application/json. Read the raw body before parsing to validate the signature.
Configure via API
Test the connection
Payload envelope
Retry policy
Failed deliveries are retried up to 3 times with a 1-second delay. A failure is any non-2xx response or a 10-second timeout. After 3 failures the event is dropped.
Webhook Event Reference
transaction.created.Signature Verification
Every delivery includes X-Tanei-Signature — an HMAC-SHA256 of the raw request body. Always verify it to prevent spoofing.
Header format
Verification
API Explorer
Make live API calls. Authenticate first, then use the request builder below.
1. Authenticate
2. Build request
Partner API
A REST API for resellers, white-labellers, and embedded platforms. Provision sub-merchants, apply your branding, manage settlements, and control API credentials — all under your partner account.
What you can build
| Capability | API area |
|---|---|
| Provision sub-merchants under your brand | /merchants |
| Apply white-label colours, logo, company name | /branding |
| View settlement amounts and SLA metrics | /settlements |
| Set pricing tiers and fee contracts | /pricing-tiers |
| Configure partner-level webhooks | /webhooks |
| Generate and rotate API credentials | /api-keys |
partner_id. You can only read and manage resources belonging to your partner account.Authentication
The Partner API uses Firebase Authentication with a partner custom claim. Authenticate via the standard login flow and include the resulting ID token as a Bearer token.
Partner accounts use the same login endpoint as merchants. The returned token will carry is_partner: true and partner_id as Firebase custom claims.
API Key authentication (server-to-server)
For server-to-server calls, generate an API key in the portal and pass it via X-Partner-Key header instead of a Bearer token.
DELETE /api/partner/v1/api-keys/<id>.Quick Start — onboard your first sub-merchant
Authenticate
List your existing merchants
Generate an API key for server-to-server calls
Configure webhooks to receive partner events
Sub-Merchant Management
Returns all merchants scoped to your partner account. Includes basic merchant info and transaction summary.
Settlements
| Param | Type | Description |
|---|---|---|
| from / to | string | ISO 8601 date range |
| status | string | pending | completed | failed |
Pricing Tiers & Contracts
Define fee structures that apply to your sub-merchants. Pricing tiers set transaction fee rates; contracts link a tier to one or more merchants.
Partner Webhooks
Subscribe to partner-level events — settlement completions, new sub-merchants, and more. Payloads are HMAC-SHA256 signed, same as the merchant webhook model.
| Field | Type | Required | Description |
|---|---|---|---|
| url | string | ✓ | HTTPS endpoint URL |
| events | array | — | Event types to subscribe to (default: all) |
| secret | string | — | HMAC signing secret (stored encrypted) |
White-Label Branding
Apply your brand to all sub-merchant portals and receipts. Branding changes propagate automatically to all merchants under your partner account.
Partial update — only send fields you want to change. Changes apply to all sub-merchant portals within seconds.
Multipart upload. Max 2 MB. Returns the GCS URL for the uploaded logo.
API Keys & Credentials
Generate long-lived API keys for server-to-server calls. Keys are shown only once at creation; store them securely. You can have multiple active keys per environment.
Partner API Explorer
Make live partner API calls. Authenticate first with your partner credentials.