# blockwallets — 암호화폐를 몰라도 암호화폐 결제를 받으세요

> 고객은 USDT, USDC, BTC 등 17가지 코인으로 15개 네트워크에서 결제합니다. 대금은 미국 달러로 잔액에 들어오고, 원할 때 내 지갑으로 출금하면 됩니다. 결제 링크는 코드가 필요 없고, Cryptomus, NOWPayments, Coinbase Commerce 호환 API로 나머지를 자동화할 수 있습니다. 자금을 옮길 수 있는 키는 인터넷에 연결된 서버에 두지 않습니다.
>
> HTML: https://blockwallets.io/?lang=ko · English: https://blockwallets.io/index.md?lang=en

## 암호화폐결제

USDT, USDC, BTC 등 17가지 코인, 15개 네트워크. 고객이 무엇으로 결제하든 모두 미국 달러로 잔액에 들어옵니다. **블록체인을 몰라도 되고, 자금을 옮길 수 있는 키는 인터넷에 연결된 서버에 두지 않습니다.**
 이용 신청입금 과정 보기

비공개 베타 · 건당 1%, 월 거래액에 따라 최저 0.5%까지 · 월 이용료 없음, 출금 무료

0줄의 코드로 시작합니다. 결제 링크만 보내면 됩니다

17가지 코인 지원: 스테이블코인, BTC, 각 체인의 네이티브 코인

2개의 독립 데이터 소스가 모든 결제를 확인합니다

15개 네트워크. 고객은 쓰던 것으로 결제합니다

암호화폐가 처음이신가요?

### 알아 두면 좋은 세 가지.

결제를 받는 데 블록체인을 이해할 필요는 없습니다. 이 세 가지면 시작하기에 충분합니다.

달러 기준

#### 가격 변동은 신경 쓰지 않아도 됩니다

가격은 달러로 정하고 달러로 정산됩니다. USDT, USDC 등 스테이블코인은 1:1, BTC 등 다른 코인은 30분간 고정된 환율로 환산합니다.

스캔하고 결제

#### 고객은 이미 쓰는 앱으로 결제합니다

거래소 앱이나 암호화폐 지갑에서 QR 코드를 스캔하면 끝. 국경도 은행 영업시간도 없고, 대부분 1분 안팎이면 도착합니다.

확정

#### 차지백 없음

확인된 송금은 카드 결제처럼 되돌릴 수 없어 차지백 분쟁이 없습니다. 환불 여부는 직접 결정합니다.

받는 방법

### 링크로 시작하고 자동화는 나중에.

오늘은 결제 링크로 받고, 자동화가 필요해지면 API를 연결하세요. 둘 다 같은 잔액으로 들어갑니다.

코드 없이
#### 결제 링크

관리 화면에서 금액을 입력하면 링크와 QR 코드가 생깁니다. 채팅, 웹사이트, 프로필에 공유하면 고객이 열어서 결제합니다.
 blockwallets.io/l/pl_940219e083e7b45cea11**열어 보기 ↗** 연간 회원권+99.00

계약금 · 주문 1042+42.00

개발자용

#### API 연동

결제 단계에서 엔드포인트 하나를 호출하고 고객을 저희 결제 페이지로 보내세요. 대금이 도착하면 서버에 알려 드리므로 주문 발송과 잔액 충전이 자동으로 처리됩니다.

POST /v1/payment200

order_1042 · 자동 발송+42.00

topup_88 · 사용자 잔액에 추가+150.00

입금 과정

### 결제부터 잔액까지 네 단계.

결제를 만들고 입금을 기다리기만 하면 됩니다. 주소 생성, 체인 모니터링, 이중 확인, 시스템 알림은 저희가 맡습니다.

order_1042TRON · USDT · 전용 주소 TX7k…q3Fd$42.00

소스 A같은 송금 · 금액 · 주소✓ 확인

소스 B독립 제공자✓ 확인

서버에 알림POST /webhooks/blockwallets200 OK

두 소스가 일치합니다. 결제 확정.

- 1
#### 결제를 요청합니다
금액과 주문번호를 보내세요. 결제 링크를 쓰면 관리 화면이 대신 처리합니다. 같은 주문번호를 두 번 보내도 청구서는 하나만 생깁니다.

- 2
#### 고객이 스캔해서 결제합니다
저희 결제 페이지에서 코인과 네트워크를 고르고 스캔합니다. 주문마다 전용 주소가 있어 메모 없이도 결제와 주문이 자동으로 맞춰집니다.

- 3
#### 정말 도착했는지 확인합니다
매분 체인을 확인하고 충분한 컨펌을 기다린 뒤, 독립적인 두 번째 데이터 소스도 같은 송금을 확인해야 입금으로 인정합니다. 가짜 결제는 통과하지 못합니다.

- 4
#### 이제 당신의 돈입니다
달러로 잔액에 들어오고 언제든 출금을 신청할 수 있습니다(모든 출금은 담당자가 검토하며, 새 출금 주소는 첫 지급까지 24시간을 기다립니다). API를 쓰면 같은 순간 서버로 서명된 알림이 가며, 서버가 응답하지 않으면 약 2일 반 동안 재전송합니다.

제 돈은 안전한가요?

0 
### 0 인터넷에 연결된 서버의 개인 키. 자금을 옮기는 키는 격리된 서명 환경에서만 씁니다.

온라인 서버에는 읽기 전용 키만 있습니다. 수취 주소를 만들고 잔액을 볼 수는 있지만 아무것도 보낼 수 없습니다. 자금을 옮기는 키는 온라인 서비스와 격리된 서명 환경에서만 쓰입니다. 집금은 고정된 콜드월렛 주소로만 보내고, 가맹점 출금은 담당자가 승인한 뒤 가맹점이 등록한 출금 주소로만 보냅니다.

#### 온라인에서는 받기만 가능

서버는 읽기 전용 키(`xpub`)만 보관합니다. 실수로 붙여 넣은 개인 키는 거부됩니다.

#### 받는 주소는 고정

받는 지갑은 배포 설정에 고정되어 있어 관리 화면이나 데이터베이스로 바꿀 수 없습니다.

#### 두 소스가 일치해야 인정

독립적인 두 데이터 소스가 모두 확인해야 결제로 인정합니다. 노드 하나가 속여도 통하지 않습니다.

#### 돈을 묶어 둘 필요 없음

언제든 출금을 신청하거나, 정한 잔액에 도달하면 또는 매일 자동으로 신청되게 할 수 있습니다. 모든 출금은 담당자가 검토하고, 새 주소는 첫 지급까지 24시간을 기다리며, 모든 지급에는 온체인 기록이 남습니다.

#### 송금처 제한

자금을 옮기는 거래는 온라인 서비스와 격리된 환경에서 서명됩니다. 집금은 고정된 콜드월렛 주소로만 보내고, 가맹점 출금은 담당자가 승인한 뒤 가맹점이 등록한 출금 주소로만 보냅니다.

#### 위험하면 멈춥니다

보호 장치가 하나라도 빠지면 해당 네트워크는 결제 받기를 멈춥니다.

개발자

### 코드 두 조각. 그게 연동의 전부입니다.

결제를 만들어 결제 페이지 링크를 받고, 알림을 받으면 서명을 확인한 뒤 발송하세요. 먼저 테스트넷에서 무료로 해 보세요.

- 
#### 호출은 두 번뿐
금액과 주문번호로 생성하고, 알림을 검증한 뒤 주문번호대로 발송합니다.- 
#### 테스트넷에서 무료
테스트 자격 증명은 공개 테스트넷에서 동작하고, 결제 페이지에는 “결제 시뮬레이션” 버튼이 있습니다.- 
#### 재시도해도 안전
같은 `order_id`는 항상 같은 청구서를 돌려줍니다.- 
#### 다른 결제 서비스에서 오시나요?
Cryptomus, NOWPayments, Coinbase Commerce 호환 API: 경로, 파라미터, 서명, 웹훅이 같습니다. 도메인과 키만 바꾸세요. - https://api.cryptomus.com/v1/payment

+ https://blockwallets.io/v1/payment
전체 연동 가이드 →

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> body = JSON.<span class="t-f">stringify</span>({</span><span class="cl">  order_id: <span class="t-s">"order_1042"</span>,       <span class="t-c">// idempotency key</span></span><span class="cl">  amount: <span class="t-s">"42.00"</span>,              <span class="t-c">// any amount, in USD</span></span><span class="cl">  currency: <span class="t-s">"USD"</span>,</span><span class="cl">  url_callback: <span class="t-s">"https://shop.example.com/webhooks/crypto"</span>,</span><span class="cl">});</span><span class="cl"><span class="t-k">const</span> sign = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">  .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(body).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">  .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> res = <span class="t-k">await</span> <span class="t-f">fetch</span>(<span class="t-s">"https://blockwallets.io/v1/payment"</span>, {</span><span class="cl">  method: <span class="t-s">"POST"</span>,</span><span class="cl">  headers: {</span><span class="cl">    merchant: process.env.BW_MERCHANT,</span><span class="cl">    sign,</span><span class="cl">    <span class="t-p">"content-type"</span>: <span class="t-s">"application/json"</span>,</span><span class="cl">  },</span><span class="cl">  body,</span><span class="cl">});</span><span class="cl"><span class="t-k">return</span> <span class="t-f">redirect</span>((<span class="t-k">await</span> res.<span class="t-f">json</span>()).result.url);</span>
```

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">export</span> <span class="t-k">async</span> function <span class="t-k">POST</span>(req: Request) {</span><span class="cl">  <span class="t-k">const</span> { sign, ...data } = JSON.<span class="t-f">parse</span>(<span class="t-k">await</span> req.<span class="t-f">text</span>());</span><span class="cl">  <span class="t-k">const</span> json = JSON.<span class="t-f">stringify</span>(data).<span class="t-f">replaceAll</span>(<span class="t-s">"/"</span>, <span class="t-s">"\\/"</span>);</span><span class="cl">  <span class="t-k">const</span> expected = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">    .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(json).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">    .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl">  <span class="t-k">if</span> (sign !== expected) <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"bad sign"</span>, { status: <span class="t-n">401</span> });</span><span class="cl"></span><span class="cl">  <span class="t-k">if</span> (data.status === <span class="t-s">"paid"</span> || data.status === <span class="t-s">"paid_over"</span>) {</span><span class="cl">    <span class="t-k">await</span> <span class="t-f">credit</span>(data.order_id, data.payment_amount_usd);</span><span class="cl">  }</span><span class="cl">  <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"ok"</span>);</span><span class="cl">}</span>
```

```
<span class="cl"><span class="t-k">POST</span> /webhooks/crypto</span><span class="cl"><span class="t-h">Content-Type:</span> application/json</span><span class="cl"></span><span class="cl">{</span><span class="cl">  <span class="t-p">"type"</span>: <span class="t-s">"payment"</span>,</span><span class="cl">  <span class="t-p">"uuid"</span>: <span class="t-s">"6f1c2a7e…"</span>,</span><span class="cl">  <span class="t-p">"order_id"</span>: <span class="t-s">"order_1042"</span>,</span><span class="cl">  <span class="t-p">"amount"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"payment_amount_usd"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"status"</span>: <span class="t-s">"paid"</span>,</span><span class="cl">  <span class="t-p">"is_final"</span>: true,</span><span class="cl">  <span class="t-p">"network"</span>: <span class="t-s">"tron"</span>,</span><span class="cl">  <span class="t-p">"payer_currency"</span>: <span class="t-s">"USDT"</span>,</span><span class="cl">  <span class="t-p">"txid"</span>: <span class="t-s">"9c1e…"</span>,</span><span class="cl">  <span class="t-p">"sign"</span>: <span class="t-s">"5f0c9b…e9a1"</span></span><span class="cl">}</span>
```

#### AI에 프롬프트 하나만 복사하세요
 
ChatGPT, Claude, Cursor 등 어떤 코딩 도우미에든 붙여 넣으세요. 문서를 읽고 테스트넷에서 테스트 흐름을 완성한 뒤 인수 체크리스트를 드립니다.
 ChatGPT에서 열기 ↗llms-full.txt를 읽는 대화를 엽니다 Claude에서 열기 ↗llms-full.txt를 읽는 대화를 엽니다
내 기술 스택에 맞는 프롬프트 만들기 →

내 프로젝트에 blockwallets 암호화폐 결제를 연동해 줘. 1. 먼저 https://blockwallets.io/llms-full.txt 와 https://blockwallets.io/agents.md 를 읽어. 다른 결제 대행사에 대해 기억하는 내용보다 이 문서를 따라. 2. 테스트넷의 테스트 자격 증명으로 시작해 (blockwallets 관리 화면의 테스트 모드, 결제 페이지에 "결제 시뮬레이션" 버튼이 있어). 테스트 흐름 전체가 통과하기 전에는 실서비스 키를 건드리지 마. 3. POST https://blockwallets.io/v1/payment (amount, currency "USD", order_id, url_callback)로 결제를 만들고 고객을 result.url로 보내. 4. 웹훅은 믿기 전에 항상 검증해: "sign"을 빼고 나머지를 JSON으로 인코딩하면서 모든 "/"를 "\/"로 이스케이프하고 (PHP json_encode($data, JSON_UNESCAPED_UNICODE)와 같음: ASCII가 아닌 문자는 그대로 둠), base64로 바꾼 뒤 API key를 붙이고, md5 16진값을 구해 "sign"과 비교해. 5. status가 "paid"와 "paid_over"이면 결제 완료로 처리해. 같은 order_id는 항상 같은 청구서를 돌려주니 재시도해도 안전해. 주문마다 한 번만 입금 처리해. 6. merchant ID와 API key는 코드가 아니라 환경 변수에 둬. 끝나면 다음 인수 체크리스트를 항목마다 체크하거나 설명해서 줘: - [ ] 테스트 결제가 생성되고 result.url에서 결제 페이지가 열린다 - [ ] "결제 시뮬레이션"으로 웹훅이 오고 서명 검증이 통과한다 - [ ] 본문이나 sign이 변조된 웹훅은 거부된다 - [ ] 웹훅이 다시 와도 주문은 정확히 한 번만 결제 완료로 표시된다 - [ ] 자격 증명은 환경 변수에서 읽는다 - [ ] 실서비스로 전환하려면 무엇을 바꿔야 하는지 네트워크

### 무엇으로 결제하든 받는 건 달러.

스테이블코인은 환율이나 스프레드 없이 액면가로 입금됩니다. BTC, LTC, 네이티브 코인은 30분간 고정된 환율로 견적을 냅니다.

| 네트워크 | 코인 | 도착 시간 | 최소 |
| --- | --- | --- | --- |
| TRON | USDTTRX | 약 1분 | $1.00 |
| BNB Smart Chain | USDTUSDCUSD1FDUSDBNB | 약 1분 | $1.00 |
| Ethereum | USDTUSDCDAIETH | 약 1–18분 | $5.00 |
| Base | USDCDAIETH | 약 1–25분 | $1.00 |
| Polygon PoS | USDTUSDCPOL | 약 1분 | $1.00 |
| Arbitrum One | USDTUSDCDAIETH | 약 1–30분 | $1.00 |
| OP Mainnet | USDTUSDCETH | 약 1–25분 | $1.00 |
| Avalanche C-Chain | USDTUSDCAVAX | 약 1분 | $1.00 |
| X Layer | USDTUSDCOKB | 약 1–20분 | $1.00 |
| Dogecoin | DOGE | 약 1–40분 | $1.00 |
| Solana | USDTUSDCSOL | 약 1분 | $1.00 |
| TON | USDTTON | 약 1분 | $1.00 |
| Litecoin | LTC | 약 3–15분 | $1.00 |
| Bitcoin | BTC | 약 10–30분 | $5.00 |
| Bitcoin Cash | BCH | 약 10–60분 | $1.00 |

강조 표시된 코인은 스테이블코인이며, 모두 미국 달러로 1:1 입금됩니다. 짧은 쪽 시간은 $1,000 미만 결제 기준입니다. $1,000부터, 그리고 $5,000부터는 확인을 더 기다리므로 큰 금액은 긴 쪽 시간까지 걸릴 수 있습니다.

요금

### 결제 건당 수수료만. 규모가 클수록 저렴하게.

모든 가맹점에 같은 요금 구간을 적용하고, 지난달 거래액에 따라 자동으로 내려갑니다. 협상할 필요가 없습니다.

1%건당
 
최저 0.5%. 네트워크 수수료는 고객이 부담합니다.
 월 이용료 없음가입비 없음출금 무료최소 거래액 없음

$50,000 미만1%

$50,000 이상0.9%

$100,000 이상0.8%

$250,000 이상0.7%

$500,000 이상0.6%

$1,000,000 이상0.5%

자주 묻는 질문

### 짧게 답합니다.

#### 어떤 코인을 받을 수 있나요?

15개 네트워크에서 17가지 코인: USDT, USDC, USD1, FDUSD, DAI, BTC, LTC, DOGE 및 BCH 그리고 네이티브 코인 TRX, BNB, ETH, POL, AVAX, OKB, SOL 및 TON. 네트워크: TRON, BNB Smart Chain, Ethereum, Base, Polygon PoS, Arbitrum One, OP Mainnet, Avalanche C-Chain, X Layer, Dogecoin, Solana, TON, Litecoin, Bitcoin 및 Bitcoin Cash. 스테이블코인은 미국 달러로 1:1 입금되고, 다른 코인은 30분간 고정된 환율로 환산됩니다.

#### 비용은 얼마인가요?

건당 1%이며 지난달 거래액에 따라 자동으로 내려갑니다: $50,000 이상 0.9%, 최저 0.5%. 월 이용료나 가입비가 없고 출금은 무료입니다. 네트워크 수수료는 고객이 부담합니다.

#### 블록체인을 이해해야 하나요?

아니요. 관리 화면에 금액을 입력하면 결제 링크와 QR 코드가 생기고, 고객이 스캔해 결제하면 미국 달러로 잔액에 들어옵니다. 주소, 컨펌, 정산 대조는 blockwallets가 처리합니다.

#### 출금은 어떻게 하나요?

관리 화면에서 언제든 내 지갑으로 출금을 신청하거나, 잔액이 정한 금액에 도달하면 또는 매일 자동으로 신청되게 할 수 있습니다. 모든 출금은 담당자가 검토하며, 새로 등록한 출금 주소는 첫 지급까지 24시간을 기다립니다. 출금은 무료이며 각각 온체인 거래가 표시됩니다.

#### 개인 키는 어디에 있나요?

자금을 옮길 수 있는 키는 외부에 서비스하는 서버에 절대 두지 않습니다. 온라인 서비스와 격리된 서명 환경에서만 쓰입니다. 집금은 고정된 콜드월렛 주소로만 보내고, 가맹점 출금은 담당자가 승인한 뒤 가맹점이 등록한 출금 주소로만 보냅니다. 인터넷에 연결된 서버에는 읽기 전용 공개 키(xpub)만 있어 수취 주소를 만들고 잔액을 읽을 수는 있지만 자금을 보낼 수는 없습니다.

#### Cryptomus, NOWPayments, Coinbase Commerce에서 옮기면 무엇이 바뀌나요?

API 도메인과 키만 바뀝니다. 세 곳 모두 호환 API가 있고 경로, 파라미터, 서명 알고리즘, 웹훅 형식이 원래 서비스와 같아서 코드는 그대로입니다.

#### 테스트 모드가 있나요?

있습니다. 테스트 모드는 공개 테스트넷용 별도 자격 증명을 쓰고, 결제 페이지에 “결제 시뮬레이션” 버튼이 있어 결제 생성, 결제, 웹훅, 서명 검증을 실제 돈 없이 해 볼 수 있습니다.

### 지금시작하세요.
 
blockwallets는 가맹점에 순차적으로 열고 있습니다. 사업에 대해 조금 알려 주시면 계정 개설을 위해 이메일을 드리겠습니다. 암호화폐가 처음이어도 괜찮습니다. 메모에 무엇이든 물어보세요.
 
수수료: 건당 1%, 지난달 거래액이 $50,000에 이르면 0.9%로 내려가고, 규모가 커지면 최저 0.5%까지 내려갑니다. [요금 보기 →](https://blockwallets.io/pricing?lang=ko)
 - **1**모든 신청서를 읽고 이메일로 답장합니다.- **2**승인되면 실제 돈 없이 테스트 모드에서 모든 것을 해 보세요.- **3**만족하면 실서비스로 전환하세요. 출금은 언제든 신청할 수 있습니다.
