Skip to main content

Create a Mixin Payment

MixPay API for creating a mixin payment.

POST /payments

You can get the complete parameters to evoke Mixin payment from the API below to transfer assets.

Endpoint URL


payeeId*requiredStringAccount ID for receiving crypto, pls see Five types of account and How to get payeeId.
orderId*required if no traceIdStringUnique in your system. String lengths between 6-36 must be letters, numbers, dashes and underscores and NOT space. orderId and payeeId make a payment unique.
paymentAssetId*requiredStringassetId of payment cryptocurrency. You can see the supported asset id in Payment Assets.
settlementAssetId*requiredStringassetId of settlement cryptocurrency. Settlement assets you prefer. But you need to pay attention to the strictMode field. For more options, see here.
strictModeoptionalBooleanDefault false. true means that the payment must be settled strictly according to the currency set by settlementAssetId. See here for more details.
quoteAssetId*requiredStringassetId of quote cryptocurrency. You can see the supported asset id in Quote Assets.
traceIdoptionalStringUUID, used to prevent double payment and checking the payment result. You should use orderId instead.
clientIdoptionalStringUUID of client of the payment.
paymentAmountoptionalNumericThe quoteAmount parameter is invalid when paymentAmount is not null.
remarkoptionalStringmaximum 50. Payment remark viewable by the payer.
noteoptionalStringmaximum 50. Payment note viewable by the payer.
settlementMemooptionalStringmaximum 200. A memo is similar to Mixin Snapshots, this parameter you can customize.
returnTooptionalStringAfter successful payment, the URL page will want to redirect to. Useful when you are in a browser JavaScript environment.
failedReturnTooptionalStringAfter payment failure, the URL page will want to redirect to. Useful when you are in a browser JavaScript environment.
callbackUrloptionalStringAfter payment successfully, MixPay will issue a POST request to this URL on our server-side. For security reasons, URLs only support HTTPS and has to be URL encoded. Please refer to Callback Event.
callbackEventoptionalStringSend settle or pending to subscribe more callback event. Please refer to Payment Callback.
expiredTimestampoptionalintSet a expired timestamp. This value must be greater than 10s and less than 2880min. After this period, the payment result status field will be marked as failed, and the failureReason will be Payment overtime. If you are not setting this value, the payer can have unlimited time to complete this payment.


settlementMemo parameter explanations: If you use Mixin API like GET /snapshots, you can find the memo in this response. This memo is the settlementMemo set by you. If you don't use this parameter, the specification of the memo can be found here.

Example request - Accepting Payments

The following is a coffee shop example:

  • Merchant wants to accept BTC as a settlement asset.
  • The coffee order is 10 USD (Quote Asset is USD).
  • The customer wants to pay in ETH.

The request will be:

curl -i -X POST \
-d "payeeId"=a0d7791408776b47eb1dd3f94ed15d6a \
-d "orderId"=myapp_20001 \
-d "paymentAssetId"="43d61dcd-e413-450d-80b8-101d5e903357" \
-d "settlementAssetId"="c6d0c728-2624-429b-8e0d-d9d19b6592fa" \
-d "quoteAssetId"="usd" \
-d "quoteAmount"="10"
// title: Response

// `expire` and `seconds` are the same thing as marking the
// payment "tolerate period" expired (see article end). When
// the "tolerate period" expired, you can reuse the same request
// to refresh the payment.

// Who will receive the money

// The trace id when the user pays, use to get the result of payment.
// You can use this to construct a Mixin Wallet request.


// Unique in your system.




// Use to making a Mixin Wallet request.


Collect the money

And then, you can use this response to make Mixin Payment. Please refer to Pay with Mixin wallet.


When is a MixPay payment expired? Please refer to Expiration.