Skip to main content

Tender API Specification

Prefer to use OpenAPI tooling? You can access our full OpenAPI spec directly or import it to Postman, Insomnia, or other API clients:

Download OpenAPI JSON

Get the complete OpenAPI 3.1.0 specification for Tender API

What You Can Do With the OpenAPI Spec

  • Import to Postman or Insomnia - Generate a complete API collection with all endpoints
  • Generate API Clients - Use tools like OpenAPI Generator to create SDK code
  • API Testing - Automate testing with tools that support OpenAPI specs
  • Documentation - Generate custom documentation using Swagger UI or similar tools
  • Validation - Validate request/response payloads against the schema

Using with Postman

  1. Open Postman
  2. Click Import in the top left
  3. Choose Link and paste: https://docs.tender.cash/openapi.json
  4. Click Continue and then Import
  5. Your Tender API collection is ready to use!

Using with OpenAPI Generator

Generate client libraries in your preferred language:

Changelog

15 October 2026

The reference now matches the API’s current behaviour. If you built against earlier versions of these docs, check the following. Corrections
  • Payment initiation: the token field is currency, not coin.
  • Webhooks: Tender sends each webhook once, with no automatic retries. Webhooks are not signed; authenticate them with the custom headers you register. The envelope now documents eventId, which is new on every delivery. Register webhooks only with POST /v1/api/webhook; there is no callbackUrl field on other requests. Each merchant has one webhook, and posting again replaces it. See Webhooks and the full event catalogue.
  • Payouts: POST /v1/api/payout/fiat and POST /v1/api/payout/crypto require an Idempotency-Key header. See Idempotency.
  • Validation errors return HTTP 400 with the first failing message, never 422. Unknown body fields are ignored. See Errors.
  • Authentication: x-timestamp must be within 5 minutes of server time; only the timestamp, request ID and access ID are signed. The Python signing example is fixed (compact JSON separators and a millisecond UTC timestamp). See Authentication.
  • Webhook management: GET /v1/api/webhook and GET /v1/api/webhook/logs return 202; GET /v1/api/webhook returns 406 when no webhook is registered. Webhook log fields are corrected.
  • Rate limits are now documented. See Rate limits.
Newly documented endpoints
  • POST /v1/api/payment/cancel/{id}: cancel a pending payment.
  • POST /v1/api/payment/quote/{id}: quote a payment before initiating it.
  • GET /v1/api/agent: list your agents.
  • GET /v1/api/conversions/stats: conversion statistics.
  • POST /v1/api/wallet/transfer/status: status of a subwallet transfer.
  • GET /v1/api/wallet/{walletReference}/transactions: transactions for a subwallet.
  • GET /v1/api/webhook/events: list the webhook event names you can subscribe to.