Crypto Payments using Checkout
Please read this page before starting. The invoice creation API uses several parameters that need explanation.
XGateway supports deposits with preliminary creation of invoices with a fixed exchange rate. This is the recommended integration form, which providers merchants with ready-made UI for deposits with crypto assets.
Creating an invoice
In order to create a Fixed Rate Invoice in the payment processing system, you need to make a POST
request to the Invoice API endpoint.
The XGateway provides one API endpoint, which automatically defines a corresponding payment method based on the input parameters provided by the merchant. Below is an example of a payload that contains the minimum fields set required to create an invoice for a Crypto Payment.
{
"orderId": "test-prod-order",
"customerId": "test-prod-customer",
"baseCurrency": "USD",
"amount": 10
}
The request returns a link to a correspondingly configured Checkout page. This page contains the wallet address for a deposit to be made. The page is used by a customer to finish the deposit.
By default, the payment gateway links the created wallet to a customer forever. The created wallet can be used across all EVM compatible chains.
Remember to authorise the request with your key using x-api-key
header.
The default lifetime of an invoice is 15 minutes.
iFrame or redirect
The URL may be used to redirect a user to a new page, where they finish the payment. This can be done using a new tab too. A redirect is an option with less efforts.
When the deposit is done, a user is redirected back to your app to the URLspecified in the redirectUrl parameter.
The invoice URL may also be used in an iFrame. Please check this page for detailed instructions on the iFrame setup.
Processing a callback
When a customer makes a deposit using a cryptocurrency, XGateway detects the transaction and sends a deposit callback to the merchant. Below is an example of such a callback. For detailed information, please visit this page.
{
"callbackType":"transaction",
"amount":"200",
"applicationId":null,
"currency":"USDT",
"customerId":"000394",
"hash":"...",
"id":"7e71d132-d80d-4140-8e60-9c89d0bd9eed",
"invoiceId":"184e9933-1526-...-fe567091b5bd",
"network":"tron",
"orderId":null,
"status":"confirmed",
"transactionHash":"0x58f6",
"type":"deposit",
"info":{
"exchangeRate":"1.03759",
"referenceAmount":"207.52",
"referenceCurrency":"USD",
"referenceExchangeRate":"1.000065",
"transactionAmount":"207.51518",
"transactionCurrency":"tUSDT"
},
"fees":{
"processing":"7.263031",
"technical":null
},
"eur":"200.12",
"usd":"207.52"
}
Limits
The invoice creation API validates the amount value.
An invoice will not be created, if the amount exceeds the limits.
Confirming a transaction
Due to security risks, merchants must use our API endpoint to request transaction details. XGateway is not liable for issues caused by relying only on callback data.
To confirm the callback is valid, please use the API endpoint.
Testing Crypto Payments on Demo environment
You can test direct crypto deposits in the demo environment.
The best way to test the integration is to deposit native token on a test network. Proceed with the integration up to the point where the customer wallet is generated and returned to you. Make sure that deposits of ETH are enabled for your profile.
Use faucets, like this one, to get some ETH on Sepolia test network.
Send a portion of this ETH to the wallet, assigned to your customer.
Wait for the system to send you a callback about a successful deposit.
More faucets:
Last updated