Skip to main content
POST
Auth method: Signed (HMAC) — this endpoint requires the full set of signed headers: x-access-id, x-request-id, x-timestamp, and an HMAC-SHA256 authorization signature. See Authentication.
All conversion endpoints share a bucket of 10 requests per minute per merchant, on top of the general limit. See Rate limits. There are two conversion types:
  • crypto swaps coin on chain into toCoin on toChain. The result always settles to your own merchant wallet on toChain.
  • fiat converts coin on chain and sends the result to one of your saved, active payout accounts (payoutAccountId). If that payout account is a bank account, the funds are paid out in its fiat currency; if it is a crypto account, they are sent to its address on its chain and coin.
Tender picks the conversion route automatically; you can’t choose a provider. The conversion is created with status pending and processed asynchronously. There are no conversion webhooks: poll Get Conversion until status is completed or failed. The conversion must be worth more than $20 USD. Call Calculate Conversion Fee first to show the fee and the expected output.

Headers

string
required
Base64-encoded HMAC-SHA256 signature of {"timeStamp":"<x-timestamp>","requestId":"<x-request-id>","accessId":"<x-access-id>"}, signed with your access secret. The request body is not part of the signature.Example: "pV3n0o8kq0lK2mJ8bZ1yq3Yt6hR0cXK9u4mVJ2l9sE0="
string
required
ISO 8601 timestamp; must be within 5 minutes of server timeExample: "2026-10-15T09:45:53.000Z"
string
required
A unique UUID v4 per requestExample: "550e8400-e29b-41d4-a716-446655440000"
string
required
Your API access ID provided by TenderExample: "your-access-id-here"
string
required
Must be application/jsonExample: "application/json"

Body

string
required
Conversion type.Allowed values: crypto, fiatExample: "crypto"
string
required
Source chain IDExample: "ethereum"
string
required
Source coin IDExample: "usdt"
string
required
Amount to convert, in the source coin. Must be sent as a string.Example: "100"
string
Destination chain ID. Required when type is crypto.Example: "solana"
string
Destination coin ID. Required when type is crypto.Example: "sol"
string
ID of one of your active payout accounts. Required when type is fiat.Example: "66aec7de809b7f45c42a49f9"

Response

string
required
Example: "success"
string
required
Example: "Conversion created successfully"
object
required

Errors

Authorizations

authorization
string
header
required

Signed (HMAC) authentication. Required headers: x-access-id, x-request-id (UUID v4), x-timestamp (ISO 8601, must be within 5 minutes of server time), and authorization: the Base64 HMAC-SHA256 of the JSON string {"timeStamp":"","requestId":"","accessId":""} (keys in that order, no whitespace) using your access secret. The request body, method and path are not signed. The API key must be linked to an outlet.

Headers

authorization
string
required

Base64-encoded HMAC-SHA256 signature of {"timeStamp":"<x-timestamp>","requestId":"<x-request-id>","accessId":"<x-access-id>"}, signed with your access secret. The request body is not part of the signature.

x-timestamp
string<date-time>
required

ISO 8601 timestamp; must be within 5 minutes of server time

x-request-id
string<uuid>
required

A unique UUID v4 per request

x-access-id
string
required
Content-Type
enum<string>
required
Available options:
application/json

Body

application/json
type
enum<string>
required
Available options:
crypto,
fiat
chain
string
required
Maximum string length: 500
Example:

"ethereum"

coin
string
required
Maximum string length: 500
Example:

"usdt"

amount
string
required

Amount in the source coin, as a string. Must be worth more than $20 USD.

Maximum string length: 500
Example:

"100"

toChain
string

Required when type is crypto

Maximum string length: 500
Example:

"solana"

toCoin
string

Required when type is crypto

Maximum string length: 500
Example:

"sol"

payoutAccountId
string

Required when type is fiat. One of your active payout accounts.

Response

Conversion created

status
string
required
Example:

"success"

message
string
required
Example:

"success"

data
object
required