Skip to main content

Claim Earnings

Off-Chain Claim

Transfer pending off-chain referral earnings to the user's account balance. This is instant and requires no on-chain transaction.

POST /referral/claim
Authorization: Bearer <token>
Content-Type: application/json

Request Body

Empty object {}.

Response

{
"success": true,
"amount": "45.00",
"tx_hash": null
}
FieldTypeDescription
successboolWhether the claim succeeded
amountDecimalAmount credited to account (USDT)
tx_hashnullAlways null for off-chain settlement

Error Codes

HTTPCodeDescription
400NO_PENDING_EARNINGSNo pending earnings to claim
400BELOW_MINIMUMPending amount is below 10 USDT minimum
500DB_ERRORServer error

On-Chain Claim Signature

Generate an EIP-712 signature for the user to call claimRebate on the ReferralRebate smart contract.

POST /referral/on-chain/claim-signature
Authorization: Bearer <token>
Content-Type: application/json

Request Body

{
"amount": "50.00"
}
FieldTypeRequiredDescription
amountstringYesUSDT amount to claim (must be > 0)

Response

{
"amount": "50000000",
"nonce": 0,
"deadline": 1772097006,
"signature": "0x9efb5f986acf3dafdd...",
"contract_address": "0x..."
}
FieldTypeDescription
amountstringAmount in on-chain USDT precision (6 decimals, i.e., amount × 10^6)
nonceuint64Current user nonce (increments after each on-chain claim)
deadlineuint64Signature expiry (Unix timestamp, seconds)
signaturestringBackend-generated EIP-712 signature
contract_addressstringReferralRebate contract address

Smart Contract Call

// claimRebate(uint256 amount, uint256 deadline, bytes signature)
ReferralRebate(contractAddress).claimRebate(amount, deadline, signature)

Error Codes

HTTPCodeDescription
400INVALID_AMOUNTAmount format is invalid or ≤ 0
500SIGNATURE_ERRORFailed to generate claim signature
500CONFIG_ERRORBackend signer key not configured

Code Examples

Python — Off-Chain Claim

import requests

BASE_URL = "https://api.ztdx.io"
JWT_TOKEN = "your_jwt_token"

resp = requests.post(
f"{BASE_URL}/referral/claim",
headers={"Authorization": f"Bearer {JWT_TOKEN}", "Content-Type": "application/json"},
json={},
)
data = resp.json()
print(f"Claimed: {data['amount']} USDT, success={data['success']}")

Python — On-Chain Claim Signature

import requests

BASE_URL = "https://api.ztdx.io"
JWT_TOKEN = "your_jwt_token"

resp = requests.post(
f"{BASE_URL}/referral/on-chain/claim-signature",
headers={"Authorization": f"Bearer {JWT_TOKEN}", "Content-Type": "application/json"},
json={"amount": "50.00"},
)
data = resp.json()
print(f"Amount (Wei): {data['amount']}, Nonce: {data['nonce']}, Deadline: {data['deadline']}")
print(f"Signature: {data['signature']}")
print(f"Contract: {data['contract_address']}")
# Use this signature to call ReferralRebate.claimRebate(amount, deadline, signature) on-chain