가상계좌는 온라인 결제를 위해 고객에게 발급되는 임시 계좌예요. 실제로 통장이 없어서 '무통장입금'이라고도 불리죠. 고객이 발급된 계좌에 주문 금액을 정확히 입금하면 결제가 완료돼요. 카드 결제와 달리 본인인증 절차가 없어서 누구나 쉽게 사용할 수 있어요.
가상계좌 결제는 발급 → 입금 → 결제 완료 3단계로 이루어져요. 다른 결제수단과 가장 큰 차이는 결제 요청 시점에 바로 결제가 완료되지 않는다는 점이에요.
| 단계 | 무슨 일이 일어나나요? | 고객이 보는 화면 |
|---|---|---|
| 1. 발급 | 고객이 은행을 선택하면 임시 계좌번호가 발급돼요 | 계좌번호, 입금 금액, 입금 기한 |
| 2. 입금 | 고객이 발급된 계좌에 정확한 금액을 입금해요 | 은행 앱에서 이체 |
| 3. 결제 완료 | 은행 → 토스페이먼츠 → 상점 순서로 입금 사실을 알려줘요 | 상점에서 결제 완료 안내를 받아요 |
카드 결제는 결제를 요청하면 인증 → 승인 → 매입 절차가 바로 진행되지만, 가상계좌는 결제를 요청하면 계좌만 발급돼요. 고객이 언제 입금할지 알 수 없기 때문에 입금 사실을 알려주는 웹훅이 필수예요.
주문자와 입금자가 달라도 입금할 수 있어요. 다만 주문 금액과 입금 금액이 정확히 같아야 해요. 15,000원짜리 주문에 10,000원 + 5,000원으로 나눠서 입금하는 건 불가능해요.
고객이 입금하면 은행 → 토스페이먼츠 → 상점 순서로 알림이 와요. 상점에서는 이 웹훅을 받아서 주문 상태를 결제 완료로 변경하고 상품이나 서비스를 제공하면 돼요. 웹훅 전송에 실패하면 최대 7회(최초 전송으로부터 약 3일 19시간) 재전송해요.
일부 은행(특히 신한)에서는 실제 입금이 되지 않았는데 입금 통보(DONE)가 먼저 오고, 이후 1~2초에서 최대 2분 이상 후에 취소 통보(WAITING_FOR_DEPOSIT)가 오는 경우가 있어요. 이 경우 물품 배송이나 서비스 제공을 중지하고 입금 전 상태로 되돌려야 해요.
이런 상황이 걱정된다면 토스페이먼츠의 "2분 지연통보" 기능을 사용하세요. 입금 후 2분간 취소 통보가 없을 때만 상점에 입금 통보를 보내줘요. 다만 실시간 처리가 필요한 서비스(포인트 충전, 게임 아이템 등)에서는 2분 지연이 부담될 수 있어요.
웹훅을 수신하려면 서버 방화벽에서 토스페이먼츠 IP를 허용해야 할 수 있어요. 웹훅이 도착하지 않는다면 방화벽 설정을 확인하세요.
가상계좌는 일반형과 고정형 두 가지가 있어요.
| 종류 | 계좌번호 | 사용 시나리오 |
|---|---|---|
| 일반 가상계좌 | 주문할 때마다 다른 번호 | 일반적인 온라인 쇼핑몰 |
| 고정식 가상계좌 | 같은 고객에게 같은 번호 | 정기 납부, 반복 결제, B2B |
일반 가상계좌는 매 주문마다 새로운 계좌번호가 랜덤으로 발급돼요. 고객은 주문할 때마다 계좌번호와 입금 금액을 꼭 확인해야 해요.
고정식 가상계좌는 같은 accountKey(고객 식별자)로 발급하면 항상 동일한 계좌번호가 부여되는 방식이에요. 계좌번호는 동일하지만, 주문마다 가상계좌 발급을 요청해야 해당 금액으로 입금할 수 있어요. 여러 주문이 쌓여 있으면 금액에 맞는 주문이 자동으로 매칭돼요.
결제창에서도 accountKey를 미리 채워서 고정식 가상계좌를 발급할 수 있지만, 고객이 값을 수정할 수 있는 구조예요. 고객별 계좌번호를 정확하게 관리하려면 API 직접 발급 방식을 사용하세요.
같은 고정식 가상계좌에 1,000원, 2,000원, 4,000원 주문이 있다고 가정할게요.
- 1,000원 입금 → 1,000원 주문 처리
- 4,000원 입금 → 4,000원 주문 처리
- 7,000원 입금 → 세 주문 모두 처리
- 3,000원이나 5,000원 입금 → 불가 (주문 금액의 부분합은 입금할 수 없어요)
같은 금액의 주문이 2개 이상이면 나중에 발급된 주문이 먼저 처리돼요 (후입선출).
고정식 가상계좌는 리스크 검토 및 추가 계약이 필요해요. 자세한 내용은 토스페이먼츠 고객센터(1544-7772)로 문의해주세요.
가상계좌를 발급하는 방법은 두 가지가 있어요.
| 방식 | 결제 UI | 적합한 상점 |
|---|---|---|
| A. 결제창 | 토스페이먼츠 제공 | 대부분의 상점 |
| B. API 직접 발급 | 가맹점 직접 구현 | 자동화된 주문 시스템, B2B 결제 |
A. 결제창
토스페이먼츠가 제공하는 결제 UI에서 고객이 은행을 선택하고 가상계좌를 발급받는 방식이에요. 일반형과 고정형 모두 지원하고, 현금영수증 입력 UI도 자동으로 제공돼요.
B. API 직접 발급
가상계좌 발급 API로 직접 발급하는 방식이에요. 은행, 입금 기한, 계좌 유형(일반/고정)을 상점에서 직접 지정할 수 있어요. 주문 없이 계좌만 먼저 발급하거나, 서버에서 자동으로 발급해야 하는 B2B·정기납부 시나리오에 적합해요. 결제 UI와 현금영수증 입력을 가맹점이 직접 구현해야 해요.
가상계좌가 발급되거나 입금이 완료되면 고객에게 알림톡과 이메일이 자동 발송돼요. 카카오톡을 사용하지 않는 고객에게는 문자(SMS)로 대체 발송돼요. 발신번호와 발신 메일 주소는 변경할 수 없어요.
가상계좌를 발급할 때 입금 가능 기한을 설정할 수 있어요. 두 가지 방법 중 하나를 선택하세요.
| 설정 방식 | 설명 | 사용 사례 |
|---|---|---|
validHours | 발급 시점부터 지정한 시간 후에 반납 | 주문 후 N시간 내에 입금해야 하는 일반 상점 |
dueDate | 지정한 날짜·시간에 반납 | 티켓 예매 등 마감 시간이 정해진 상점 |
두 방법 모두 발급 시점부터 최대 90일(2,160시간)까지 설정할 수 있어요. 별도로 지정하지 않으면 발급 후 7일이 기본값이에요. 가상계좌가 반납되어도 별도 웹훅은 제공되지 않아요.
입금 기한 전에 가상계좌를 강제로 반납하려면, 입금 전 상태에서 결제 취소 API를 호출하세요. 호출 즉시 해당 가상계좌에 더 이상 입금할 수 없게 돼요.
최소 결제금액은 200원이에요. 최대 결제금액은 별도로 없지만 고객 개인의 이체한도를 고려해야 해요.
결제 시 고객이 현금영수증 정보를 입력하면 입금 완료 후 자동으로 발급돼요. 국세청에는 익일 일괄 신고돼요.
현금영수증 더 알아보기가상계좌 취소는 입금 전과 입금 후로 처리 방식이 완전히 달라요.
| 취소 시점 | 처리 방식 | 소요 시간 |
|---|---|---|
| 입금 전 | 가상계좌 반납 (환불 금액 없음), 전액취소만 가능 | 즉시 |
| 입금 후 | 고객의 환불계좌로 입금 | 약 2영업일 |
입금 후 취소 시에는 고객으로부터 환불계좌 정보(은행명, 계좌번호, 예금주)를 직접 입력받아야 해요. 토스페이먼츠에서 계좌 유효성 검사를 진행하기 때문에 예금주명이 정확해야 해요.
법인 계좌: 예금주명이 홍길동(길동물산) 또는 법인명으로 되어 있는 경우가 많아요. 정확한 예금주명을 입력해야 해요.
외국인 계좌: 영문 이름 사이에 공란이 있거나 없는 경우 (예: Tom Cruise vs TomCruise)가 있어서 실제 계좌에 등록된 이름 형식과 정확히 일치해야 해요.
고객이 가상계좌로 입금할 때 표시되는 예금주명은 기본적으로 상점 이름이에요. 고객 이름을 포함하고 싶다면(예: 김토스_토스모터스) 토스페이먼츠에 설정을 요청하세요.
은행 정책에 따라 이체 화면에서 예금주명 대신 모계좌 기관명(토스페이먼츠, 헥토파이낸셜)이 표시될 수 있어요. 이는 토스페이먼츠에서 제어할 수 없는 부분이에요.
가상계좌는 현금성 결제수단이기 때문에 에스크로 적용 대상이에요. 에스크로를 사용하면 고객이 구매 확인을 할 때까지 결제 대금을 토스페이먼츠가 보관해요. 배송이 필요한 상품을 판매하는 상점은 에스크로 적용이 필수예요.
에스크로 더 알아보기
