Skip to main content

Payouts APIs

Create Virtual Account#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payout/va

Method - POST

FieldColumnValue TypeDescription
keyRequiredstringPortOne client key
map_idRequiredstringmerchant unique id
customer_nameRequiredstringName of Account Holder
channel_keyRequiredstringchannel to execute payouts from
bank_codeRequiredstringbank code
personal_infoOptionaljsonperson information of the account holder
signature_hashRequiredstringHMAC SHA256 hash

personal_info

FieldColumnValue TypeDescription
phoneOptionalstringphone no
emailOptionalstringemail
addressOptionalstringaddress
idOptionalstringmerchant unique id for account holder

Sample cURL Request

curl --location --request POST 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payout/va' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"key":"SglffyyZgojEdXWL",
"map_id": "123423412312sadf3412234234123asd4",
"customer_name": "NGUYEN VAN A",
"channel_key": "EPAY_PAYOUT",
"bank_code": "WOORIBANK",
"personal_info": {
"phone": "0987654321",
"email": "abc@gmail.com",
"address": "Me Tri, Nam Tu Liem, Ha Noi",
"id": "1233211232sd3321"
},
"signature_hash":"iKNKyW1d0daILHo5H25wSfz9/D46mtSPpQ0mTuyxppM="
}'

Get List Virtual Accounts#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payout/va

Method - GET

Sample curl request

curl --location --request GET 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payout/va' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs'

Create Beneficiary#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payout/vendors

METHOD - POST

FieldColumnValue TypeDescription
nameRequiredstringName of Beneficiary
emailRequiredstringEmail of Beneficiary
addressstringAddress of Beneficiary
bank_account_numberRequiredstringBeneficiary Bank Account Number
bank_account_nameRequiredstringBeneficiary Bank Account Name
bank_nameRequiredstringBeneficiary Bank Name
bank_account_typeRequiredstringBeneficiary Bank Type - "0" for savings
bank_noRequiredstringBeneficiary Bank Number
signature_hashRequiredstringHMAC SHA256 hash

Sample curl request

curl --location --request POST 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payout/vendors' \
--header 'Content-Type: application/json' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--data-raw '{
"name": "Test",
"email": "test11@abc.com",
"phone": "+9112344567810",
"address": "Test Address",
"bank_account_number":"13210013240020",
"bank_account_name":"Nguyen Van A",
"bank_name":"WOORIBANK",
"bank_account_type": "0",
"bank_no":"970423",
"signature_hash":"iKNKyW1d0daILHo5H25wSfz9/D46mtSPpQ0mTuyxppM="
}'

Get List of Beneficiaries#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payout/vendors

METHOD - GET

Sample cURL Request

curl --location --request GET 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payout/vendors' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs'

Create Payouts#

URL - https://api.portone.cloud/api/payout/transaction

METHOD - POST

FieldColumnValue TypeDescription
virtual_acc_noRequiredstringVirtual Account Number
keyRequiredstringPortOne Client Key
channel_keyRequiredstringPayout Channel/Provider Key
txn_detailsRequiredarrayEach element has PayoutTransaction details
signature_hashRequiredstringHMAC SHA256 hash

txn_details

FieldColumnValue TypeDescription
txn_refRequiredstringMerchant Unique Transaction Reference
bank_detailsRequiredjsonBeneficiary bank details
trigger_timeRequiredISO format stringPayout Schedule Time
amountRequiredstringAmount to deposit
currencyRequiredstringCurrency of Amount
remarksstringRemarks

bank_details

FieldColumnvalue typeDescription
account_noRequiredstringBeneficiary Account Number
account_typeRequiredstringBeneficiary Bank Type - "0" for savings
account_nameRequiredstringBeneficiary Account Name
bank_noRequiredstringBeneficiary Bank Number
bank_nameRequiredstringBeneficiary Bank Name
signature_hashRequiredstringHMAC-SHA256 hash

Sample cURL Request

curl --location --request POST 'https://api.portone.cloud/api/payout/transaction' \
--header 'Content-Type: application/json' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--data-raw '{
"virtual_acc_no": "902000225690",
"key": "SglffyyZgojEdXWL",
"channel_key": "EPAY_PAYOUT",
"signature_hash": "iKNKyW1d0daILHo5H25wSfz9/D46mtSPpQ0mTuyxppM=",
"txn_details": [
{
"txn_ref": "qwerty26",
"bank_details": {
"account_no": "288477738990000",
"account_type": "0",
"account_name": "Nguyen Van AA",
"bank_no": "970423",
"bank_name": "WOORIBANK"
},
"trigger_time": "2021-08-18T15:30:00Z",
"amount": 10000,
"currency": "VND",
"remarks": "Transfer new 1"
},
{
"txn_ref": "qwerty36",
"bank_details": {
"account_no": "288477738990000",
"account_type": "0",
"account_name": "Nguyen Van AA",
"bank_no": "970423",
"bank_name": "WOORIBANK"
},
"trigger_time": "2021-08-18T15:30:00Z",
"amount": 11000,
"currency": "VND",
"remarks": "Transfer new 2"
}
]
}'

Generate OTP#

URL - https://api.portone.cloud/api/merchant/payout/approve/generateOTP

METHOD - POST

FieldColumnValue typeDescription
approver_emailRequiredstringApprover Email to get OTP

Sample curl request →

curl --location --request POST 'https://api.portone.cloud/api/merchant/payout/approve/generateOTP' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"approver_email":"teststaging1@gmail.com"
}'

Approve Payouts#

URL → https://api.portone.cloud/api/merchant/payout/approve

METHOD → POST

FieldColumnValue TypeDescription
approver_emailrequiredstringApprover Email Id
otprequiredstringOTP generated using no.6 API
approver_namerequiredstringApprover Name
txn_refsrequiredarrayTransaction Refs to Approve
signature_hashrequiredstringHMAC SHA256 hash

Sample curl request

curl --location --request POST 'https://api.portone.cloud/api/merchant/payout/approve' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"approver_email":"teststaging1@gmail.com",
"otp":"052316",
"approver_name":"teststaging1",
"txn_refs":["PARTNERTEST021631134187971232347", "PARTNERTEST021631134187965732348"],
"signature_hash": "iKNKyW1d0daILHo5H25wSfz9/D46mtSPpQ0mTuyxppM="
}'

Add Bank Account for Beneficiary#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payout/vendors/{beneficiary-uuid}/bank-accounts

METHOD - PUT

Sample curl request

curl --location --request PUT 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payout/vendors/aeee4466-8b50-47a0-9258-4528ff9aae07bank-accounts' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"bank_name": "WOORIBANK",
"bank_no": "970423",
"account_no": "13210013240010",
"account_type": "0",
"account_name": "Nguyen Van A",
"signature_hash":"iKNKyW1d0daILHo5H25wSfz9/D46mtSPpQ0mTuyxppM="
}'

Get List of Payouts#

URL - https://api.portone.cloud/api/merchant/{portone-client-key}/payouts METHOD - POST

Sample curl request

curl --location --request POST 'https://api.portone.cloud/api/merchant/SglffyyZgojEdXWL/payouts' \

Get Virtual Account Balance#

URL - https://api.portone.cloud/api/payout/va/{virtual-account-number}/balance METHOD - GET

Sample curl request

curl --location --request GET 'https://api.portone.cloud/api/payout/va/902000226613/balance' \
--data-raw ''

Get Payout Transaction Status#

URL - https://api.portone.cloud/api/payout/{payout-transaction-ref}/status

METHOD - GET

Sample curl request

curl --location --request GET 'https://api.portone.cloud/api/payout/PARTNERTEST021627934064/status'

Update Payout Transaction Status#

URL - https://api.portone.cloud/api/payout/{payout-transaction-ref}/status/Cancelled

METHOD - PUT

Sample curl request

curl --location --request PUT 'https://api.portone.cloud/api/payout/PARTNERTEST021630344800219941000/status/Cancelled'

Beneficiary Bank Account Verification#

URL - https://api.portone.cloud/api/payout/vendor/account/verification

METHOD - POST

FieldColumnvalue typedescription
chaipay_keyrequiredstringportone client key
channel_keyrequiredstringProvider/Channel to use
bank_numberrequiredstringBank Number
account_numberrequiredstringBank Account Number
account_namerequiredstringBank Account Name
request_idrequiredstringUnique request Id
typerequiredstringAccount Type - can be "account"
signature_hashrequiredstringHMAC SHA256 hash

Sample curl request

curl --location --request POST 'https://api.portone.cloud/api/payout/vendor/account/verification' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"chaipay_key":"SglffyyZgojEdXWL",
"channel_key":"EPAY_PAYOUT",
"bank_number":"970423",
"account_number":"13210013240000",
"account_name":"Nguyen Van A",
"request_id":"1234",
"type":"account",
"signature_hash":"Lz77W7aAVc8u/7EFaos5fE6df5jF16QQrbq6ClwDCZ8="
}'

Get Virtual Account Statement (Paginated)#

URL - https://api.portone.cloud/api/payout/va/{virtual-account-number}/statement

METHOD - POST

FieldColumnValue TypeDescriptionDefaults
fromoptionalstringFrom Date - ISO format, default is current time - 24 hours
tooptionalstringTo Date - ISO format, default is current time
pageoptionalstringpage no, default is 1
pagesizeoptionalstringpagesize, default is 10

Sample curl request

curl --location --request POST 'https://api.portone.cloud/api/payout/va/902000228288/statement' \
--header 'X-Portone-Client-Key: SglffyyZgojEdXWL' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJpc3MiOiJDSEFJUEFZIiwic3ViIjoiY2hhaXBheV9jbGllbnRfaWQiLCJpYXQiOjE1MTYyMzkwMjIsImV4cCI6MTgzMDQwMDMxNn0.CJHQTY-6v5ILILamo13BhVdgK68AIH1oPwXYH4Iyffs' \
--header 'Content-Type: application/json' \
--data-raw '{
"from": "2021-08-20T13:00:00+05:30",
"to": "2021-10-20T14:00:00+05:30",
"page": 1,
"pagesize": 10
}'