Initiate a refund

POST/payout/refund/local

Initiate a refund in the cryptocurrency that was received by the payment.

Body application/json

payment_referencestringrequired

Unique Payment Reference Number to refund from

emailstringrequired

Email address of the refund recipient

refund_amountnumber<float>required

Amount of the payment to be refunded. The refund currency is the original payment currency

refund_reason"requested_by_customer" | "aml"

String indicating the reason for the refund. The available options are requested_by_customer to signify a typical refund requested by the customer, and aml to indicate that you suspect the original payment may be associated with illegal activity. If aml is specified, there is a possibility that the user or wallet may be restricted from conducting any further transactions.

remarksstring

Remarks for the payout

notify_urlstring<uri>

The URL to send the webhook notification. The webhook URL given in your account setup will be used if this is not provided. For testing you can use webhook.site

notify_secretstring

The shared secret that will be used to sign the notification. This secret can be at most 64 characters long. If this is not provided in the payment request, the system will create a random secret just for that payment.

Response

Success

payout_referencestring

Unique payout reference number

order_idstring

Your system unique order id. You will get this in the notification webhook data, if you insert your unique order_id in the request body during the payout/settlement creation.

type"refund" | "withdraw"

The type of payout:

  1. refund - A partial or complete refund of a prior successful payment.

  2. withdraw - A settlement of the merchant’s accumulated USD balance in cryptocurrency.

account_type"local"

Account type the funds are drawn from: local - Funds are drawn from a local currency account

convert_type"local-local" | "local-crypto"

Type of conversion the funds underwent:

  1. local-local - Funds are drawn from a local currency account and paid out as local currency.

  2. local-crypto - Funds are drawn from a local currency account and paid out as cryptocurrency.

local_currencystring

The local currency equivalent of the payout. This should be a 3-character ISO 4217 currency code. Please ignore if the payout is in cryptocurrency.

local_amountnumber<float>

The local currency amount to be paid out. Please ignore if the payout is in cryptocurrency.

crypto_currencystring

Cryptocurrency that will be paid out. Please ignore if the payout is in local currency.

crypto_amountnumber<float>

Amount of cryptocurrency to be paid out if the settlement is in cryptocurrency.

network_fee_crypto_amountnumber<float>

Amount of cryptocurrency representing the network fee. This is denominated in crypto_currency.

net_crypto_amountnumber<float>

Amount of cryptocurrency after deduction of the network_fee_crypto_amount.

crypto_addressstring

Address that recipient will receive the payout at.

exchange_ratenumber<float>

The exchange rate that will be used to exchange local currency to cryptocurrency or vice-versa.

status"new" | "confirm" | "done" | "cancel"

The current status of the payout:

  1. new - The payout has just been created, but the recipient has not entered in their receiving crypto address and the exchange rate has not been fixed.

  2. confirm - The recipient has confirmed their receiving crypto address and the exchange rate has been fixed.

  3. done - The crypto payout has been broadcast to the blockchain.

  4. cancel - The crypto payout has been cancelled.

  5. pending_authorization - The crypto payout is pending for authorization.

status_datestring<date-time>

Date and time the status was updated

merchant_namestring

Name of the merchant

remarksstring

Remarks for the payout

notify_urlstring<uri>

The URL to send the webhook notification. The webhook URL given in your account setup will be used if this is not provided. For testing you can use webhook.site

notify_secretstring

The shared secret that will be used to sign the notification. This secret can be at most 64 characters long. If this is not provided in the payment request, the system will create a random secret just for that payment.

Not authorized

messagestring

No permission to initiate this refund from this payment

messagestring

Payment reference to refund from not found

messagestring

Refund Processing Error - The refund cannot be processed

messagestring

Validation Error - There are 1 or more errors in the request body

messagestring

Main error message

errorsany[]
Show errors properties
messagestring

Additional error messages

pathstring

JSON object key that has the error

Request
curl -X POST "https://api.triple-a.io/api/v2/payout/refund/local" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
  "payment_reference": "SDF-453672-PMT",
  "email": "alice.tan@triple-a.io",
  "refund_amount": 12.75,
  "refund_reason": "requested_by_customer",
  "remarks": "Refund for a water pistol",
  "notify_url": "https://webhook.site/1a2d24e8-1594-4569-bc35-079049e4d805",
  "notify_secret": "Cf9mx4nAvRuy5vwBY2FCtaKr"
}'
Response
{
  "payout_reference": "AGJ-937870-PYT",
  "order_id": "<your_order_id>",
  "type": "withdraw",
  "account_type": "local",
  "convert_type": "local-crypto",
  "local_currency": "SGD",
  "local_amount": 10,
  "crypto_currency": "testBTC",
  "crypto_amount": 0.001067203,
  "network_fee_crypto_amount": 0.000007203,
  "net_crypto_amount": 0.00106,
  "crypto_address": "1NcAyv8YVCnQGCrDb4kiUm1jj6GLyowxER",
  "exchange_rate": 10277.49,
  "status": "new",
  "status_date": "2020-01-26T03:57:22Z",
  "merchant_name": "A to Z Toys and Games",
  "remarks": "Refund for a water pistol",
  "notify_url": "https://webhook.site/1a2d24e8-1594-4569-bc35-079049e4d805",
  "notify_secret": "Cf9mx4nAvRuy5vwBY2FCtaKr"
}