One-Time Payments
Preparing your account
Before you can create payments, make sure you've checked everything on the merchant account setup checklist:
- ✓ Active Assets are configured.
- ✓ Gas Wallet contains native tokens.
- ✓ API Key created.
- ✓ After testing, to use the MainNet: KYB procedure is finished.
Overview
Smarty Pay enables one-time payments for experienced in cryptocurrency customers and for newcomers without their own crypto wallets.
We will further explore the various types of one-time payments and their suitability for different merchant customer categories.
Direct Web3 Payments
This payment type is enabled by default.
- Customer connects their cryptocurrency wallet.
- Customer sets a limit for current and future withdrawals from their wallet to SmartyPay.
- Customer initiates a payment.
- All network fees for these transactions are borne by the customer.
Customer can connect their preferred cryptocurrency wallet at the beginning of the payment process:
This payment option is best suited for customers with a solid understanding of cryptocurrencies, including gas fees and native tokens.
Fee Compensation
This payment type is disabled by default.
It's like Direct Web3 Payments, but the merchant pays the network fees instead of the customer. The fees are paid using the native tokens the merchant has added to their gas wallet.
- Customer connects their cryptocurrency wallet.
- Customer initiates a payment.
- All network fees for these transactions are borne by the merchant.
Merchants can turn on this payment method in their settings:
By covering gas fees, merchants can improve customer satisfaction and drive higher cryptocurrency adoption rates.
Payments via Email-wallet
This payment type is enabled by default.
- Customer does not have a cryptocurrency wallet.
- Customer sign in with their Gmail or other email address.
- Smarty Pay associates a unique blockchain wallet with this customer.
- Customer purchases payment tokens for this wallet through third-party On-Ramp services.
- Customer initiates a payment using this wallet.
- All network fees for these transactions are borne by the merchant.
This payment option is suitable for customers who are new to cryptocurrencies and do not have a crypto wallet. For such customers, we use the Torus service, which provides secure access to a customer-associated crypto wallet without requiring any action from the customer. The customer's funds are securely protected by authentication through Gmail or another email service.
By covering gas fees, a merchant can significantly expand its customer base, including those who are new to cryptocurrencies.
This payment method can be disabled in the branding settings section of the merchant dashboard.
QR Payments
This payment type is disabled by default.
QR code payment is suitable for offline sales where customers use a mobile crypto wallet and scan a QR code displayed on the merchant's terminal.
- Customer sees a QR code for transferring tokens to make a payment.
- Customer opens their mobile crypto wallet and scans the QR code.
- Customer transfers tokens to the blockchain address specified in the code.
- A network fee for the transfer is paid by the customer.
- The merchant pays a fee to process the received tokens as payment.
Merchants can turn on this payment method in their settings:
Once QR code payments are activated for a specific token, customers can choose to pay using this method:
Deferred Payments
This payment type is disabled by default.
This is an experimental payment mode currently in beta testing. Sometimes a merchant needs to return a customer to their site as quickly as possible to maintain their focus. Blockchain payments can take a certain amount of time, and these 20-30 seconds can be critical for a merchant's scenario. For such cases, we offer a deferred payment mode.
- Customer pays via their crypto wallet or email wallet.
- Customer is immediately redirected back to the merchant's site.
- Smarty Pay sends a payment request to a deferred queue.
- The merchant's backend is notified of successful payment via a webhook mechanism.
- All network fees for these transactions are borne by the merchant.
Merchants can turn on this payment method in their settings:
Payment Type Comparison
The most relevant payment types are Direct Web3 Payments and Payments via Email-wallet, therefore these payment methods are enabled by default. Other payment types allow merchants to solve additional tasks or increase conversion rates by providing additional conveniences for customers.
Payment type | By default | For beginners | Network fees |
---|---|---|---|
Direct Web3 Payments | Yes | by Client | |
via Email-wallet | Yes | Yes | by Merchant |
Fee Compensation | by Merchant | ||
QR Payments | by Client and Merchant | ||
Deferred Payments | Yes via Email-wallet | by Merchant |
Creation via Dashboard
A merchant can create a payment through the dashboard interface. To do this, in the Payments section, click on the Create Payment button.
In the creation dialog, the following parameters must be specified:
- Asset: select the cryptocurrency from those previously configured.
- Amount: the required payment amount.
- Expires At: the date and time when the payment expires.
- Metadata (optional): extra metadata to be passed with events related to this payment.
- Description (optional): a description of the payment that will be shown to the customer.
Created payment now present in the Payments Table.
If you create a payment in the TestNet mode, you can pay it only with test tokens in the test network.
On the right part of the payment record, you can see a button for generating a payment URL. Client can process payment by this checkout URL.
Creation via API
Payment creation must be performed exclusively on the merchant's backend system. This is because we require the secret part of the API key for request authentication. More API details at the route description.
Creating payment example
# This code must be on your backend side
# Do not send your Secret into Client Browser!
curl --request POST \
--url https://api.smartypay.io/integration/payments \
--user API_KEY:SECRET \
--header 'content-type: application/json' \
--data '{
"amount": {
"value": "15",
"currency": "btUSDTv2"
},
"expiresAt": "2025-07-29T13:51:34.755Z"
}'
Response
{
"payment": {
"id": "3f4pZP9dwUGDUbtVRXrjDh",
"amount": {
"value": "15",
"currency": "btUSDTv2"
},
"status": "Created",
"createdAt": "2024-07-29T13:01:25.752997Z",
"expiresAt": "2025-07-29T13:51:34.755Z",
//...
}
}
Next with payment identifier you can redirect client to Smart Pay checkout URL:
checkout URL
https://checkout.smartypay.io/[payment-id]?param=value
Examples:
https://checkout.smartypay.io/3f4pZP9dwUGDUbtVRXrjDh
https://checkout.smartypay.io/XYRtJaGXPKFTtHv5464CUf
The following query parameters are supported:
Param | Description |
---|---|
success-url | URL to redirect to on success |
fail-url | URL to redirect to on failure |
lang | Language code, possible values are: en , es , fr , ko |
Test Mode
To test your integration you can create payments in the test network. This mode is enabled for the merchant by default.
We recommend using a token USDT with btUSDTv2
code on the Binance Test Net.
The Test Faucet can be found here.
You can view an example of payment in action on our merchant demo site.