AI··11 min read·-

싱가포르 1인법인 회계, 그냥 만들어서 쓰기로 했다

월 60불짜리 회계 서비스 대신, CLI 기반 백오피스를 만들어서 AI 에이전트한테 시키는 방향으로 갔다. 3일 걸렸다.

#AI#Tech#accounting#singapore#cli#ai-agent

계기

싱가포르에서 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> 패턴이다.

bash
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 구조도 처음부터 잡았다.

plaintext
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 실행하고 결과물을 돌려준다.

모바일에서 Claude dispatch로 에이전트한테 명령

만들어진 인보이스 PDF. 라인아이템별 GST 세금코드와 breakdown이 자동으로 들어간다.

생성된 인보이스 PDF 예시

급여명세서도 자동 생성된다. CPF/SDL 계산이 포함된 상태로.

급여명세서 PDF 예시


오픈소스로 만들었다

일단 오픈소스로 올려봤다. 남들이 쓸지는 모르겠다 ㅋㅋ

싱가포르에서 1인법인 하는 개발자가 얼마나 되겠냐만, 혹시 비슷한 상황인 사람이 있으면 쓸 수 있게 해두는 게 맞는 것 같아서.

근데 사실 이 프로젝트의 의미는 오픈소스 자체보다 다른 데 있다고 본다.


진짜 포인트: 마찰계수 0

이 프로젝트를 만들면서 느낀 건, 간단한 반복 작업을 정합성 안 깨뜨리면서 AI로 대체하는 실험으로서 꽤 괜찮은 케이스라는 거다.

회계 업무는 반복적이지만 정확해야 한다. 숫자 하나 틀리면 감사에서 걸린다. 그래서 state machine으로 상태 전이를 강제하고, 멱등한 명령으로 재시도를 안전하게 만들고, 증빙을 자동 생성하게 했다. 에이전트가 실수할 수 있는 경로를 구조적으로 줄이는 방향이다.

그리고 하나 더.

다른 작업 병행하면서 만들어도 3일 걸렸다.

이건 좀 생각해볼 만한 포인트인 것 같다. "필요하면 만들어서 쓸 수 있다"는 게 지금 시점에서의 구현 마찰계수가 어느 정도인지를 보여준다.

예전 같으면 이런 시스템 만들려면 몇 주는 잡아야 했다. 지금은 Claude Code랑 Codex한테 설계 의도와 제약 조건만 정확히 전달하면, 구현은 빠르게 나온다. 세금 계산 로직, PDF 템플릿, API 엔드포인트 146개, 테스트까지 — 사람이 하나하나 짤 필요가 없어졌다.

물론 설계는 사람이 해야 한다. "어떤 상태 전이를 허용할 것인가", "증빙은 어떤 시점에 생성할 것인가", "에이전트가 실수할 수 있는 경로는 어디인가" — 이런 판단은 도메인을 아는 사람이 내려야 한다. 근데 그 판단만 내리면 구현은 거의 자동이다.


정리하면

  • 싱가포르 1인법인 회계 비용이 아까워서 만들기 시작했다
  • CLI-first로 설계해서 AI 에이전트의 skill로 바로 붙일 수 있게 했다
  • 정합성은 state machine + 멱등성 + 증빙 자동 생성으로 잡았다
  • 다른 일 하면서 3일 만에 만들었다

아직 Stripe 연동이나 온체인 결제 검증 같은 건 안 했다. 쓰면서 필요해지면 붙일 예정.

일단 여기까지. 실제로 몇 달 돌려보고 나서 후기를 추가할 것 같다.

댓글