Skip to main content

Payout

Initiate payouts from your Shinhan account to any bank operating within Vietnam.

Payout Flow

Quick Reference​

EndpointMethodDescription
/api/v1/payoutsPOSTCreate a new payout request
/api/v1/payoutsGETList all payout requests
/api/v1/payouts/:idGETGet specific payout request
/api/v1/payouts/:id/otpsPOSTVerify OTP for payout
Enterprise Only

Payout API is available for Enterprise Solutions only. Contact [email protected] for access.


Setup: Whitelist IP​

Before using the Payout API, you must whitelist your server IP address.

  1. Go to book.finan.one/setting → Open API

    Open API Settings

  2. Click Whitelist IP

    Whitelist IP

  3. Enter your IP address and save

    Add IP

warning

Once an IP is whitelisted, the portal Cashout flow is disabled. All payouts must use the API.


API Endpoints​

Create Payout Request​

Create a new payout request. Save the returned id for OTP verification.

POST /api/v1/payouts
curl -X POST 'https://api.finan.one/open/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'x-client-id: YOUR_CLIENT_ID' \
-H 'x-signature: YOUR_SIGNATURE' \
-H 'x-timestamp: 1699999999' \
-d '{
"account_id": "54957437-0cb5-4992-ad0e-76d26ba4ddc3",
"amount": 6000000,
"beneficiary_account_name": "NGUYEN VAN A",
"beneficiary_account_number": "1234567890",
"beneficiary_bank_id": "161",
"currency": "VND",
"reference_id": "PAYOUT-001",
"description": "thanh toan don hang"
}'

Request Body​

FieldTypeRequiredDescription
account_iduuid✅Source Shinhan account ID. Get from Account API
amountinteger✅Amount in smallest currency unit
beneficiary_account_namestring✅Recipient's name as registered with bank
beneficiary_account_numberstring✅Recipient's account number
beneficiary_bank_idstring✅Bank code. See Code Reference
currencystringISO currency code (default: VND)
reference_idstringYour unique transaction ID for tracking
descriptionstring✅Transfer note (max 30 characters)

Response​

{
"message": { "content": "Thực thi API thành công" },
"code": 102001,
"request_id": "abc123...",
"data": {
"id": "660e8400-e29b-41d4-a716-446655440001",
"status": "waiting_confirm",
"remaining_try": 3
}
}

Payout Status​

StatusDescription
waiting_confirmAwaiting OTP verification
processingOTP verified, transfer in progress
successPayout completed
failedPayout failed

Get Payout Requests​

Retrieve all payout requests.

GET /api/v1/payouts
curl -X GET 'https://api.finan.one/open/api/v1/payouts' \
-H 'Content-Type: application/json' \
-H 'x-client-id: YOUR_CLIENT_ID' \
-H 'x-signature: YOUR_SIGNATURE' \
-H 'x-timestamp: 1699999999'

Response​

{
"message": { "content": "Thực thi API thành công" },
"code": 102000,
"request_id": "abc123...",
"data": [
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"status": "success",
"amount": 6000000,
"beneficiary_account_name": "NGUYEN VAN A",
"beneficiary_account_number": "1234567890",
"beneficiary_bank_id": "161",
"reference_id": "PAYOUT-001",
"remaining_try": 0,
"created_at": "2024-01-20T14:00:00Z"
}
]
}
Get Single Payout
GET /api/v1/payouts/:payout_id

Verify OTP​

Submit the OTP code to confirm a payout request.

POST /api/v1/payouts/:payout_id/otps
curl -X POST 'https://api.finan.one/open/api/v1/payouts/660e8400-e29b-41d4-a716-446655440001/otps' \
-H 'Content-Type: application/json' \
-H 'x-client-id: YOUR_CLIENT_ID' \
-H 'x-signature: YOUR_SIGNATURE' \
-H 'x-timestamp: 1699999999' \
-d '{
"code": 123456
}'

Request Body​

FieldTypeRequiredDescription
codeinteger✅OTP code received from bank

Response​

{
"message": { "content": "Thực thi API thành công" },
"code": 102000,
"request_id": "abc123...",
"data": {
"id": "660e8400-e29b-41d4-a716-446655440001",
"status": "processing",
"remaining_try": 2
}
}
OTP Attempts

Each payout request has a limited number of OTP attempts (typically 3). After exhausting all attempts, create a new payout request.


Payout Flow​

1. Create Payout Request → status: waiting_confirm
2. Receive OTP from bank (SMS/Email)
3. Submit OTP → status: processing
4. Payout completes → status: success

Next Steps​