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/settingOpen 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_iduuidSource Shinhan account ID. Get from Account API
amountintegerAmount in smallest currency unit
beneficiary_account_namestringRecipient's name as registered with bank
beneficiary_account_numberstringRecipient's account number
beneficiary_bank_idstringBank code. See Code Reference
currencystringISO currency code (default: VND)
reference_idstringYour unique transaction ID for tracking
descriptionstringTransfer 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
codeintegerOTP 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