Scroll to top

Create PayOut allows you to initiate a withdrawal from a merchant wallet to a user.

When a user initiates a deposit with his Luxon account, we send you their walletID (also called recipientWallet parameter) on webhook.

The way to obtain the walletID from our API is when a user performs a deposit.

It’s important that the WalletID remains hidden from users within both your and Luxon’s interfaces. It’s exclusively for backend communication between you and Luxon.

If an indication of this string is needed after all in some cases (although it is not recommended), the display needs to be masked.

The walletID value can be provided by Luxon for a user upon demand in case it is needed for support needs. 

This identifier (recipientWallet) should be saved once a user has made his first deposit since it is used to initiate a PAYOUT request using this endpoint.



Request Parameters

Name Type Description
merchantTransactionId String A Unique ID to identify the transaction.
merchantUserId String A unique ID to identify the user.
recipientWallet String The wallet address of the user to whom the PayOut is being sent.
comment String A text comment that accompanies the deposit (visible to the user and merchant).
amount Integer A positive integer in cents represents how much the user wishes to deposit.

e.g. 100 EUR would be 10000 / 50 USD would be 5000

currency String The ISO 3 letter currency code in lowercase, see the supported currency list for details.
brand String An optional string that can be used to send identifying information for the merchant to allow grouping of transactions.


Request Format

"merchantTransactionId": "string",
"merchantUserId": "string",
"recipientWallet": "string",
"comment": "string",
"amount": number,
"currency": "String",
"brand": "string"

Response Parameters

Name Type Description
transactionId String A unique Luxon transaction identifier that can be used as a reference in other API calls.
fee Integer The fee charged to the merchant for this transaction in EUR cents.
status String A status object with the results of the call.


Response Format

"transactionId": "string",
"fee": number
"status": {
	"code": "string",
	"message": "string"


If ‘recipientWallet’ is provided, it is checked whether it is valid. If it is not valid, the phone number will be used instead. Otherwise (meaning if ‘recipientWallet’ is not provided), the email will be used.

You can also use recipientWallet and email as parameters on the same request, but in this case, the recipientWallet will be checked, not the email.

If a user’s status is anything other than ‘ACTIVE’ (such as ONBOARDING or BLOCKED), their payout attempts will trigger an ‘invalid.user.status’ error.