Crypto Withdrawals
Crypto withdrawals allow merchants to make on-chain payouts to cryptocurrency wallets via the Shutterscore API.
When a customer requests a withdrawal to their crypto wallet on your application, your application asks Shutterscore to process this payout. Our API then processes the request and makes a payment to the customer’s wallet, while also notifying your application about the completion of the payment. Easy peasy!
How to make a crypto withdrawal using Shutterscore API
The following steps need to be taken in order to process payments to a crypto wallet:
1. Fund merchant account
To make withdrawals, you must have funds in your merchant account. You can fund your account by making deposits into your account or by requesting a manual top-up.
Note : To test transactions, you can fund your sandbox account. For more information, please see the test section
2. Display supported currencies and network
When withdrawing to crypto wallets, the currency being withdrawn and the supported network is required.
Crypto Networks
In recent times, a cryptocurrency or crypto token may be available on multiple blockchains other than its own blockchain. These other blockchains are referred to as networks.
Before requesting a withdrawal, confirm that the address provided corresponds to the network of the currency being withdrawn. You can click here to see the cryptocurrencies and networks supported by shutterscore.
3. Initiate withdrawal
To initiate a withdrawal to a crypto wallet, you need to send a request to the withdrawal API with the required parameters. If the wrong payload is sent, the transaction will fail and you will receive a failed response.
{{baseurl}}/v1/merchant/public/transactions/withdraw
{
"beneficiary": {
"address": "TMBu39oZd718P9T5xJPoxJx4ooRYKYAD5k",
"network": "TRX"
},
"amount": 1,
"currency": "USDC",
"reference": "CRYPTO-PAYOUT",
"fee_bearer": "merchant"
}
{
"status": true,
"statusCode": 200,
"message": "Withdrawal completed successfully",
"data": {
"from_amount": 1,
"amount": 1,
"amount_charged": 1.01,
"amount_settled": 1,
"currency": "USDC",
"from_currency": "USDC",
"from": "SELF",
"to": "OTHER",
"type": "WITHDRAWAL",
"purpose": "WITHDRAWAL",
"reference": "wthglgm449fhz4r6swd86q1z",
"channel": "API",
"settled_at": "2022-10-22T14:43:54.152Z",
"narration": "withdrawal by Chris Steve on Prime Switch Limited merchant account",
"beneficiary": "{\"address\":\"TMBu39oZd718P9T5xJPoxJx4ooRYKYAD5k\",\"network\":\"TRX\"}",
"fee_bearer": "merchant",
"fee": 0.01,
"destination": "main_balance",
"payment_slug": "usdc-payout-juice",
"status": "pending",
"from_merchant": "Prime Switch Limited",
"to_amount": null,
"to_currency": null,
"trx_rate": null,
"merchant_reference": "CRYPTO-PAYOUT",
"settlement_time": null,
"settlement_date": null,
"extra_data": null,
"reject_reason": null,
"provider_fee": null,
"provider_amount": null,
"trace_id": null,
"payment_proof": null,
"created_at": "2022-10-22T14:43:54.157Z",
"updated_at": "2022-10-22T14:43:54.157Z",
"to_merchant": null
}
}
Request Body
The parameters below are used with the withdrawal API to request a withdrawal to a Nigeria bank account
Field | Data Type | Transaction |
---|---|---|
beneficiary | Object | Required |
beneficiary.address | String | Beneficiary crypto address |
beneficiary.network | String | Beneficiary crypto network code e.g TRX for Tron, e.t.c |
amount | Number | Amount to be paid out |
currency | String | Currency code e.g USDT, BUSD, USDC, e.t.c |
reference | String | Optional - Merchant's reference of the transaction |
fee_bearer | String - merchant or beneficiary | Optional - Fee Bearer. When not provided, the value used is merchant |
withdrawal_method | String | Optional - Required when using a specific withdrawal method |
A payment status is returned after a request is received, and it can be successful, processing, or failed. Please see our transaction status page for additional information.
4. Receive and validate notification
You can set your application to receive transaction status updates via webhooks if provided, and email, when the payout is completed. Please read the webhooks page for details on securing and validating the webhook notification on your end, as well as the webhook structure and body.
Updated about 2 years ago