---
title: 은행 송금 (베트남)
description: Sepay를 통해 베트남 동(VND) 은행 송금 수락 — 수취 계좌, 메모 접두사, 웹훅, 한도 및 일치하지 않는 송금 내역을 할당하는 방법.
url: https://nexcmp.com/ko/docs/billing/bank-transfer-vn/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# 은행 송금 (베트남) {#bank-transfer-vietnam}

> **관리자 메뉴 위치:** Finance › Payment channels › VN bank transfer (`/payments/bank`). 환율: Finance › Payment channels › Exchange rates (`/payments/fx`).

## 작동 내용 {#what-it-does}

고객이 베트남 동으로 일반 은행 송금을 통해 USD 지갑을 충전할 수 있도록 합니다. NexCMP는 VietQR 코드, 계좌 정보 및 고유한 **송금 메모**를 표시하며, [Sepay](https://sepay.vn)는 은행 계좌를 모니터링하다가 입금이 완료되면 웹훅을 호출하여 NexCMP가 지갑에 크레딧을 부여합니다. 베트남 고객을 대상으로 판매하는 경우에 사용하세요.

::: info 베트남어 인터페이스에서만 표시됨
VN 은행 옵션은 포털이 **Vietnamese**로 표시될 때만 고객에게 제공됩니다. 다른 언어를 사용하는 고객은 이를 볼 수 없습니다.
:::

## 요구 사항 {#requirements}

| 항목 | 요구 사항 |
|---|---|
| 은행 계좌 | [my.sepay.vn](https://my.sepay.vn)의 Sepay 계정과 연결된 베트남 은행 계좌(또는 Sepay 가상 계좌, **VA**). |
| Sepay | 웹훅 연동이 활성화된 Sepay 계정. |
| 환율 | USD 대비 VND 환율이 반드시 존재해야 합니다. 먼저 **Exchange rates**에서 환율을 업데이트하세요. 환율이 없으면 채널은 `fx_unavailable`를 반환하며 고객이 송금을 시작할 수 없습니다. |
| 네트워크 | Sepay가 `https://<your-domain>/v1/billing/sepay/webhook`을(를) 호출할 수 있도록 패널에 HTTPS로 접속할 수 있어야 합니다. |
| 의존성 | [통화 및 환율](https://nexcmp.com/ko/docs/catalog/currency-and-exchange-rates/). |

## 인프라 준비 {#prepare-the-infrastructure}

Sepay 쪽 설정:

1. [my.sepay.vn](https://my.sepay.vn)에서 은행 계좌를 연결하거나(또는 VA 생성) 거래 내역이 정상적으로 표시되는지 확인합니다.
2. **메모 접두사(memo prefix)**를 결정합니다. 2~5자의 대문자이며, 예: `PAY`. NexCMP는 접두사 뒤에 8자의 무작위 숫자를 붙여 메모를 생성합니다(예: `PAY48210937`). 접두사는 `ORD`을(를) 포함해서는 안 되며, 동일한 계좌로 입금을 받는 다른 시스템에서 사용 중이 아니어야 합니다.
3. Sepay 계정이 *결제 코드 구조(payment code structure)*를 사용하는 경우, 해당 위치에도 동일한 접두사를 등록하여 Sepay가 메모를 인식할 수 있도록 합니다.
4. 웹훅은 NexCMP 페이지에서 URL과 키를 제공받은 후(아래 7단계) 생성합니다.

## NexCMP에서 연결 {#connect-in-nexcmp}

1. **Finance › Payment channels › Exchange rates**을(를) 열고, 저장된 환율이 없는 경우 **Update exchange rates**을(를) 클릭합니다.
2. **Finance › Payment channels › VN bank transfer**(`/payments/bank`)을(를) 엽니다.
3. **Receiving account**에서 다음 정보를 입력합니다.

   | 필드 | 예시 | 규칙 |
   |---|---|---|
   | 은행 | `VCB` Vietcombank | 목록에서 선택하면 BIN이 자동으로 채워집니다. |
   | 계좌번호 | `0123456789` | 4~24자의 숫자 또는 대문자. |
   | 가상 계좌(VA — 선택 사항) | | 설정 시 고객이 VA로 송금하며 QR 코드에 표시됩니다. |
   | 예금주명 | `NGUYEN VAN A` | 특수문자 제외, 대문자, 2~60자. |
   | 송금 메모 접두사 | `PAY` | 2~5자의 대문자, `ORD` 제외. |

4. **Webhook authentication**에서 **Auth method**를 **HMAC-SHA256**(권장) 또는 **API key** 중에서 선택하고, **Webhook key / HMAC secret**(8~200자)을 입력합니다. 선택 사항으로 Sepay의 **userapi token**을 입력할 수 있으며, 이는 웹훅이 누락된 송금을 대사(reconcile)하는 용도로만 사용됩니다.
5. **Channel & limits**에서 한도를 설정합니다(괄호 안은 기본값). **Min / order**(10,000 VND), **Max / order**(200,000,000 VND), **Order expiry**(120분, 15–1440), **Max pending orders / account**(3, 1–10), **Reconcile every**(10분), 그리고 선택적으로 **Allowed webhook IPs**(쉼표로 구분, 비워두면 IP가 로깅만 됨)를 설정하세요.
6. **Save**을(를) 클릭합니다. 계좌, 이름, 접두사, 키가 올바르면 "Sepay not configured" 빨간색 배너가 사라집니다.
7. `https://<your-domain>/v1/billing/sepay/webhook` 형식으로 표시되는 **Webhook URL to paste into my.sepay.vn**을 **Copy**로 복사합니다. Sepay에서 웹후크 연동을 열고, URL을 붙여넣은 뒤 동일한 인증 유형과 키를 선택하고 "money in" 이벤트를 활성화합니다.
8. **Test connection**을 클릭합니다. 그런 다음 **Enable Sepay for clients (main site)**를 켜고 **Save**를 클릭하세요.

![예시 값이 입력된 수취 계좌, 메모 접두사, 웹훅 인증이 포함된 VN bank transfer 페이지](https://nexcmp.com/ko/docs/images/billing/bank-transfer-vn-01-config.webp)

![Sepay 스위치가 켜져 있고 기본 한도가 설정된 Channel and limits 카드](https://nexcmp.com/ko/docs/images/billing/bank-transfer-vn-02-limits.webp)

### 웹훅 보안 {#webhook-security}

| 방식 | Sepay 전송 항목 |
|---|---|
| HMAC-SHA256 | `X-SePay-Signature: sha256=<hex>` 헤더, `"<X-SePay-Timestamp>.<raw body>"` 기준 계산됨. 타임스탬프는 최대 300초까지 차이가 날 수 있습니다. |
| API 키 | `Authorization: Apikey <key>` 헤더. |

헤더만 검사하며(본문이나 쿼리 문자열은 절대 검사하지 않음) 비교는 일정한 시간이 소요되는 방식으로 수행됩니다. 설정된 계정이나 VA로 들어오는 입금(`transferType = in`)만 사용됩니다. 각 Sepay 거래는 한 번만 저장되므로 재시도된 웹훅으로 인해 금액이 두 번 적립되지 않습니다. NexCMP는 거래를 고의로 무시하는 경우에도 `200 {"success":true}`로 응답하며, Sepay가 재시도할 수 있도록 일시적인 오류에 대해서만 HTTP 5xx를 반환합니다.

## 고객 결제 방식 {#how-the-customer-pays}

1. **Billing › Deposit**(베트남어 인터페이스)에서 고객이 VN 계좌 이체 옵션과 금액을 선택한 후 이체 생성 버튼을 클릭합니다.
2. NexCMP는 저장된 환율(**Exchange rates**에서 설정한 마진 및 반올림 단계 포함)로 USD 금액을 변환하고, VND 금액을 반올림 단계에 맞춰 **올림 처리**합니다.
3. 고객은 계좌 번호, 은행, 금액, 메모가 포함된 QR 코드(VietQR, 로컬 생성)를 보게 됩니다.
4. 이체 완료 후 Sepay가 웹훅을 호출하면 NexCMP가 `floor(VND received × 100 / rate)` 센트를 적립합니다. 환율은 주문 생성 시점에 고정되며, 주문 만료 후 자금이 도착한 경우 고정 환율과 현재 환율 중 더 높은 환율이 적용됩니다.
5. 주문은 **Order expiry** 후에 만료되며, 안전장치로 **Reconcile every**분마다 대사 작업이 실행됩니다(userapi 토큰 필요).

## 확인 {#verify}

1. 베트남어 인터페이스에서 고객으로서 테스트 주문을 생성합니다. 금액, 계좌, 메모가 올바른지 확인합니다.
2. 허용된 최소 금액을 정확한 메모와 함께 이체합니다.
3. 1분 내에 포털에 예치가 완료된 것으로 표시되고 지갑 잔액이 증가하며, 은행 페이지의 **State** 카드에 마지막 웹훅 시간이 표시됩니다.
4. **Finance › Billing › Top-ups**를 열고 결제가 수신된 VND 금액과 함께 나열되어 있는지 확인합니다.

## 한도 및 참고 사항 {#limits-notes}

- **최소금액.** 고객에게 표시되는 VND 최소금액은 **Min / order**와 [minimum top-up](https://nexcmp.com/ko/docs/billing/minimum-top-up/)의 VND 가치 중 더 큰 값입니다.
- **대기 중인 주문.** 고객은 오픈 상태의 주문을 **Max pending orders / account**개(기본값 3개)까지만 가질 수 있습니다.
- **동일한 메모 중복 사용.** 동일한 메모로 두 번 이체하면 현재 환율로 두 번째 완료된 결제가 생성됩니다.
- 은행 계좌로의 **자동 환불은 지원되지 않습니다**.
- **수수료.** 해당 채널에는 **Fees & limits**에 고정 수수료 항목이 없으며, 환율 마진이 유일한 조정 요소입니다.
- **Resellers**는 자신의 계정을 설정할 수 있으며, 해당 웹훅 URL은 `/v1/billing/sepay/webhook/r/<id>`로 끝납니다.

### 일치하지 않는 이체 {#unmatched-transfers}

계정에 도달했으나 유효한 메모가 없는 자금은 페이지 하단의 **Unmatched transactions**에 표시됩니다(*All channel owners* 또는 *Master* 필터 사용). 고객과 함께 은행 참조 번호를 확인한 후 **Assign**을 클릭하고 계정을 선택합니다. 지갑에는 현재 환율이 적용되어 적립됩니다.

## Troubleshooting {#troubleshooting}

| 증상 | 원인 | 해결 방법 |
|---|---|---|
| "Sepay not configured" 배너 | 은행, 계좌, 예금주 명의, 접두사 또는 키가 누락되었거나 유효하지 않음 | **Receiving account** 및 **Webhook authentication** 카드를 작성합니다. |
| "USD/VND rate blocked" 배너 (`fx_unavailable`) | 저장된 환율이 없음 | **Exchange rates › Update exchange rates**으로 이동합니다. |
| `prefix: 2–5 capital letters, no ORD` | 접두사가 유효하지 않음 | `ORD` 없이 2~5자의 대문자를 사용하세요. |
| `account_name` 오류 | 악센트 부호 또는 소문자 포함 | 악센트가 없는 대문자, 숫자, 공백, 점 또는 하이픈을 사용하세요. |
| `webhook_secret: 8–200 characters` | 키가 너무 짧음 | 인쇄 가능한 문자를 8자 이상 사용하세요. |
| 고객에게 옵션이 표시되지 않음 | 베트남어 인터페이스가 아니거나, 스위치가 꺼져 있거나, 환율이 없음 | 언어, 스위치, 환율을 확인하세요. |
| 고객은 결제했으나 크레딧이 충전되지 않음 | 웹훅이 도착하지 않았거나, 메모가 변경되었거나, 금액이 잘못됨 | Sepay의 웹훅 로그를 확인하세요. 메모가 잘못된 경우 이체 내역은 **Unmatched transactions**에 표시됩니다. |
| 웹훅이 401 또는 403을 반환함 | 인증 방식 또는 키가 일치하지 않음 | Sepay와 NexCMP에서 동일한 방식과 키를 사용하세요. |
| 고객에게 "Too many pending requests"가 표시됨 | 대기 중인 주문 한도에 도달함 | 완료되거나 만료될 때까지 기다립니다. |


