Virtual Account Payment (Checkout)
The Checkout method allows customers to issue a virtual account number directly on the payment screen and make a deposit.
Test Key Information
API Information
POST/vbank/main.do
Content-Type
application/x-www-form-urlencoded테스트
https://tbnpg.settlebank.co.kr/vbank/main.do운영
https://npg.settlebank.co.kr/vbank/main.doImportant Notes
Virtual Account Deposit Notice
A virtual account is valid from issuance until the expiration date. The deposit amount must exactly match the configured amount for automatic approval.
- Virtual account numbers are unique and will not be issued as duplicates.
- Deposits are not possible after the expiration date.
- Upon deposit completion, the result can be received via webhook (notiUrl).
Request Parameters
타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자예: AN(10) = 영문+숫자, 최대 10byte
Required Parameters
└mchtIdAN(10)Alphanumeric, up to 10 bytes*Unique merchant ID assigned by Hecto Financial
Unique merchant ID assigned by Hecto Financial
nx_mid_il: Virtual Account└methodAN(20)Alphanumeric, up to 20 bytes*Payment type code for the PG service
Payment type code for the PG service
*Fixed value
└trdDtN(8)Numeric, up to 8 bytes*Request date (yyyyMMdd)
Request date (yyyyMMdd)
└trdTmN(6)Numeric, up to 6 bytes*Request time (HH24MISS)
Request time (HH24MISS)
└mchtTrdNoAN(100)Alphanumeric, up to 100 bytes*Unique order number generated by the merchant (Korean characters excluded)
Unique order number generated by the merchant (Korean characters excluded)
└mchtNameAHN(100)Alphanumeric + Korean, up to 100 bytes*Merchant name (Korean)
Merchant name (Korean)
└mchtENameAN(100)Alphanumeric, up to 100 bytes*Merchant name (English)
Merchant name (English)
└pmtPrdtNmAHN(128)Alphanumeric + Korean, up to 128 bytes*Payment product name
Payment product name
└trdAmtN(12)Numeric, up to 12 bytes*
AES-256AES-256/ECB/PKCS5Padding + Base64Transaction amountTransaction amount
└notiUrlAN(250)Alphanumeric, up to 250 bytes*Webhook URL to receive the result after deposit completion (Server-to-Server integration URL)
Webhook URL to receive the result after deposit completion (Server-to-Server integration URL)
└nextUrlAN(250)Alphanumeric, up to 250 bytes*URL to redirect to the result screen after virtual account issuance
URL to redirect to the result screen after virtual account issuance
*Redirected when a button inside the checkout is clicked. Check the outStatCd value to confirm issuance success (0051) or failure (0031).
└cancUrlAN(250)Alphanumeric, up to 250 bytes*URL to redirect to when the customer clicks the X button on the checkout
URL to redirect to when the customer clicks the X button on the checkout
*Browser close, back navigation, etc. are not detected.
└pktHashAN(200)Alphanumeric, up to 200 bytes*
SHA-256Hash value generated using SHA256(실시간 생성)Hash value generated using SHA256
NOTE
Hash Generation Combination
mchtId + method + mchtTrdNo + trdDt + trdTm + trdAmt (plaintext) + hashKey
Optional Parameters
└mchtCustNmAHN(30)Alphanumeric + Korean, up to 30 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Customer nameCustomer name
└mchtParamAHN(4000)Alphanumeric + Korean, up to 4000 bytesMerchant reserved field for entering additional order information
Merchant reserved field for entering additional order information
└emailAN(60)Alphanumeric, up to 60 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Email addressEmail address
└prdtTermN(14)Numeric, up to 14 bytesProduct provision period (yyyyMMddHHmmss). If empty, displayed as a regular payment.
Product provision period (yyyyMMddHHmmss). If empty, displayed as a regular payment.
└mchtCustIdAN(50)Alphanumeric, up to 50 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Unique customer ID or unique key sent by the merchantUnique customer ID or unique key sent by the merchant
└custAcntSumryAHN(50)Alphanumeric + Korean, up to 50 bytesBank statement description. Name displayed on the customer's bank statement. If empty, the merchant's Korean name is used.
Bank statement description. Name displayed on the customer's bank statement. If empty, the merchant's Korean name is used.
└expireDtN(14)Numeric, up to 14 bytesDeposit expiration date and time (yyyyMMddHHmmss)
Deposit expiration date and time (yyyyMMddHHmmss)
*Minimum: 1 hour from the current time. Maximum: 365 days from the current date. If not set, defaults to 10 days from the transaction date.
└cphoneNoN(11)Numeric, up to 11 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Mobile phone number (hyphens removed)Mobile phone number (hyphens removed)
└taxTypeCdA(1)Alphabetic, up to 1 bytesTax exemption status. If empty, follows merchant settings.
Tax exemption status. If empty, follows merchant settings.
N: Taxable Y: Tax-exempt G: Mixed taxation└taxAmtN(12)Numeric, up to 12 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Taxable amount (required for mixed taxation)Taxable amount (required for mixed taxation)
└vatAmtN(12)Numeric, up to 12 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64VAT amount (required for mixed taxation)VAT amount (required for mixed taxation)
└taxFreeAmtN(12)Numeric, up to 12 bytes
AES-256AES-256/ECB/PKCS5Padding + Base64Tax-free amount (required for mixed taxation)Tax-free amount (required for mixed taxation)
└custIpAN(15)Alphanumeric, up to 15 bytesCustomer IP address. This should be the customer device's IP, not the merchant server's IP.
Customer IP address. This should be the customer device's IP, not the merchant server's IP.
Response Parameters
Upon successful virtual account issuance, the customer is redirected to nextUrl with the response parameters listed below. If the customer exits the checkout without completing the flow, they are redirected to cancUrl without these parameters. The deposit confirmation is delivered separately via webhook (notiUrl) once the customer makes a deposit.
타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자예: AN(10) = 영문+숫자, 최대 10byte
└mchtIdAN(10)Alphanumeric, up to 10 bytes*Unique merchant ID assigned by Hecto Financial
nx_mid_ilUnique merchant ID assigned by Hecto Financial
└outStatCdAN(4)Alphanumeric, up to 4 bytes*Transaction status code (success/failure)
0051Transaction status code (success/failure)
0051: Issuance success (awaiting deposit) 0031: Failure└outRsltCdAN(4)Alphanumeric, up to 4 bytes*Decline code. If the transaction status is '0031', a detailed code is provided.
0000Decline code. If the transaction status is '0031', a detailed code is provided.
*Refer to the decline code table
└outRsltMsgAHN(200)Alphanumeric + Korean, up to 200 bytes*Result message (URL Encoding, UTF-8)
Processed successfully.Result message (URL Encoding, UTF-8)
└methodAN(20)Alphanumeric, up to 20 bytes*Payment type code for the PG service
vbankPayment type code for the PG service
*Fixed value
└mchtTrdNoAN(100)Alphanumeric, up to 100 bytes*Unique order number generated by the merchant
ORDER20211231100000Unique order number generated by the merchant
└trdNoAN(40)Alphanumeric, up to 40 bytes*Hecto Financial transaction number
STFP_PGVBnxvb_jt_il0211129135810M1494620Hecto Financial transaction number
└trdAmtN(12)Numeric, up to 12 bytes*
AES-256AES-256/ECB/PKCS5PaddingTransaction amount1000Transaction amount
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└vtlAcntNoN(30)Numeric, up to 30 bytes
AES-256AES-256/ECB/PKCS5PaddingIssued virtual account number1234567890123456Issued virtual account number
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└fnNmAH(50)Alpha + Korean, up to 50 bytesVirtual account bank name
KB Kookmin BankVirtual account bank name
└fnCdN(4)Numeric, up to 4 bytesVirtual account bank code
004Virtual account bank code
└expireDtN(14)Numeric, up to 14 bytesVirtual account deposit deadline (yyyyMMddHHmmss)
20271231235959Virtual account deposit deadline (yyyyMMddHHmmss)
└mchtCustIdAN(50)Alphanumeric, up to 50 bytes
AES-256AES-256/ECB/PKCS5PaddingMerchant customer IDHongGilDongMerchant customer ID
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└authDtN(14)Numeric, up to 14 bytesApproval date and time (virtual account order/issuance date and time)
20211231100000Approval date and time (virtual account order/issuance date and time)
└reqIssueDtN(14)Numeric, up to 14 bytesIssuance request date and time (for 010 virtual accounts)
20211231100000Issuance request date and time (for 010 virtual accounts)
└mchtParamAHN(4000)Alphanumeric + Korean, up to 4000 bytesThe value sent in the request is returned unchanged in the response (pass-through field)
name=HongGilDong&age=25The value sent in the request is returned unchanged in the response (pass-through field)
Webhook (Deposit Notification)
For virtual accounts, two webhooks are sent: an Issuance Webhook and a Deposit Webhook.
Two-Stage Webhook Processing Required
For virtual accounts, a webhook is sent both when the account is issued (Issuance Webhook) and when the actual deposit is completed (Deposit Webhook). Both webhooks must be handled. View Webhook Documentation
Need technical support?
Code Samples
HectoFinancial GitHub