Payouts
Wooshpay is able to make payouts to your bank account. You can view a list of all of your payouts in your bank account on the Dashboard. Also, you can retrieve the payout list by API.
Payout Status
There are five states of one payout request. Once the payout is created, the initial state will be pending. When cancel API is called, the status will be canceled, leading to the cancellation of the payout process. When the request is submitted to the bank, the state turns to in_transit. Then it breaks down into two possibilities: if the bank processing fails, it will lead to Failed of the payout result; if the bank processing is successful, then it will lead to paid status.
Payout Speed
While payout schedule refers to the cadence your funds are paid out on (for example, day of the week), payout speed refers to the amount of time it takes for your funds to become available. The payout speed varies per country and is typically expressed as T+X days. Some payment processors may start “T” from their internal settlement time, meaning when the funds land in their bank accounts.
“T” refers to transaction time, meaning the time of initial payment confirmation or capture. For example, if your account is based in a country with a T+3 standard payout speed and you’re on a manual payout schedule, your balance will be available to payout within 3 business days from the time you captured a payment.
Minimum Payout Amount
The minimum payout amount is typically one base unit of the local currency. For example, in the US, the minimum payout is one US dollar, whereas in Singapore the minimum payout is one Singapore dollar.
Payout Speed and Minimum Amount
COUNTRY/REGION | PAYOUT SPEED(BUSINESS DAYS) | MINIMUM AMOUNT(LOCAL CURRENCY) | MAXIMUM AMOUNT(LOCAL CURRENCY) |
---|---|---|---|
United States of America | 1-3 | 0.01 USD | / |
Canada | 1-3 | 0.01 CAD | 2,000,000 CAD |
Japan | 1-3 | 100.00 JPY | / |
Hong Kong | 1-3 | 0.01 HKD | / |
Singapore | 1-3 | 0.01 SGD | / |
South Korea | 1-3 | 1.00 KRW | / |
Malaysia | 1-3 | 1.00 MYR | / |
Thailand | 1-3 | 10 THB | 500000 THB |
Philippines | 1-3 | 10 PHP | / |
Vietnam | 1-3 | 10000 VND | 300000000 VND |
Indonesia | 1-3 | 10000 IDR | 1000000000 IDR |
India | 1-3 | 0.01 INR | / |
Israel | 1-3 | 0.01 ILS | 100000 USD |
Pakistan | 1-3 | 0.01 PKR | 1000000 PKR |
Turkey | 1-3 | 0.01 TRY | 250000 TRY |
UAE | 1-3 | 0.01 AED | / |
European Union(Single Euro Payment Area) | 1-3 | 0.01 EUR | / |
United Kingdom | 1-3 | 0.01 GBP | / |
Denmark | 1-3 | 0.01 DKK | / |
Norway | 1-3 | 0.01 NOK | 25000000 NOK |
Poland | 1-3 | 0.01 PLN | 150000 PLN |
Sweden | 1-3 | 0.01 SEK | / |
Australia | 1-3 | 0.01 AUD | / |
New Zealand | 1-3 | 0.01 NZD | / |
China Mainland | 1-3 | 300 CNY | / |
The table above is a standard case. The Payout Speed may vary due to different banks, and it may take a few extra days. The type of business and the country you’re in can also affect payout timing.
Start your payout
You can create a payout with Wooshpay API. In general, there are two scenarios for payouts:
- Global Payouts
- Payouts to China
Before creating a payout, there are some of the required parameters that should be specified :
beneficiary
: Beneficiary details should be provided in this object, if this is an initial payout thatbeneficiary_id
is not used.entity
: The entity who receives the payoutentity.type
: The type should be eitherbusiness
(for company) orindividual
(for personal)entity.business
: Required the business details includingcompany_registered_name
,address
andadditional_info
.entity.payee
: Required the individual details includingaddress
,additional_info
.
destination
: Required the bank account or card information the payout was sent to.destination_type
: Can bebank_account
orcard
.bank_account
card
nickname
: Nickname of beneficiary for quickly retrieving
For more information about creating a beneficiary
you can go to the Beneficiary API Reference
Global Payouts
Create a global payout
To create a new Global Payout by directly providing beneficiary information
For Company Request
{
"payment_amount": 1000,
"payment_currency": "GBP", //the currency that the beneficiary receives
"source_currency":"USD", //the currency that the Payer uses to fund the payment
"type": "global",
"beneficiary_data": {
"entity": {
"type": "business",
"business": {
"company_registered_name": "Wooshpay",
"address": {
"city": "seattle",
"country": "US",
"line1": "422 Ave",
"state": "Washington",
"postal_code": "98109"
},
"additional_info": {
"business_area": "",
"business_phone_number": "12093321241",
"business_registration_number": "WF123123131",
"legal_rep_first_name": "John",
"legal_rep_last_name": "Wick",
"legal_rep_id_type": "social_security",
"legal_rep_id_number": "WA112312313411",
"legal_rep_email": "woosh@gmail.com",
"legal_rep_phone": "202312314"
}
}
},
"nickname": "test1",
"destination_data": {
"destination_type": "bank_account",
"bank_account": {
"country": "US",
"currency": "USD",
"swift": "ABOCUSSE080",
"account_holder_name": "Bill Han",
"account_holder_type": "individual",
"routing_number": "1051000017",
"account_number": "123123123",
"bank_name": "Bank of America"
}
}
}
}
For individual Request
To create a paypout by directly provieding beneficiary information
{
"payment_amount": 1000,
"payment_currency": "GBP", //the currency that the beneficiary receives
"source_currency":"USD", //the currency that the Payer uses to fund the payment
"type": "global",
"beneficiary_data": {
"entity": {
"type": "individual",
"individual": {
"address": {
"city": "seattle",
"country": "US",
"line1": "422 Ave",
"state": "Washington",
"postal_code": "98109"
},
"additional_info": {
"email": "liuyidao@126.com",
"phone": "12093321241",
"last_name": "Wick",
"first_name": "John",
"id_type": "social_security",
"id_country_iso_code": "US",
"id_number": "WA112313411"
}
}
},
"nickname": "test1",
"destination_data": {
"destination_type": "card",
"card": {
"number": "4111111131111121",
"name": "Wang Ming",
"address_city": "seattle",
"address_country": "US",
"address_line1": "422 Yale",
"address_state": "Washington",
"address_postal_code": "98109"
}
}
}
}
Recurring payouts
If you already have ever payout to the beneficiary, you could create a payout using beneficiary_id
, which is saved on the server and you can find it in the last response.
You also can create a beneficiary for payouts
Create a beneficiary
Request
{
"entity": {
"type": "business",
"company_registered_name": "Wooshpay",
"business": {
"company_registered_name": "Wooshpay",
"address": {
"city": "seattle",
"country": "US",
"line1": "422 Ave",
"state": "Washington",
"postal_code": "98109"
},
"additional_info": {
"business_area": "",
"business_phone_number": "12093321241",
"business_registration_number": "WF123123131",
"legal_rep_first_name": "John",
"legal_rep_last_name": "Wick",
"legal_rep_id_type": "social_security",
"legal_rep_id_number": "WA112312313411",
"legal_rep_email": "woosh@gmail.com",
"legal_rep_phone": "202312314"
}
}
},
"nickname": "test1",
"destination_data": {
"destination_type": "card",
"card": {
"number": "4111111111111113",
"name": "Wang Ming",
"address_city": "seattle",
"address_country": "US",
"address_line1": "422 Yale",
"address_state": "Washington",
"address_postal_code": "98109"
}
}
}
Response
{
...
"id": "bf_1736672600756584448",
"object": "beneficiary",
...
}
Now you can use the beneficiaryID obtained above to create payouts.
Create a payout
Request
{
"beneficiary": "bf_1736672600756584448",
"payment_amount": 1000,
"payment_currency": "GBP", //the currency that the beneficiary receives
"source_currency":"USD", //the currency that the Payer uses to fund the payment
"description": "description something",
"type": "global"
}
Payouts to China
Create a new payout to China
The difference with global payouts is that you need to submit the payment_intents_id
when requesting a payout to China.
Request
{
"beneficiary": "bf_1702584723433324544",
"payment_amount": 1000,
"payment_currency": "CNY", //the currency that the beneficiary receives
"source_currency":"USD", //the currency that the Payer uses to fund the payment
"description": "You can add description here",
"type": "to_China",
"payment_intents_id": [
"pi_1577840204872417280"
]
}
Create a Payout with compliance documents
If you need to submit compliance documents to us, there are three steps to creating a Payout with compliance documents
- Upload the compliance documents using Create a file
Request Create a file
curl --location --request POST 'https://apitest.wooshpay.com/v1/files' \
--header 'Accept: application/json' \
--header 'Authorization: Your key' \
--header 'User-Agent: Apifox/1.0.0' \
--form 'file=@"/path/xxx.pdf"'
Response
{"id": "file_1654416327596572672","object": "file","created": 1683278565516,"url": "https://oss.swooshtransfer.cn/oa/product/1654416327596572672_9gKPHbFsa5pUq47TafAMfVvJ.pdf","type": "pdf","filename": "1654416327596572672_9gKPHbFsa5pUq47TafAMfVvJ.pdf"}
- Copy the URL on your response
- In the above case, the
URL
ishttps://oss.swooshtransfer.cn/oa/product/1654416327596572672_9gKPHbFsa5pUq47TafAMfVvJ.pdf
- Apply
metadata
to the payout created
metadata
: It consists of two parts, the first part is thekey
and the second part is thevalue
.- eg:
"metadata": { "compliance document": "Your document url", "key2": "value2", "...": "..." }
- eg:
Create a payout
Request
{
"beneficiary": "bf_1702584723433324544",
"payment_amount": 1000,
"payment_currency": "CNY", //the currency that the beneficiary receives
"source_currency":"USD", //the currency that the Payer uses to fund the payment
"description": "You can add description here",
"type": "to_China",
"metadata": {"compliance document": "https://oss.swooshtransfer.cn/oa/product/1654416327596572672_9gKPHbFsa5pUq47TafAMfVvJ.pdf"},
"payment_intents_id": [
"pi_1577840204872417280"
]
}
For Japanese Payout:
The typical format for a Japanese cash card number is: 4-digit bank code + 3-digit branch code + 7-digit account number.
When Creating a Beneficiary, the "destination_data" can be passed in the following format:
...
"destination_data": {
"destination_type": "bank_account",
"bank_account": {
"country": "JP",
"currency": "JPY",
"account_holder_name": "Bill Han", // Receiver's bank account holder name
"routing_number": "0001+130", // Bank code + Branch code
"account_holder_type": "individual", // Account holder type
"account_number": "1234567", // 7-digit bank account number
"bank_name": "みずほ銀行+ 新橋支店" // Bank name + Branch name
}
}
...
Payout failures
If the bank account can’t receive a payout for any reason, the bank sends the funds back to us. This returns an error with the reason for the failure. It can take several business days for your bank to return the payout and inform us that it failed. If this happens, you’re notified in the Dashboard. Make sure that the bank account information you provide is correct. If it’s not (a typo in the account number, for example), payouts may be sent to another bank account holder.
Negative payouts
Each payout reflects your available account balance at the time it was created. In some cases, you may have a negative account balance. For example, if you receive 100 USD in payments but refund 200 USD of prior payments, your account balance would be -100 USD. If you don’t receive further payments to balance out the negative amount, a new payout will fail.
Learn about the outcomes of your payout.
To know whether a payout to a bank account was successful, you need to set up a webhook.
The following Event Type are important when you make payouts to bank accounts, and you can create webhook to learn about the status of your payout.
payout.canceled
: Occurs whenever a payout is canceled.payout.created
: Occurs whenever a payout is created.payout.failed
: Occurs whenever a payout attempt fails.payout.paid
: Occurs whenever a payout is expected to be available in the destination account. If the payout fails, a payout.failed notification is also sent, at a later time.payout.updated
: Occurs whenever a payout is updated.
After identifying the events to monitor, you can refer to the webhook guide to Create a webhook.
Request
{
"description": "This is your description of the webhook",
"enabled_events": [
"payout.canceled",
"payout.created",
"payout.failed",
"payout.paid",
"payout.updated"
],
"url": "https://your_call_back_address.com"
}
Instant Payouts
With Instant Payouts, sending funds to a supported bank account (in the United Kingdom) can be processed within a day. You can request Instant Payouts any day or time, including weekends and holidays, and funds typically appear in the associated bank account.
Country/Region | Payout Speed(Business days) | Minimum Amount(Local currency) |
---|---|---|
United Kingdom | 0 | 0.01 GBP |