Refund Virtual Account API

An API that processes refunds to the customer's account for completed virtual account transactions.

Test Key Information


API Information

POST/spay/APIRefund.do
Content-Typeapplication/json
테스트https://tbgw.settlebank.co.kr/spay/APIRefund.do
운영https://gw.settlebank.co.kr/spay/APIRefund.do

Important Notes

Virtual Account Refund Notice

Upon receiving the refund API response (and C0 webhook), the merchant should process the refund as complete. The actual deposit to the customer's account will be processed on the next business day, and no separate webhook will be sent upon deposit completion. The refund feature is only available to merchants registered for the refund service.
  • Upon receiving the refund API response and C0 webhook, the merchant should process the refund as complete. The actual deposit to the customer's account will be processed on the next business day. No separate webhook will be sent upon deposit completion.
  • Refunds may fail during bank maintenance hours (23:30–00:35). Please avoid requesting refunds during this time period.
  • In the sandbox environment, please use fictitious account numbers and account holder names to protect personal information.
  • Partial refunds are supported; increment the cancellation order number (cnclOrd) sequentially for each request.

Request Parameters

타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자
예: AN(10) = 영문+숫자, 최대 10byte

params Object

└mchtIdAN(10)Alphanumeric, up to 10 bytes*
Unique merchant ID assigned by Hecto Financial
nx_mid_il: Virtual account test
└verAN(4)Alphanumeric, up to 4 bytes*
Message version
*Fixed value
└methodA(2)Alphabetic, up to 2 bytes*
Payment method
*Fixed value (VA: Virtual Account)
└bizTypeAN(2)Alphanumeric, up to 2 bytes*
Business type code
*Fixed value (C0: Refund)
└encCdN(2)Numeric, up to 2 bytes*
Encryption type code
*Fixed value
└mchtTrdNoAN(100)Alphanumeric, up to 100 bytes*
Unique order number generated by the merchant for the refund
└trdDtN(8)Numeric, up to 8 bytes*
Request date (YYYYMMDD)
└trdTmN(6)Numeric, up to 6 bytes*
Request time (HHMMSS)
└mobileYnA(1)Alphabetic, up to 1 bytes
Mobile indicator
Y: Mobile web/app N: PC or other
└osTypeA(1)Alphabetic, up to 1 bytes
OS type
A: Android I: iOS W: Windows M: Mac E: Other

data Object

└pktHashAN(200)Alphanumeric, up to 200 bytes*SHA-256(실시간 생성)
Hash value generated using SHA256
NOTE

Hash Generation Combination

trdDt + trdTm + mchtId + mchtTrdNo + cnclAmt (plaintext) + hashKey
└orgTrdNoAN(40)Alphanumeric, up to 40 bytes*
Transaction number issued by Hecto Financial at the time of the issuance request
*For the fixed-unlimited method (acntType=3), use the transaction number (trdNo) received in the deposit-completion webhook (bizType: B1), not the transaction number from issuance.
└crcCdA(3)Alphabetic, up to 3 bytes*
Currency type value
*Fixed value
└cnclOrdN(3)Numeric, up to 3 bytes*
Cancellation order number (starts from 001; for the 2nd partial cancellation, use 002)
└taxTypeCdA(1)Alphabetic, up to 1 bytes
Tax exemption status (required for mixed taxation)
N: Taxable Y: Tax-exempt G: Mixed taxation
└cnclAmtN(12)Numeric, up to 12 bytes*AES-256AES-256/ECB/PKCS5Padding + Base64
Refund amount
└taxAmtN(12)Numeric, up to 12 bytesAES-256AES-256/ECB/PKCS5Padding + Base64
Taxable amount of the refund amount (required for mixed taxation)
└vatAmtN(12)Numeric, up to 12 bytesAES-256AES-256/ECB/PKCS5Padding + Base64
VAT amount of the refund amount (required for mixed taxation)
└taxFreeAmtN(12)Numeric, up to 12 bytesAES-256AES-256/ECB/PKCS5Padding + Base64
Tax-free amount of the refund amount (required for mixed taxation)
└refundBankCdAN(3)Alphanumeric, up to 3 bytes*
Refund bank code
└refundAcntNoN(16)Numeric, up to 16 bytes*AES-256AES-256/ECB/PKCS5Padding + Base64
Refund account number
└refundDpstrNmAHN(50)Alphanumeric + Korean, up to 50 bytes*
Refund account holder name
└cnclRsnAHN(255)Alphanumeric + Korean, up to 255 bytes
Refund reason

Response Parameters

타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자
예: AN(10) = 영문+숫자, 최대 10byte

params Object

└mchtIdAN(10)Alphanumeric, up to 10 bytes*nx_mid_il
Merchant ID
└verAN(4)Alphanumeric, up to 4 bytes*0A19
Message version
└methodA(2)Alphabetic, up to 2 bytes*VA
Payment method
└bizTypeAN(2)Alphanumeric, up to 2 bytes*C0
Business type code
└encCdN(2)Numeric, up to 2 bytes*23
Encryption type code
└mchtTrdNoAN(100)Alphanumeric, up to 100 bytes*ORDER20211231100000
Merchant order number
└trdNoAN(40)Alphanumeric, up to 40 bytes*STFP_PGVAnx_mid_il00210806075210M1853381
Hecto Financial transaction number
└trdDtN(8)Numeric, up to 8 bytes*20211231
Request date (YYYYMMDD)
└trdTmN(6)Numeric, up to 6 bytes*100000
Request time (HHMMSS)
└outStatCdAN(4)Alphanumeric, up to 4 bytes*0021
Transaction status code (success/failure)
0021: Success 0031: Failure
└outRsltCdAN(4)Alphanumeric, up to 4 bytes*0000
Result code
└outRsltMsgAHN(200)Alphanumeric + Korean, up to 200 bytes*Processed successfully.
Result message

data Object

└pktHashAN(64)Alphanumeric, up to 64 bytes*f395b6725a9a18...
Returns the hash value from the request as-is
└orgTrdNoAN(40)Alphanumeric, up to 40 bytes*STFP_PGVAnx_mid_il00210806075210M1853381
Transaction number issued by Hecto Financial at the time of the issuance request
└cnclAmtN(12)Numeric, up to 12 bytes*AES-256AES-256/ECB/PKCS5Padding1000
Refund amount
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└blcAmtN(12)Numeric, up to 12 bytes*AES-256AES-256/ECB/PKCS5Padding0
Remaining refundable balance based on the transaction number after a successful refund
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.

Webhook (Hecto Financial → Merchant)

When a refund is complete, Hecto Financial sends a webhook to your server.

Webhook Parameters

└outStatCdAN(4)Alphanumeric, up to 4 bytes*0021
Transaction status
0021: Success
└trdNoAN(40)Alphanumeric, up to 40 bytes*STFP_PGVAnx_mid_il0211129135810M1494620
Unique transaction number assigned by Hecto Financial
└methodA(2)Alphabetic, up to 2 bytes*VA
Payment method
VA: Virtual Account
└bizTypeAN(2)Alphanumeric, up to 2 bytes*C0
Business type
C0: Refund
└mchtIdAN(10)Alphanumeric, up to 10 bytes*nx_mid_il
Merchant ID
└mchtTrdNoAN(100)Alphanumeric, up to 100 bytes*ORDER20211231100000
Merchant order number
└trdDtmN(14)Numeric, up to 14 bytes*20211231100000
Transaction date and time (YYYYMMDDhhmmss)
└trdAmtN(12)Numeric, up to 12 bytes1000
Transaction amount
└orgTrdNoAN(40)Alphanumeric, up to 40 bytesSTFP_PGVAnx_mid_il0211129135810M1494620
Original transaction number
└orgTrdDtN(8)Numeric, up to 8 bytes20211231
Original transaction date
└cnclTypeN(2)Numeric, up to 2 bytes00
Cancellation transaction type
00: Full cancellation 10: Partial cancellation
└pktHashAN(64)Alphanumeric, up to 64 bytes*a2d6d597d55d7c9b...
Hash value (transaction status code + transaction date + transaction time + merchant ID + merchant order number + transaction amount + hash key)

Webhook Response

The merchant sends a response to Hecto Financial.

ResponseDescription
"OK"On success (uppercase)
"FAIL"On failure (uppercase; webhook is resent when responding with FAIL)
OthersRecognized as abnormal failure; webhook is resent up to the configured number of times
💬

Need technical support?

무엇이든 물어보세요