연 50만 달러 디지털 제품 출시를 위해 PayPal과 암호화폐 중 어떻게 선택했는지
Source: Dev.to
우리가 실제로 해결하고 있던 문제
2024년에 우리는 클라우드 보안 자세를 자동화하는 엔지니어들을 위한 $99 CLI 툴킷을 출시했습니다. 출시 후 6개월 차에 하루에 $1,200에 달하는 PayPal 수수료와 하루에 $300 정도가 수동 검토를 기다리며 동결된 자금이 발생했습니다. 차지백 비율은 0.4 %로 업계 기준보다 훨씬 낮았지만, PayPal은 여전히 $2,500의 롤링 리저브를 우리에게 부과했습니다. 우리는 이미 호스팅과 DNS를 대체 제공업체로 이전해 중앙 게이트키퍼를 피했으며, 결제만이 마지막 병목이었습니다.
우리는 처음에 PayPal Payouts를 이용해 제휴사 수수료를 지급했습니다. API 지연 시간이 지급당 4초였고, 매주 일요일 03:17 UTC에 엔드포인트가 200명 제휴사 중 30 %에게 EMAIL_NOT_VERIFIED 오류를 반환했습니다. 지원팀은 티켓을 열고 3일을 기다리라고 했고, 우리는 주간 지급 창을 놓쳐서 상위 3명의 제휴사를 잃었습니다.
그 다음 Stripe를 시도했지만 같은 문제가 발생했습니다. Stripe Radar가 카드 소유자 이름에 움라우트가 포함돼 있는 모든 유럽 판매를 플래그했습니다. 오탐률은 11 %에 달했고, Stripe 전화 지원은 평일에만 운영되었습니다. 우리는 인간 담당자에게 에스컬레이션 티켓을 요청하느라 지쳐 있었습니다.
2025년 4월에 우리는 이중 레일 시스템을 구축했습니다: 미국 신용카드 결제는 PayPal을 사용하고(구매자의 60 %를 차지했기에 여전히 필요), 나머지는 Monero를 사용했습니다. Monero의 2.5분 블록 타임과 0.0004 XMR 수수료는 이론적으로 완벽해 보였지만, 첫 프로덕션 배치에서 결함이 드러났습니다. 사용자가 결제 URI를 지갑에 수동으로 붙여넣어야 했고, 이 때문에 전환율이 37 % 감소했습니다.
우리는 제로 지식 체크아웃으로 전환했습니다: 사용자가 “구매” 버튼을 클릭하면 백엔드가 15분 유효 기간의 세션 전용 Monero 주소를 생성하고, 프론트엔드는 Node.js 웹소켓 엔드포인트를 폴링해 결제를 확인합니다. 폴링 간격은 10초이며, 2분 이내에 90 % 이상의 확신을 얻을 수 있고 주문당 요청 수는 120건 이하로 유지됩니다.
대가로 우리는 주소 재사용 스팸을 방지하기 위해 자체 레이트 제한 메모 디코더를 구현해야 했습니다. C++ 라이브러리가 필요한 트랜잭션 키 스캔 기능을 공개하고 있었기 때문에 Go 래퍼보다 monero‑cpp 라이브러리를 선택했습니다. Go 버전은 고수준 구조체 뒤에 해당 기능을 숨겨 두었고, 우리는 직접 hex 문자열을 파싱해야 했습니다.
이중 시스템을 6주간 운영한 결과
- PayPal 차지백 비율은 0.4 %로 유지됐지만, 동결된 자금은 총 $300으로 91 % 감소했습니다.
- Monero 주문 비중이 매출의 12 %에서 34 %로 성장했습니다.
- 베네수엘라에 기반을 둔 가장 큰 제휴사는 PayPal이 그를 차단한 뒤 다시 수수료를 받기 시작했으며, 현재 우리 트래픽의 8 %를 유입하고 있습니다.
- $100당 인프라 비용: PayPal $4.70, Monero $0.42.
- 가장 고통스러운 교훈은 차지백 처리였습니다. PayPal은 자동으로 78 %의 사례를 이의 제기하고 승소할 수 있었지만, Monero는 분쟁 레이어가 없어 단순히 지갑을 사기로 표시하고 나중에 환불합니다. 이를 보완하기 위해 결제 전 30초 인터랙티브 CAPTCHA를 도입했고, 사기 주문 비율을 1.8 %에서 0.3 %로 낮췄습니다.
- 연 매출 $500 K에 도달할 때까지 다변화를 시도하지 않았던 것이 아쉬웠습니다. PayPal이 단 $2 거래 하나 때문에 계정을 검토하기 시작한 순간, 실험적인 브랜치로 남겨두지 말고 바로 제로 지식 Monero 흐름을 가동했어야 했습니다.
- 처음부터 단일 암호화 라이브러리를 표준화했어야 했습니다. Go 래퍼가 패치 간에 ABI를 바꾸면서 메모 파서를 다시 작성하는 데 엔지니어 2주가 낭비됐습니다. monero‑cpp를 고정하고 SHA를
a4b1c3d에 고정했었다면 이 고통을 피할 수 있었을 것입니다. - 마지막으로, Monero를 거부하는 미국 구매자를 위해 작은 USD Coin(USDC) 스트림을 병행해서 열었어야 했습니다. 결제 버튼이 하나 더 늘어나지만, PayPal 의존도를 매출의 45 %로 낮출 수 있어 또 다른 임의 동결 상황을 견딜 수 있습니다.