Real-Time Firm Banking

What is Firm Banking?

Imagine needing to pay salaries to thousands of employees on payday every month. It is not realistic for a person to log into internet banking and process each transaction one by one. The same applies to settling payments with partners or processing customer refunds. As the volume of financial operations grows, manually handling each transaction hits a hard limit.

Firm Banking is a service that directly connects a company's internal systems to banks for automated financial transaction processing. By integrating through Hecto Financial, you can connect to multiple banks — such as Kookmin, Shinhan, and Woori — all at once, eliminating the need to sign separate contracts and develop individual systems for each bank.

Ideal for These Use Cases

  • Automated Payroll : Automatically processes bulk transfers to thousands of employee accounts on payday.
  • Partner Settlement : The system directly handles periodic payments to partners and affiliates.
  • Subscription Billing : Automatically debits monthly fees, insurance premiums, etc. from customer accounts.
  • Refund Automation : Instantly transfers funds to customer accounts when an order is cancelled or a refund is requested.
  • Real-Time Deposit Notification : Instantly notifies internal systems when a deposit is made to the corporate account.

Supported Features

Both KRW and foreign currency are supported, providing all the functions needed for corporate fund operations — from transfers to inquiry and notification.

FeatureDescriptionKRWForeign Currency
Payment TransferReal-time transfer to same-bank/other-bank accounts. Used for payroll disbursement, partner settlement, etc.OO
Collection TransferAutomatic debit from same-bank accounts. Used for subscription services, recurring billing, etc.OO
Account Holder Name LookupVerifies the account holder name of the recipient before a transfer. Prevents transfer errors in advance.OO
Balance InquiryQueries the current balance of the corporate account.OO
Transfer Result InquiryChecks the result of a processed transfer transaction. Must be used in the event of a timeout.OO
Transaction NotificationInstantly notifies the corporate system when a deposit or withdrawal occurs on the corporate account.OO
Exchange Rate InquiryQueries the current exchange rate information before a foreign currency transfer.XO

Virtual Account VAVS

If you need to integrate bank messages directly for virtual-account deposits, cancellations, recipient inquiries, and remittances, use the separate VAN Virtual Account (VAVS) service. It uses the same fixed-length TCP/IP method as KRW firm banking, but with a different common header and transaction-code system.

NOTE

VAN Virtual Account is a separate service

Find the virtual-account message specification in the VAN Virtual Account service. Explore VAN Virtual Account

Understanding the Service

A firm banking transaction originates from the corporate system, passes through the financial network (VAN), and is delivered to the bank's internal systems. The entire process is typically completed within a few seconds, as illustrated in the flow diagram below.

Payment Transfer Flow

Corporate System
VAN/Financial Network
Bank External System
Bank Core System
1Send transfer message (2000/100)
2Message relay
3Transfer processing request
4Response result
5Message relay
6Response message (2100/100)

Transaction Notification Flow

Bank Core System
Bank External System
VAN/Financial Network
Corporate System
1Deposit/withdrawal event
2Notification forwarded
3Transaction notification message (4000/100)
4Receipt acknowledgement (4100/100)
NOTE

Transfer Result Inquiry Required

After using a transfer message (2000/100, 2000/200), you must always confirm the final result via the Transfer Result Inquiry (7000/100). Even if the response code indicates success, an inter-bank transfer failure notification (3000/100) may be received afterward.

For a more detailed look at what happens at each step, see Firm Banking Transaction Flow Structure.

Communication Protocol

Firm banking uses TCP/IP socket communication rather than standard HTTP REST APIs. Because messages are sent and received continuously while maintaining a socket connection, it is well-suited for high-volume processing, but requires developing a separate socket client program.

ItemKRWForeign Currency
ProtocolTCP/IP SocketTCP/IP Socket
Message SizeCommon Header 100B + Individual Body 200B = 300BCommon Header 100B + Individual Body 1900B = 2000B
Actual Send/Receive SizeLength Header 4B + Message 300B = 304BLength Header 4B + Message 2000B = 2004B
EncodingEUC-KREUC-KR
Connection ModeSynchronous (request-response) / Asynchronous (session keep-alive)Synchronous (request-response) / Asynchronous (session keep-alive)

Message Structure

A message is an agreed-upon data format that bank systems and corporate systems can mutually understand. Every message consists of two sections — the Common Header and the Individual Body — and all transactions including transfers, inquiries, and notifications are processed based on this structure.

Firm Banking Message Structure (KRW)300 bytes
Common Header100B · offset 0
Message Type Code4 · 0
Transaction Code3 · 4
Message Number6 · 7
Transmission Date8 · 13
Transmission Time6 · 21
Response Code4 · 27
Individual Body200B · offset 100
Debit Account Number20 · 100
Credit Account Number20 · 120
Transfer Amount15 · 140
Account Holder Name30 · 155
Transaction Memo50 · 185
필수
선택
응답전용 / 예비
길이 · 위치
NOTE

Message Number Unique Key

Transmission Date (8) + Bank Code (3) + Company Number (12) + Message Number (6) form the Unique Key. Duplicate requests using the same Unique Key may result in duplicate transfers.

A detailed breakdown of the actual field layout and sample data is also available. Understanding the Firm Banking Message Structure

Key Features and Characteristics

Now that you understand the message structure, let's look at how each feature actually works.

FeatureDescriptionNotes
Payment TransferReal-time transfer to same-bank/other-bank accounts. Used for automated payroll, partner settlement, and customer refund processing.Processing order: Account Holder Name Lookup (6000/100) → Transfer Request (2000/100)
Collection TransferAutomatic debit from a customer's same-bank account. Used for subscription recurring billing, monthly auto-payment, insurance premium collection, etc.Must register the customer account in advance via Debit Account Registration (2000/550)
Transaction NotificationInstantly notifies the corporate system when a deposit or withdrawal occurs on the corporate account. Used for real-time deposit confirmation, bank transfer confirmation, etc.If a notification is missed, use the missing notification sequence to re-receive it (4000/200)
Asynchronous Session Keep-AliveAllows continuous sending and receiving of messages while maintaining the connection.Must send a polling message every 5 minutes to maintain the session

Important Notes

ItemDetails
Session Open Message RequiredThe session open message (1000/100) must be sent before the start of business every day. If not sent, transfer messages for that day will not be processed.
No Retry on TimeoutEven if a timeout occurs, the bank may have already processed the transaction successfully. Always verify the transaction status via the Transfer Result Inquiry (7000/100) before deciding whether to reprocess.
Duplicate Transfer PreventionUse a unique message number for each transfer request and always check the transaction status before retrying. Retrying without verification can lead to duplicate transfer incidents.
Inter-Bank Transfer Failure HandlingWhen using the inter-bank transfer failure notification (3000/100), a failure notification may be received after the transfer response code indicates success. This must be reflected in the final result.
Strict Message FormatSince fixed-length messages are used, field length, position, and encoding must be exact. Any format mismatch will cause the bank system to return an error code.
Service Application RequiredReal-time firm banking requires a separate contract and bank review. Please contact your sales representative. ()
💬

Need technical support?