Send Crypto
Create On-Chain Payout
Sends crypto from the end user’s wallet to an external blockchain address.
Endpoint
POST /whitelabel/wallet/payoutRequest Headers
x-tlp-apikey: <api-key>
x-tlp-signature: <hmac-signature>
Content-Type: application/jsonAuthorization Requirements
The request requires:
Approved end-user KYC
A transaction email OTP
The end user’s Authenticator TOTP
A valid timestamp
A unique nonce
Sufficient wallet balance
A valid and supported destination address
Any applicable wallet-screening or Travel Rule checks
Request Fields
Provide at least one of the following user identifiers: endUserEmail, endUserId, or externalUserId.
endUserEmail
String
Conditional
End user’s email address
endUserId
Number
Conditional
Tylt's end-user ID
externalUserId
String
Conditional
Merchant’s own user identifier
emailCode
String
Yes
Email OTP issued to the end user
googleAuthCode
String
Yes
End user’s six-digit Authenticator code
address
String
Yes
The destination wallet address where the crypto needs to be sent
settledAmount
String
Yes
The amount of the crypto token to be sent
settledCurrency
String
Yes
The crypto token to be sent.
networkSymbol
String
Yes
The blockchain network to be used
networkId
String
Yee
The Id of the network
timestamp
Number
Yes
Current epoch time in milliseconds
nonce
String
Yes
Unique request identifier
The request must also include the payout parameters required by Tylt’s underlying wallet payout API, including the destination, asset, network, and amount.
Example Request Structure
The field names
destinationAddress,amount,currency, andnetworkmust be confirmed against the deployed payout API schema.
Recommended Payout Flow
Retrieve the end user’s available balance.
Collect the destination wallet address.
Ask the end user to select the token and blockchain network.
Validate the destination address.
Determine whether Travel Rule information is required.
Submit the required counterparty information.
Call the transaction OTP endpoint.
Collect the email OTP and Authenticator code.
Generate a timestamp and unique nonce.
Sign the complete request body.
Submit the payout request.
Display the transaction status to the end user.
Track the transaction using the transaction-history or transaction-details API.
Code Snippet
Example Response
The final response fields depend on the underlying payout controller.
Transaction Status
An on-chain payout may pass through statuses such as:
pending
The request has been received and is being processed
processing
The transaction is undergoing security or compliance checks
submitted
The transaction has been submitted to the blockchain
completed
The blockchain transaction has completed
failed
The transaction could not be completed
rejected
The transaction was rejected by a security or compliance control
Actual status values may vary according to the deployed wallet API.
Possible Errors
400
Parameter emailCode is mandatory.
Email OTP was not supplied
400
Parameter googleAuthCode is mandatory.
Authenticator code was not supplied
400
Access Denied! OTP does not match!
Email OTP is incorrect or expired
400
Unable to verify 2FA. Contact Support.
TOTP enrollment or verification failed
400
Parameters timestamp and nonce are mandatory for this operation.
Replay-protection fields are missing
400
Invalid signature.
Signature does not match the signed body
400
Validation error
Payout information is invalid
401
Api Key authentication failed!
API authentication failed
403
API key or owner is inactive.
API access or merchant account is inactive
403
IP not whitelisted.
Request originated from an unauthorized IP
403
End user is suspended.
End-user account is suspended
403
KYC approval required
End-user KYC is not approved
404
End user not found for this owner.
No matching end user was found
409
Duplicate request detected (nonce already used).
The nonce was previously used
422
Insufficient balance
The user does not have sufficient funds
503
Unable to verify IP whitelist.
Tylt could not verify the IP whitelist
Recommended On-Chain Withdrawal Flow
A standard on-chain withdrawal should follow this sequence:
Confirm that the end user’s
walletOpsAllowedstatus istrue.Retrieve the end user’s balance.
Collect the payout amount, asset, network, and destination address.
Validate the destination address.
Determine whether Travel Rule information is required.
Submit counterparty information through:
Request the transaction OTP through:
Collect the email OTP and Authenticator code from the end user.
Generate the timestamp and nonce.
Sign the complete payout body.
Submit:
Retrieve the transaction details or history until the transaction reaches a final status.
Last updated