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

FieldData TypeTransaction
beneficiaryObjectRequired
beneficiary.addressStringBeneficiary crypto address
beneficiary.networkStringBeneficiary crypto network code e.g TRX for Tron, e.t.c
amountNumberAmount to be paid out
currencyStringCurrency code e.g USDT, BUSD, USDC, e.t.c
referenceStringOptional - Merchant's reference of the transaction
fee_bearerString - merchant or beneficiaryOptional - Fee Bearer. When not provided, the value used is merchant
withdrawal_methodStringOptional - 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.