QuickBooks에서 Beancount로 마이그레이션 플레이북
1단계: QuickBooks에서 데이터 내보내기
5년치 데이터를 마이그레이션하는 작업은 모든 QuickBooks 기록을 사용 가능한 형식으로 내보내는 것부터 시작됩니다. QuickBooks Desktop과 QuickBooks Online은 서로 다른 내보내기 옵션을 제공합니다:
1.1 QuickBooks Desktop – 내보내기 옵션
IIF (Intuit Interchange Format): QuickBooks Desktop은 목록(계정과목표, 고객, 공급업체 등)을 .IIF
텍스트 파일로 내보낼 수 있습니다. QuickBooks Desktop에서 파일 → 유틸리티 → 내보내기 → IIF로 목록 내보내기로 이동한 다음 필요한 목록(예: 계정과목표, 고객, 공급업체)을 선택하세요. 이렇게 하면 계정 이름, 유형 및 목록 데이터가 포함된 텍스트 파일이 생성됩니다. IIF는 독점적이지만 일반 텍스트 형식이므로 분석하기가 비교적 쉽습니다. 이를 사용하여 계정과목표와 연락처 목록을 캡처하여 Beancount에서 참조용으로 사용하세요.
CSV를 통한 총계정원장/분개장: 거래 데이터의 경우 QuickBooks Desktop은 원클릭 전체 내보내기 기능을 제공하지 않지만, 보고서를 사용할 수 있습니다. 권장되는 방법은 원하는 기간 동안의 분개장(모든 거래)을 내보내는 것입니다. QuickBooks Desktop에서 보고서 → 회계 및 세금 → 분개장을 열고, 날짜를 가장 빠른 거래부터 오늘까지로 설정한 다음, 내보내기 → Excel을 클릭하세요. 보고서 머리글/바닥글과 빈 열을 제거한 후 결과를 CSV로 저장하세요. 숫자 데이터가 깨끗한지 확인하세요: 센트 포함(예: 3
이 아닌 3.00
), 불필요한 따옴표 없음, CSV에 통화 기호나 이중 음수 부호 없음. CSV에는 Date, Trans #, Name, Account, Memo, Debit, Credit, Balance와 같은 열이 있어야 합니다(또는 보고서 형식에 따라 단일 Amount 열).
팁: QuickBooks Desktop 2015+ 버전에서는 찾기 대화상자를 통해서도 거래를 내보낼 수 있습니다. 편집 → 찾기 → 고급을 사용하고, 날짜 범위를 5년으로 설정한 다음, 결과를 CSV로 내보내세요. 경고: 일부 버전에서는 내보내기가 32,768줄로 제한됩니다. 데이터가 매우 큰 경우 잘림을 방지하기 위해 연도별(또는 더 작은 단위)로 내보낸 다음 나중에 결합하세요. 중복을 방지하기 위해 날짜 범위가 겹치지 않도록 하세요.
기타 형식 (QBO/QFX/QIF): QuickBooks Desktop은 .QBO
(Web Connect) 또는 .QFX/.OFX
파일을 통해 은행 거래를 가져올 수 있지만, QuickBooks에서 내보내는 데는 일반적이지 않습니다. 목표가 은행 거래만 추출하는 것이라면 이미 은행에서 QBO/OFX 형식으로 가지고 있을 수 있습니다. 하지만 전체 원장 내보내기를 위해서는 IIF와 CSV를 사용하는 것이 좋습니다. QuickBooks Desktop은 타사 도구 없이는 QIF(Quicken Interchange Format)로 직접 내보낼 수 없습니다. 만약 QIF를 얻을 방법을 찾았다면, 일부 원장 도구(구 버전 Ledger 2.x)는 QIF를 읽을 수 있었지만, 저희 파이프라인에서는 CSV로 작업하는 것이 더 낫다는 점을 유의하세요.
1.2 QuickBooks Online – 내보내기 옵션
내장된 Excel/CSV 내보내기: QuickBooks Online (QBO)은 데이터 내보내기 도구를 제공합니다. 설정 ⚙ → 도구 → 데이터 내보내기로 이동하세요. 내보내기 대화상자에서 보고서 탭을 사용하여 데이터(예: 총계정원장 또는 거래 목록)를 선택하고 목록 탭에서 목록(계정과목표 등)을 선택한 후, 모든 날짜를 선택하고 Excel로 내보내세요. QuickBooks Online은 선택한 보고서 및 목록(예: 손익계산서, 재무상태표, 총계정원장, 고객, 공급업체, 계정과목표 등)에 대한 여러 Excel 파일이 포함된 ZIP 파일을 다운로드합니다. 그런 다음 이 Excel 파일들을 처리하기 위해 CSV로 변환할 수 있습니다.
거래 세부 정보 보고서: QBO의 기본 내보내기에 단일 총계정원장 파일이 포함되지 않은 경우, 수동으로 상세 보고서를 실행할 수 있습니다:
- 보고서로 이동하여 계정별 거래 세부 정보(또는 일부 QBO 버전에서는 총계정원장)를 찾습니다.
- 보고 기간을 전체 5년 범위로 설정합니다.
- 보고서 옵션에서 그룹화 기준 = 없음으로 설정합니다(소계 없이 개별 거래를 나열하기 위해).
- 열을 사용자 정의하여 최소한 다음을 포함하도록 합니다: 날짜, 거래 유형, 번호, 이름(수취인/고객), 메모/설명, 계정, 차변, 대변(또는 단일 금액 열), 그리고 잔액. 사용했다면 클래스나 위치도 포함합니다.
- 보고서를 실행한 다음 Excel로 내보내기를 합니다.
이렇게 하면 모든 거래의 상세 원장을 얻을 수 있습니다. 이것을 CSV로 저장하세요. 각 줄은 거래의 한 분개(posting)를 나타냅니다. 나중에 변환을 위해 거래별로 줄을 그룹화해야 합니다.
계정과목표 및 기타 목록: QuickBooks Online은 회계 → 계정과목표 → 일괄 작업 → Excel로 내보내기를 통해 계정과목표를 내보낼 수 있습니다. 계정 이름과 유형을 얻기 위해 이 작업을 수행하세요. 마찬가지로, 메타데이터로 이름을 가져오려면 고객, 공급업체 등을 내보내세요.
QuickBooks Online API (선택 사항): 프로그래밍 방식의 접근을 위해 Intuit는 QBO 데이터용 REST API를 제공합니다. 고급 사용자는 QuickBooks Online 앱을 생성하고(개발자 계정 필요) API를 사용하여 JSON 형식으로 데이터를 가져올 수 있습니다. 예를 들어, Account
엔드포인트를 쿼리하여 계정과목표를, JournalEntry
또는 GeneralLedger
보고서 엔드포인트를 쿼리하여 거래를 가져올 수 있습니다. API를 래핑하는 python-quickbooks
와 같은 Python SDK가 있습니다. 그러나 API를 사용하는 것은 OAuth 인증을 포함하며, 자동화를 선호하지 않는 한 일회성 마이그레이션에는 과도한 작업입니다. 대부분의 경우, CSV/Excel로 수동 내보내기하는 것이 더 간단하고 오류가 적습니다.
2단계: 데이터 변환 및 정리
QuickBooks 데이터를 CSV(및/또는 IIF)로 얻었다면, 다음 단계는 이를 Beancount의 일반 텍스트 원장 형식으로 변환하는 것입니다. 여기에는 내보낸 파일을 파싱하고, QuickBooks 계정을 Beancount 계정과목표에 매핑하며, 거래를 Beancount 구문으로 형식화하는 작업이 포함됩니다.