안녕하세요, まさきん입니다.
개인적으로 소소하게 이어가고 있는 부업이 있습니다. 경비 기장 자체는 회계 SaaS로 할 수 있지만, “이 카드 이용이 무슨 경비였나”를 떠올리는 작업이 은근히 번거로웠습니다.
그래서 카드 명세와 메일 영수증을 AI에게 대조시켜, 경비 분류까지 자동화하는 구조를 만들었습니다. 이번에는 API 호출 방법부터 실제로 빠졌던 함정까지 포함해서 소개합니다.
계기는 “미분류 상태로 쌓여간다”는 것
회계 SaaS에 카드를 연동해두면 이용 명세는 자동으로 들어옵니다. 다만 “이게 무슨 지불이었는지”까지는 알 수 없습니다. 결국 나중에 기억을 더듬어 분류하게 됩니다.
기억은 점점 희미해집니다. 그래서 떠올리는 작업 자체를 AI에게 맡기기로 했습니다.
구조의 흐름
하고 있는 일은 다음 4단계입니다.
- 회계 SaaS의 API에서 아직 분류가 끝나지 않은 카드 이용 명세를 가져온다
- 같은 금액·비슷한 날짜의 주문 확인 메일이나 영수증 메일을 검색한다
- 양쪽을 대조해서 내용을 특정한다
- 특정된 내용을 바탕으로 경비 종류를 분류하고, 회계 SaaS에 거래로 등록한다
포인트는 “명세만”으로도 “메일만”으로도 아니라, 양쪽을 대조해야 비로소 내용이 특정된다는 것입니다.
미처리 명세를 가져온다
회계 SaaS의 API로 명세를 가져오면 각 명세에 처리 상태를 나타내는 플래그가 붙어 있습니다. 미등록 명세만 대상으로 하려면 이 플래그로 좁힙니다.
GET /api/1/wallet_txns
query: { company_id, start_date, end_date, limit: 100 }
돌아온 명세 중 “미등록”을 나타내는 상태이면서 미정산 금액이 0보다 큰 것만 처리 대상입니다. 등록 완료나 무시 처리로 설정한 명세는 대상에서 제외합니다. 기간은 페이징되는 경우가 많으므로, 월을 넘긴 조회 누락이 일어나지 않도록 여러 기간으로 나눠서 확인하고 있습니다.
메일 검색의 노하우
메일 본문을 그대로 AI에게 읽히면 정보량이 많아 토큰 상한에 걸리는 경우가 있습니다. 그래서 사전에 조건을 좁힌 다음 내용을 전달하는 노하우를 쓰고 있습니다.
먼저 주문 확인 메일이나 영수증 메일의 발신자 주소로 기간 검색을 겁니다.
search_threads query: "from:[email protected] after:2026/09/01 before:2026/09/30"
해당 메일이 발견돼도 본문을 통째로 AI에게 넘기면 토큰 상한에 걸리는 경우가 있습니다. 이 경우는 메일 본문을 저장한 파일에 키워드 검색을 걸어, 금액이나 상품명이 적힌 줄만 뽑아냅니다.
# 저장된 메일 파일에서 금액과 날짜가 가까운 것만 좁히는 예시
grep -l "3,980円" ./mail_archive/*.eml | xargs grep -l "2026-09"
금액과 날짜라는 두 가지 힌트로 좁히면 후보는 몇 건 정도까지 줄어듭니다. 거기까지 좁힌 다음에야 비로소 해당 부분만 AI에게 넘겨 대조시키고 있습니다. 제목이나 첫머리 스니펫만으로 충분한 메일도 많으므로, 필요한 범위만 가져오는 것이 요령입니다.
경비로 나누는 지출에는 통신비 같은 고정비도 섞여 있습니다. 업무에도 쓰는 스마트폰 요금은 분담 비율을 정하기 어려운 대표적인 항목입니다. 그렇게 생각하면 요금제 자체를 재검토하는 것도 하나의 방법일지 모릅니다.
누르면 라쿠텐 로그인 페이지가 열립니다. 로그인하면 캠페인 내용이 표시됩니다.
분류 규칙
내용이 특정되면 다음 3종류로 분류하고 있습니다.
| 분류 | 내용 | 처리 |
|---|---|---|
| 부업 직접 경비 | 부업에 직접 관련된 소모품·서비스 | 사업 분담 비율 주석과 함께 경비 처리 |
| 참고 도서·자료비 | 업무 이해를 위한 서적 등 | 일반적인 자료비로 처리 |
| 개인적인 지출 | 부업과 무관한 사적인 구매 | 경비에서 제외(사업주 대여로 처리) |
분류가 애매한 것은 무리하게 경비 쪽으로 넣지 않도록 하고 있습니다. 판단에 자신이 없는 지출은 일단 개인적인 지출로 다루고, 나중에 다시 볼 대상으로 플래그를 세워둡니다.
경비로 등록한다
분류가 정해지면 회계 SaaS의 API로 거래로 등록합니다.
POST /api/1/deals
body: {
company_id,
issue_date: "2026-09-15",
type: "expense",
details: [{
account_item_id: <경비 계정의 ID>,
amount: <금액>,
description: "◯◯ 소모품(사업 분담 비율 주석)"
}],
payments: [{
amount: <금액>, date: "2026-09-15",
from_walletable_type: "credit_card", from_walletable_id: <카드의 ID>
}]
}
여기서 한 가지 주의점이 있습니다. 이 등록 처리는 회계 SaaS 내부에서 “거래를 신규 작성”하는 조작으로, 원래의 미처리 명세와 자동으로 연결되어 정산되는 것은 아닙니다. 거래를 등록하기만 해서는 명세의 상태는 미처리 그대로입니다.
그래서 등록이 끝나면 반드시 회계 SaaS 화면에서 명세와 이번에 만든 거래를 수동으로 연결하는 조작을 하고 있습니다. 여기를 빠뜨리면 같은 지출이 이중으로 기록되므로 주의하고 있습니다.
”잘못해서 다른 카테고리에 들어간 경비”도 정기적으로 찾아낸다
자동화해도 분류 실수는 사라지지 않습니다. 그래서 한 달에 한 번, 부업과 관련된 것 같은데 일반적인 카테고리에 그대로 방치된 기록이 없는지 AI에게 찾아내게 하고 있습니다.
구체적으로는 손익계산서 리포트를 API로 가져와서, 부업 전용 계정이 아니라 일반적인 계정에 기록된 경비를 특정합니다. 그런 다음 각 계정의 내역을 거래 목록 API로 가져와서, 적요란의 키워드나 금액의 경향으로부터 “원래는 부업 카테고리로 옮겨야 하는 것 같다”고 생각되는 기록을 추출해서 목록으로 만들게 합니다.
해당하는 거래가 발견되면 PUT으로 계정을 바꿔 넣습니다.
PUT /api/1/deals/{거래ID}
body: { company_id, issue_date, type: "expense",
details: [{ id: <기존 명세ID>, account_item_id: <올바른 계정ID>, amount, description }] }
여기서도 주의점이 있습니다. details 안에 기존 명세 ID를 포함하지 않고 보내면 갱신이 아니라 신규 추가로 처리되어 버립니다. 기존 ID를 반드시 이어받는 것이 올바르게 옮기기 위한 조건입니다.
추출된 것은 직접 내용을 확인하고, 필요한 것만 바꿔 넣고 있습니다.
최종 판단은 전문가에게 맡긴다
여기는 반복해서 강조해두고 싶은 부분입니다. 이 구조는 어디까지나 “분류의 사전 준비”를 효율화하는 것입니다. 최종적인 경비 구분 판단이나 분담 비율의 타당성에 대해서는 세무사 등 전문가의 판단을 따르고 있습니다.
AI에 의한 분류는 어디까지나 1차 안입니다. 특히 사업 분담이 관련된 부분은 스스로만의 판단으로 진행하지 않고, 전문가에게 확인받는다는 전제로 운영하고 있습니다.
해보고 느낀 점
가장 도움이 된 것은 “이건 무슨 지불이었나”를 떠올리는 작업이 없어진 것입니다. 메일이라는 기록이 남아 있는 한, 내용 특정은 AI에게 맡길 수 있습니다.
한편 분류의 최종 확인은 반드시 직접 눈으로 하고 있습니다. 특히 개인적인 지출과 경비의 경계선은 기계적인 판단만으로는 위험하다고 느끼는 부분이기 때문입니다.
이런 분에게 추천합니다
- 부업이나 개인 사업으로 카드 결제 경비가 많아 분류가 뒤로 밀리기 쉬운 분
- 메일에 주문 확인이나 영수증이 남아 있는 구매가 많은 분
- 회계 SaaS의 API 연동이나 AI 활용에 어느 정도 익숙한 분
정리
카드 명세와 메일을 대조한다는 발상 자체는 특별한 것이 아닙니다. 다만 이를 매번 직접 하느냐 구조에 맡기느냐로 드는 수고는 크게 달라집니다.
API 등록만으로는 명세와 정산까지는 되지 않는다는 함정까지 포함해서 알아두면, 실제로 손을 움직일 때 헤매지 않게 될 것입니다. 최종 판단은 전문가에게 맡긴다는 전제를 무너뜨리지 않으면서, 사전 준비 부분만 잘 구조화할 수 있었다고 느낍니다.
이 정리를 하면서 통신비도 재검토 대상이 되었습니다. 업무에도 쓰는 스마트폰 요금은 분담 판단이 가장 골치 아픈 지출이었습니다. 그렇다면 먼저 요금제 자체를 정리해도 좋을지 모릅니다.
이 글에는 제휴 광고가 포함되어 있습니다. 이 사이트의 링크를 통해 상품·서비스에 신청하시면 제휴사로부터 보상을 받을 수 있습니다. 또한 운영자는 라쿠텐 그룹 소속 직원으로, 사원 추천 프로그램을 통해 보상을 받는 경우가 있습니다. 기사 내용과 평가는 광고 유무와 관계없이 운영자의 실제 경험과 조사를 바탕으로 작성했지만, 위 관계를 이해하신 후 읽어 주시기 바랍니다. 자세한 내용은 면책조항·제휴 링크 안내를 참고해 주세요. 면책조항·제휴 링크 안내
이 글에는 기계 번역이 포함되어 있습니다. 정확한 조건은 라쿠텐 모바일 공식 사이트의 다국어 페이지에서 확인해 주세요.
라쿠텐 모바일의 통신 지역·전파 상황이 궁금하신 분은, 공식 전파 개선·조사 요청 양식 을 통해 문의하실 수 있습니다.