3년 전에 처음 암호화폐를 샀고, 거래소 두 곳에서 추가 매수했고, 일부를 하드웨어 지갑으로 보냈고, 토큰을 몇 번 교환했고, 스테이킹으로 약간의 수익도 얻었어요. 오늘 누군가 간단한 질문을 해요. 취득 원가가 얼마예요? 그런데 대답할 수가 없어요. 거래소는 무엇을 인출했느냐에 따라 다른 숫자를 보여 줘요. 하드웨어 지갑은 내가 얼마를 냈는지 전혀 몰라요. 도와주겠다는 추적 앱들은 모두 똑같은 걸 요구해요. API 키, 거래소 OAuth 연동, 더 나쁘게는 시드 구문이에요. 이 가이드는 그중 어느 것도 넘기지 않고 암호화폐 취득 원가를 추적하면서도, 방어할 수 있는 숫자에 도달하는 방법이에요.
취득 원가가 중요한 숫자인 이유
취득 원가는 자산에 낸 돈이에요. 수수료를 포함하고, 실제로 낸 통화 기준이에요. 지루하게 들려요. 하지만 다음을 결정하는 유일한 숫자예요.
- 팔 때 내야 할 세금이 얼마인지. 양도 차익은 매도가에서 취득 원가를 뺀 값이에요. 원가가 틀리면 세금을 더 내거나 덜 신고하게 되고, 둘 다 비싸요.
- 포지션이 실제로 이익인지. 오늘 시장 가격에서 내 취득 원가를 뺀 값이 실제 손익이에요. 원가가 없으면 시세 가치만 알 뿐 결과는 몰라요.
- 어떤 로트를 먼저 팔지. FIFO, LIFO, HIFO, 특정 ID 등 모든 방식은 개별 로트의 원가를 알아야 해요. 로트별 추적이 없으면 방식이 아니라 추측이에요.
- 보유할지 손실을 실현할지. 손실 실현은 어떤 로트가 손실 중이고 얼마나 손실인지 식별할 수 있어야 가능해요. 그건 원가의 문제예요.
차익/손실 요약, 세금 신고서, 연말 명세서 등 암호화폐 보고의 나머지는 모두 취득 원가에서 파생돼요. 이 층을 제대로 만들면 나머지는 기계적이에요.
”그냥 거래소를 연결하세요”가 잘못된 기본값인 이유
표준적인 취득 원가 도구의 흐름은 이래요. 로그인하고, 거래소마다 API 키를 붙여 넣고, 선택적으로 읽기 전용 OAuth를 연결하고, 서비스가 모든 걸 계산하게 두는 거예요. 편리하게 들리지만 문제가 네 가지 있어요.
- API 키는 자격 증명이에요. 읽기 전용 API 키도 키예요. 내 계정을 식별하고, 보통 사회공학으로 권한을 높일 수 있고, 내가 폐기를 기억할 때까지 남의 서버에 남아 있어요.
- 서비스가 내가 가진 모든 것을 영원히 알아요. 전체 보유 목록, 출금 내역, 내 거래 행동의 영구적인 타임라인을 넘기게 돼요. 구독을 해지해도 그 데이터는 잊히지 않아요.
- 거래소 쪽 내역만 봐요. 하드웨어 지갑으로 보낸 것, 온체인에서 교환한 것, DeFi에서 번 것, 결제로 받은 것은 거래소 전용 도구에는 보이지 않아요. 결국 수작업을 하게 되는데, 이제는 내 데이터까지 유출된 상태예요.
- 거래소가 사라지거나 상장 폐지하는 순간 무너져요. 거래소가 오프라인이 되면(반복적으로 일어난 일이에요) API가 멈추고 추적 기록도 함께 사라져요. 공개 블록체인은 그렇지 않아요.
비공개 대안은 신뢰 모델을 뒤집어요. 자격 증명은 내가 가지고, 내역은 공개 출처(블록체인 주소, CSV 내보내기, 수동 입력)에서 도출하고, 로컬 도구가 대조하게 해요.
원칙: 장부 하나, 입력 둘, 자격 증명 제로
암호화폐 취득 원가는 신뢰를 최소화한 두 가지 입력, 즉 온체인 활동은 공개 주소로, 거래소 활동은 CSV 내보내기로 가져오는 하나의 비공개 장부에 살아요. 다른 건 없어요.
장부는 내 것이에요. 블록체인은 공개된 읽기 전용 데이터예요. 누구나 지갑 주소를 조회할 수 있지만, 연결하지 않는 한 주소가 나를 식별하지는 않아요. CSV 내보내기는 내가 통제하는 다운로드예요. 장부에 들어가기 전에 검토하고, 들어간 뒤에 삭제할 수 있어요. 둘을 합치면 어떤 제3자에게도 자격 증명을 주지 않고 암호화폐에서 한 모든 일을 포괄해요.
장부가 작동하게 하는 규칙은 세 가지예요.
- 모든 로트에는 날짜, 원가, 수수료가 있어요. “대략 작년 여름”은 안 돼요. 가진 가장 좋은 날짜를 골라 적고, 구매가 다른 통화였다면 그날의 환율도 적으세요.
- 내 지갑 간 이체는 과세 사건이 아니지만 추적해야 해요. 그러지 않으면 같은 코인이 한쪽에서는 매도로, 다른 쪽에서는 매수로 보여서 원가가 두 배가 되거나 사라져요.
- 온체인 교환은 두 건의 거래예요. 처분 하나와 취득 하나요. 토큰 A는 교환 시점의 공정 시장 가치로 팔리고, 그 수익이 토큰 B의 원가가 돼요. 이걸 잊는 게 직접 하는 추적에서 가장 흔한 오류예요.
여섯 단계 시스템
1단계: 내 암호화폐가 있었던 모든 곳 나열하기
종이 한 장이나 메모 하나에 사용한 모든 거래소 계정, 핫월렛, 하드웨어 지갑, 스테이킹 플랫폼, DeFi 프로토콜을 적으세요. 문 닫은 거래소, 버린 지갑처럼 사라진 것도 포함하세요. 코인이 한 번이라도 있었던 곳이라면 목록에 있어야 해요. 어딘가에서 원가에 영향을 주는 거래를 만들었으니까요.
이 단계의 목표는 완전성이에요, 행동이 아니에요. 빠진 지갑은 6개월 뒤 “이 코인들은 어디서 온 거지?”라는 미스터리의 원천이에요.
2단계: 자기 보관 지갑의 공개 주소 모으기
모든 하드웨어 지갑, 핫월렛, 자기 보관 주소에 대해 공개 주소(시드가 아니라 받는 주소)를 적어 두세요. 공유해도 안전해요. 자격 증명이 아니에요. 잔액과 내역을 볼 수 있게 할 뿐 자금을 옮길 수는 없어요.
유용한 점이 있어요. 대부분의 지갑은 자산마다 또는 사용할 때마다 다른 수신 주소를 만들어요. 비트코인은 마스터/확장 공개 키(xpub, ypub, zpub)를, 계정 모델 체인(이더리움, 솔라나 등)은 메인 주소를 모으세요. 시드를 드러내지 않고도 지갑 내역 전체를 볼 수 있어요.
3단계: 사용한 모든 거래소에서 CSV 내보내기
신뢰할 만한 거래소는 모두 “거래 내역” 또는 “체결 내역” 내보내기를 제공해요. 내려받으세요. 각 CSV를 열어서 최소한 다음 열이 있는지 확인하세요.
| 열 | 중요한 이유 |
|---|---|
| 날짜/시간(UTC) | 환율과 과세 연도의 기준이 돼요 |
| 유형(매수/매도/입금/출금/수수료) | 과세 사건인지 결정해요 |
| 자산 | 어떤 코인인지 |
| 수량 | 얼마가 움직였는지 |
| 법정화폐 가격 | 로트의 원가 기준이에요 |
| 수수료 | 매수 시 원가에 더하고, 매도 시 수익에서 빼요 |
열이 빠졌거나 값이 이상하면 가져오기 전에 CSV에서 고치세요. 장부에 들어가고 나면 오류가 퍼져요. 흔한 정리는 현지 통화 가격을 그날의 환율로 내 기준 통화로 바꾸고, 다시 내려받은 내보내기의 중복 행을 지우는 거예요.
4단계: 개인 간 거래와 선물은 수동 로트로 입력하기
일부 코인은 CSV 없이 들어와요. 친구에게서 샀거나, 선물로 받았거나, 일의 대가로 받았거나, 더는 내역이 없는 지갑에서 옮겨 온 경우예요. 이런 건 최선의 원가로 직접 입력하세요.
- 개인 간 매수: 그날 내 기준 통화로 실제로 낸 가격.
- 일의 대가로 받은 경우: 받은 날의 공정 시장 가치(이 가치는 과세 소득이기도 해요. 따로 기록하세요).
- 선물: 대부분의 관할권에서 준 사람의 원래 취득 원가를 승계해요(물어보세요). 알 수 없다면 선물한 날의 가격을 쓰고 가정을 문서화하세요.
- 상속: 보통 상속일의 공정 시장 가치로 재설정돼요(관할권마다 달라요. 현지 세무 전문가에게 확인하세요).
수동 로트마다 옆에 가정을 문서화하세요. 감사 방어는 “나는 완벽한 기록이 있어요”가 아니라 “나는 일관된 방법을 투명하게 적용했어요”예요.
5단계: 이체 대조하기
모든 스프레드시트 시도를 무너뜨리는 단계예요. 전체 장부를 열어서 거래소의 각 “출금”을 지갑의 “입금”과 맞추고, 반대도 마찬가지로 맞추세요. 코인 기준으로 합계가 0이어야 해요(네트워크 수수료 제외). 각 쌍을 매도가 아닌 이체로 표시하세요.
출금에 맞는 입금이 없다면 코인을 잃어버렸거나(일부 관할권에서는 증빙이 있으면 공제 가능한 손실이에요), 지갑 추가를 잊었거나, 거래 상대방에게 옮긴 것(처분이에요)이에요. 넘어가기 전에 하나하나 해결하세요. 대조되지 않은 이체가 유령 차익의 원천이에요.
6단계: 방법을 정하고 지키기
로트 식별 방법을 고르세요. FIFO가 가장 안전한 기본값이고 일부 나라에서는 세무 당국이 요구해요. 연도에 걸쳐 일관되게 적용하세요. 중간에 방법을 바꾸면 사후에 최적화한 것처럼 보이는 서류 흔적이 생기고, 감사가 눈여겨보는 부분이에요.
방법이 정해지면 모든 매도는 어떤 로트를 썼는지, 원가, 수익, 보유 기간, 차익/손실을 만들어 내요. 연말에 합산하면 세금 신고서가 저절로 채워져요.
원가를 부풀리거나 줄이는 흔한 오류
- 이체를 매수로 세기. 내 거래소에서 내 지갑으로 들어온 코인은 구매가 아니에요. 시스템이 구매라고 생각하면 원가가 두 배가 되고 차익이 과소 신고돼요.
- 수수료 무시하기. 0.1% 거래 수수료는 작아 보이지만 백 건의 거래가 쌓이면 원가가 상당히 달라져요. 매수 쪽 수수료는 원가에 더하고, 매도 쪽 수수료는 수익에서 빼요.
- 체결 가격 대신 구매일 시세 사용하기. 둘은 같지 않아요. CSV에 체결 가격이 있으니 그걸 쓰세요.
- 온체인 교환 잊기. Uniswap이나 Jupiter 교환은 같은 순간에 토큰 A의 매도와 토큰 B의 매수예요. 두 쪽 모두 그중 하나(보통 달러/유로/현지 통화 쪽)의 공정 시장 가치로 기록해야 해요.
- 통화 섞기. 화요일에 유로로 ETH를 사서 금요일에 달러로 팔면 유로 기준 원가와 달러 기준 수익이 나와서 직접 비교할 수 없어요. 모든 걸 각 사건의 실제 환율로 내 기준 통화로 바꾸세요.
- 거래소의 “평균 가격” 필드 믿기. 평균일 뿐이에요. 취득 원가는 로트별이에요. 평균은 전부 한 번에 팔 때만 맞아요.
thrust 앱은 어떻게 도와주나요
thrust 앱은 이 글이 설명하는 것과 같은 원칙으로 만들어졌어요. 암호화폐는 내 지갑에 있고, 추적은 내 휴대폰에 있어요.
- 공개 주소로 지갑 추가. 지원되는 어떤 블록체인이든 공개 주소나 확장 공개 키를 붙여 넣으세요. thrust 앱이 공개 체인 데이터를 직접 읽어서 거래 내역을 재구성해요. 시드 구문도, API 키도, 거래소 로그인도 필요 없어요. 사람들이 실제로 보유하는 주요 체인을 폭넓게 다뤄요.
- CSV로 거래소 내역 가져오기. 거래소에서 CSV를 받아서 넣으면 온체인 지갑과 같은 장부에 들어가요. 수정은 로컬에만 머물러요.
- 개인 간 거래와 선물을 위한 수동 로트. 날짜, 수량, 가격, 수수료를 입력하면 thrust 앱이 각주가 아니라 일급 로트로 다뤄요.
- 법정화폐와 암호화폐를 아우르는 통합 장부. 같은 앱에 은행 계좌, 카드, 증권, 암호화폐가 있어서 취득 원가가 그걸 지불한 현금 옆에 있어요. 법정화폐와 암호화폐 사이의 이체도 올바르게 분류돼요.
- 기본이 다중 통화. 유로로 사고, 달러로 팔고, 둘에 걸쳐 보유해도 thrust 앱은 사건별 환율을 유지해서 계산 없이도 원가가 내 기준 통화로 남아요.
- Ghost Mode. 켜면 네트워크 접속을 차단해요. 핵심 기록과 분석은 오프라인에서 계속되고, 실시간 시세, 다운로드, iCloud 동기화는 사용할 수 없어요.
- 로컬 데이터만 읽는 AI CFO. 앱이 “이 로트는 1년 넘게 보유했어요”나 “검토할 만한 미실현 손실이 있어요”라고 알려 줄 때, 내가 만든 기기 안 장부를 읽는 거예요. 분석하려고 밖으로 내보내는 건 아무것도 없어요.
그 결과는 구조상 비공개이고, 세금 시즌에 방어할 만큼 충분히 완전하고, 내가 통제하는 입력으로 만들어진 취득 원가 장부예요.
마무리
취득 원가는 암호화폐에서 모든 흥미로운 결정, 즉 언제 팔지, 언제 손실을 실현할지, 언제 리밸런싱할지, 실제로 얼마를 내야 하는지를 가능하게 하는 지루한 숫자예요. 대부분에게 추측으로 남는 이유는 수학이 어려워서가 아니에요. 표준 도구가 수학이 필요로 하는 것보다 더 많은 접근을 요구하기 때문이에요. 자격 증명은 내가 지키고, 공개 데이터만 가져오고도 올바른 숫자에 도달할 수 있어요. 작업은 신중한 오후 한 번과 그 뒤의 주 5분 점검이에요. 되찾는 프라이버시는 영구적이에요.