싱가포르 1인법인 회계, 그냥 만들어서 쓰기로 했다
월 60불짜리 회계 서비스 대신, CLI 기반 백오피스를 만들어서 AI 에이전트한테 시키는 방향으로 갔다. 3일 걸렸다.
계기
싱가포르에서 1인 법인을 만들었다.
법인 세우는 건 별로 안 어렵다. 문제는 그 다음이다. 매달 인보이스 발행하고, 급여 처리하고 (CPF/SDL 계산 포함), 경비 정리하고, 은행 거래 내역 맞추고, 월말에 회계사한테 넘길 자료 만들어야 한다.
이걸 해주는 서비스들이 있다. Xero, QuickBooks 같은 것들. 근데 가격이 좀 그렇다.
- 회계사 붙이면: 인당 월 $60 이상
- SaaS만 써도: 월 $20~30
- 거기다 싱가포르 특유의 세금 규칙 (SDL 상한, CPF 연령대별 요율, GST 라인아이템별 세금코드) 제대로 지원하는 서비스가 드물다
1인 법인인데 회계 서비스에 월 $60 내는 건 좀 아닌 것 같았다.
그래서 방향을 바꿨다
요즘 AI 에이전트 쪽 흐름을 보면, 결국 도구를 잘 만들어두면 에이전트가 쓴다는 방향으로 가고 있다.
MCP로 만드는 방법도 있었다. 근데 MCP는 설치해두면 에이전트 세션마다 tool description을 context에 다 올려야 한다. 도구가 많아질수록 context 소비가 꽤 크다. Claude 쪽에서 "tools of tools" 패턴으로 MCP context를 절감할 수 있다는 얘기가 나오고 있긴 한데, 아직은 실험적인 단계라고 본다.
반면 CLI는 이미 구조화된 입출력이고, --help로 자기 문서화가 되고, 에러 코드도 있고, 셸에서 바로 돌릴 수 있다. 에이전트 입장에서 보면 CLI 자체가 하나의 skill이다. 그리고 나중에 필요하면 CLI를 MCP로 wrap하면 된다. CLI → MCP는 쉽지만 그 반대는 귀찮다.
그래서 생각했다.
CLI 기반 백오피스를 만들고, 그걸 Claude Code나 Codex에 skill로 붙이면 — 개인 accountant 에이전트가 되는 거 아닌가?
Airwallex가 API를 잘 제공해주고 있고, 싱가포르 세금 규칙은 공개 정보니까 코드로 구현 가능하다. 인보이스 PDF, 급여명세서, 은행 조정까지 — 회계사한테 넘길 증빙만 잘 만들어주면 된다.
설계하면서 중점을 둔 것들
CLI-First, AI-Native
모든 기능이 acct <domain> <action> 패턴이다.
acct invoice create --client "ABC Corp" --currency SGD
acct invoice add-item $INV_ID --desc "Consulting" --qty 1 --rate 5000 --tax-code SR
acct invoice issue $INV_ID
acct payroll run --employee $EMP --month 2026-03이게 사람이 타이핑하기 위한 도구이기도 하지만, 핵심은 에이전트가 실행할 수 있는 인터페이스라는 점이다. 멱등한 명령, 명확한 상태 전이, 구조화된 에러 (409 = 잘못된 전이). 에이전트가 결과를 보고 다음 행동을 판단할 수 있어야 한다.
Evidence-First
모든 재무 행위는 증빙을 남긴다. 인보이스 → PDF, 급여 → 급여명세서 PDF, 대출 → 약정서/명세서/완제확인서 PDF.
싱가포르 법인은 IRAS 감사 대비 5년치 증빙 보관 의무가 있다. 증빙 없는 기록은 감사에서 인정 안 된다. 그래서 export pack 구조도 처음부터 잡았다.
export-2026-03/
manifest.json # 검증 상태, SHA256 체크섬
invoices/ # CSV + PDF
payroll/ # CSV + 급여명세서 PDF
expenses/ # CSV + 영수증
payments/ # CSV회계사한테 이 ZIP 하나 넘기면 끝이다.
State Machine
인보이스는 draft → issued → paid, 급여는 draft → reviewed → finalized → paid. 잘못된 전이는 서버에서 409로 거부한다.
이건 사람 실수 방지용이기도 하지만, 에이전트가 쓸 때 더 중요하다. 에이전트가 "이미 발행된 인보이스를 다시 발행"하는 실수를 구조적으로 막아준다.
지금 되는 것들
꽤 많다.
- 인보이스: 라인아이템별 GST 세금코드 (SR 9%/ZR/ES/NT), PayNow QR 코드 (SGQR 규격), 다중 결제수단, 반복 인보이스
- 급여: CPF/SDL 자동 계산 (시민권자/PR/EP/SP/WP별, 연령대별), 일할 계산, 급여명세서 PDF
- 경비/결제: 영수증 첨부, 다중 문서 할당, 크립토 결제 지원
- 은행 조정: CSV 업로드 → 기존 기록 자동 매칭
- 대출 원장: 이사/주주 대출, 이자 계산, 문서 3종 (약정서/명세서/완제확인서)
- 컴플라이언스 Todo: 싱가포르 세금 캘린더 10개 템플릿 (SDL/CPF 14일 납부, 분기별 GST 등)
- 월말 Export Pack: ZIP 한 방에 전부 내보내기
백엔드 ~11,000줄, 테스트 378 unit + 78 E2E. 싱가포르 세금 규칙만 72개 단위 테스트로 검증했다.
실제로 돌아가는 모습
모바일에서 Claude한테 명령 보내면, 에이전트가 CLI 실행하고 결과물을 돌려준다.
![]()
만들어진 인보이스 PDF. 라인아이템별 GST 세금코드와 breakdown이 자동으로 들어간다.
![]()
급여명세서도 자동 생성된다. CPF/SDL 계산이 포함된 상태로.
![]()
오픈소스로 만들었다
일단 오픈소스로 올려봤다. 남들이 쓸지는 모르겠다 ㅋㅋ
싱가포르에서 1인법인 하는 개발자가 얼마나 되겠냐만, 혹시 비슷한 상황인 사람이 있으면 쓸 수 있게 해두는 게 맞는 것 같아서.
근데 사실 이 프로젝트의 의미는 오픈소스 자체보다 다른 데 있다고 본다.
진짜 포인트: 마찰계수 0
이 프로젝트를 만들면서 느낀 건, 간단한 반복 작업을 정합성 안 깨뜨리면서 AI로 대체하는 실험으로서 꽤 괜찮은 케이스라는 거다.
회계 업무는 반복적이지만 정확해야 한다. 숫자 하나 틀리면 감사에서 걸린다. 그래서 state machine으로 상태 전이를 강제하고, 멱등한 명령으로 재시도를 안전하게 만들고, 증빙을 자동 생성하게 했다. 에이전트가 실수할 수 있는 경로를 구조적으로 줄이는 방향이다.
그리고 하나 더.
다른 작업 병행하면서 만들어도 3일 걸렸다.
이건 좀 생각해볼 만한 포인트인 것 같다. "필요하면 만들어서 쓸 수 있다"는 게 지금 시점에서의 구현 마찰계수가 어느 정도인지를 보여준다.
예전 같으면 이런 시스템 만들려면 몇 주는 잡아야 했다. 지금은 Claude Code랑 Codex한테 설계 의도와 제약 조건만 정확히 전달하면, 구현은 빠르게 나온다. 세금 계산 로직, PDF 템플릿, API 엔드포인트 146개, 테스트까지 — 사람이 하나하나 짤 필요가 없어졌다.
물론 설계는 사람이 해야 한다. "어떤 상태 전이를 허용할 것인가", "증빙은 어떤 시점에 생성할 것인가", "에이전트가 실수할 수 있는 경로는 어디인가" — 이런 판단은 도메인을 아는 사람이 내려야 한다. 근데 그 판단만 내리면 구현은 거의 자동이다.
정리하면
- 싱가포르 1인법인 회계 비용이 아까워서 만들기 시작했다
- CLI-first로 설계해서 AI 에이전트의 skill로 바로 붙일 수 있게 했다
- 정합성은 state machine + 멱등성 + 증빙 자동 생성으로 잡았다
- 다른 일 하면서 3일 만에 만들었다
아직 Stripe 연동이나 온체인 결제 검증 같은 건 안 했다. 쓰면서 필요해지면 붙일 예정.
일단 여기까지. 실제로 몇 달 돌려보고 나서 후기를 추가할 것 같다.