재고 자동분개란 무엇인가 — 매입·생산·판매 데이터를 회계장부와 연결하는 법
자동분개는 계정과목이 아니라 업무 Event 설계에서 시작한다. 입고·투입·생산완료·출고를 어떤 회계 Event로 볼지, Rule의 Version 관리와 역추적까지 하루의 흐름으로 정리한다.
오전 9시, 원재료 500kg이 공장에 입고됐다. 오전 11시에는 그중 일부가 생산에 투입됐다. 오후 3시 생산이 끝나 완제품이 창고에 들어왔고, 다음 날 일부 제품이 거래처로 출고됐다. 창고에서는 네 번의 변화가 있었다 — 입고되고, 투입되고, 생산되고, 출고됐다.
회계에서는 이 변화가 결국 금액으로 표현돼야 한다. 문제는 창고에서 발생한 네 개의 업무를 회계담당자가 다시 보고 장부에 하나씩 입력해야 하느냐다. ERP의 자동분개는 여기서 출발한다. 현업에서 이미 확정된 거래를 다시 회계에 입력하지 않고, 거래의 종류와 회계정책에 따라 필요한 회계정보로 변환하는 것 — 이것이 제조 ERP에서 자동분개가 담당하는 역할이다.
오전 9시 — 원재료가 입고됐다
구매담당자가 원재료 A 500kg을 주문했고 실제 물품이 도착했다. 창고에서는 입고를 확인한다. 이 시점에 ERP에는 원재료 A·수량 500kg·공급업체·입고일·입고 LOT·구매단가·구매발주번호 등이 생긴다. 회계 관점에서는 원재료라는 자산의 취득과 공급업체에 대한 채무가 발생할 수 있다. 일반적인 외상매입을 단순화하면 원재료 재고자산과 외상매입금이 연결된다.
하지만 여기서 첫 번째 주의점이 생긴다. 물류의 입고시점과 회계상 거래의 인식시점이 항상 같은 것은 아니다. 발주가 승인됐다고 재고자산이 생기는 게 아니고, 물건이 도착했어도 검수나 거래조건에 따라 회계처리 시점을 별도로 판단해야 할 수 있다. 세금계산서 수취시점과 실제 입고시점도 다를 수 있다. 그래서 시스템은 입고 버튼 클릭 = 차변 원재료 / 대변 외상매입금이라고 하드코딩하기보다 어떤 업무상태를 회계 Transaction의 발생조건으로 볼 것인지를 먼저 정의해야 한다.
자동분개에서 먼저 설계할 것은 계정과목이 아니라 Event다
자동분개 프로젝트를 시작하면 흔히 계정과목표부터 등록한다. 계정과목은 필요하지만, 제조 ERP에서는 그보다 먼저 현업에서 어떤 사건이 발생하는지 정의해야 한다. 구매업무만 해도 발주 / 입고 / 검수 / 매입확정 / 반품 / 결제가 서로 다른 사건이다. 이 중 어느 Event에서 재고수량이 늘고 어느 Event에서 회계정보가 생성되는지를 정해야 한다.
판매도 마찬가지다. 주문을 받았다는 것과 제품을 출고했다는 것, 매출을 인식한다는 것, 돈을 받았다는 것은 서로 다른 사건이다. 그래서 자동분개의 출발점은 “어느 계정으로 보낼까?“보다 “어떤 업무 Event가 발생했을 때 회계적으로 무엇이 달라지는가?” 다.
오전 11시 — 원재료가 생산에 투입됐다
원재료 100kg을 생산에 사용했다. 창고 입장에서는 원재료 재고가 감소하고, MES에서는 어느 Production Batch에 어떤 원재료 LOT를 얼마 투입했는지 기록한다. 하지만 이걸 곧바로 매출원가로 처리하면 안 된다. 원재료가 생산에 투입됐다고 제품이 판매된 게 아니기 때문이다. 제조과정에서는 원재료가 생산과정의 원가로 이동하고 이후 완제품 재고를 구성한다.
회계기준에서도 재고자산의 취득원가에는 매입원가뿐 아니라 직접노무원가와 제조간접원가의 체계적 배부액 등 전환원가가 포함될 수 있다. 그래서 제조 ERP에서는 생산투입을 단순한 재고 −100kg으로만 보면 부족하다. 어느 생산에 쓰였는지 연결돼야 나중에 그 재료비가 완제품 제조원가로 이어진다.
생산실적이 등록됐다고 최종 제조원가가 바로 확정되는 건 아니다
오후 3시, 생산이 완료됐다. MES에 실제 투입량과 완제품 생산수량이 기록됐고 이 시점에 실제 재료비는 상당 부분 계산할 수 있다. 하지만 제조원가 전체가 반드시 확정된 건 아니다. 직접노무비와 제조경비 일부는 월말에 집계되고, 제조간접원가 배부도 기간 마감과정에서 확정된다. 그래서 두 방식을 구분할 필요가 있다.
- 생산 Transaction을 즉시 기록하면서 회계분개도 동시에 생성하는 방식
- 생산 Transaction을 원가 Subledger에 먼저 축적한 뒤 원가마감 후 회계장부에 반영하는 방식
회사 규모·원가계산 방식에 따라 구조는 다르다. 자동분개의 본질은 무조건 실시간으로 분개하는 것이 아니라 같은 거래를 사람이 다시 해석하고 재입력하지 않아도 되게 만드는 것이다.
다음 날 — 완제품 100개가 출고됐다
제품이 거래처로 출고되면 판매와 재고가 만난다. 여기서도 한 가지 거래만 발생한다고 보면 안 된다. 판매에는 두 가지 경제적 변화가 있다 — 하나는 고객에게 제품을 판매하며 발생하는 매출 측면, 다른 하나는 판매된 제품의 재고자산이 비용으로 전환되는 매출원가 측면이다. 회계기준상 재고자산이 판매되면 관련 수익을 인식하는 기간에 그 재고자산의 장부금액을 비용으로 인식한다.
따라서 판매 시스템과 재고 시스템이 완전히 분리돼 있으면 매출은 기록됐는데 매출원가가 누락되거나, 출고수량과 회계상 원가수량이 달라지는 문제가 생긴다. 자동분개는 이 관계를 연결하는 데 의미가 있다.
’출고’와 ’매출’을 같은 버튼으로 볼지도 회사마다 다르다
일부 단순한 거래에서는 제품 출고와 매출확정이 사실상 같은 시점이다. 하지만 위탁판매·검수조건부 거래·반품조건·해외거래·납품 후 정산 등 거래조건에 따라 물류상 출고와 회계상 매출인식의 관계를 검토해야 할 수 있다. 그래서 ERP에서는 ’출고완료’라는 업무상태와 ’매출확정’이라는 회계 Event를 개념적으로 구분해두는 편이 안전하다. 두 Event가 항상 동시에 발생하는 회사라면 같은 Workflow에서 처리하면 된다. 중요한 건 시스템이 편하다는 이유로 회계정책을 결정해서는 안 된다는 것이다.
계정 매핑은 Event가 정해진 다음에 시작한다
업무 Event가 정리되면 그다음에 계정과목을 연결한다. 시스템 내부에서는 특정 계정코드보다 역할을 정의한다 — 원재료 재고·완제품 재고·매입채무·매출채권·제품매출·매출원가·부가세 관련 계정. 회사 A에서는 원재료 계정코드가 1310이고 회사 B는 다른 코드를 쓸 수 있다. 시스템이 1310이라는 숫자를 직접 기억하게 만들면 회사가 바뀌거나 계정체계가 변경될 때 프로그램을 수정해야 한다.
반면 RAW_MATERIAL_INVENTORY라는 회계 역할에 회사별 실제 계정을 매핑하도록 설계하면 같은 Transaction Logic을 여러 회사에서 쓸 수 있다. 이 방식은 멀티테넌트 ERP에서 특히 중요하다.
같은 매입이라고 대변계정이 항상 같은 것도 아니다
원재료를 외상으로 샀다면 매입채무가, 즉시 계좌이체했다면 현금성 자산의 변화가, 법인카드를 썼다면 카드대금 관련 채무가 연결된다. 그래서 자동분개 Rule에는 거래종류만이 아니라 필요에 따라 거래유형 · 결제조건 · 거래처 · 세금구분 · 사업장 · 부서 · 품목유형이 포함될 수 있다. 하지만 조건을 너무 많이 넣으면 Rule 자체를 관리하기 어려워진다. 자동분개 설계의 목표는 모든 예외를 코드로 만드는 게 아니라 반복적으로 발생하는 정상거래를 안정적으로 자동화하고 예외거래는 사람이 검토할 수 있게 분리하는 것이다.
자동분개의 진짜 위험은 사람이 아니라 Rule이 틀리는 것이다
수기분개에서는 담당자가 한 건을 잘못 입력한다. 자동분개에서는 잘못된 Rule 하나가 같은 오류를 수백 건 반복한다. 특정 포장재를 원재료 계정으로 잘못 매핑했다면 그 품목이 입고될 때마다 같은 오류가 나고, 세금구분 Rule이 잘못됐다면 특정 거래처의 거래가 계속 잘못 처리된다. 그래서 자동화 수준이 올라갈수록 초기 Rule 검증과 변경관리가 중요해진다. 자동분개는 사람의 판단을 없애는 기능이 아니라 판단이 필요한 지점을 거래마다 반복하지 않고 Rule을 설계하는 시점으로 앞당기는 기능에 가깝다.
Rule을 수정했다고 과거 분개까지 바뀌면 안 된다
제조 ERP에서 특히 중요하다. 9월 1일부터 특정 거래의 계정 매핑을 변경했다고 하자. 현재 Rule을 수정했다고 8월에 이미 확정된 분개의 계정까지 자동으로 바뀌면 회계이력이 훼손된다. 그래서 자동분개 Rule도 Version 또는 적용기간을 관리해야 한다.
8월 거래 → 당시 적용된 Rule 유지
9월 이후 → 새 Rule 적용
어떤 Rule이 어떤 거래에 적용됐는지 추적할 수 있어야 한다. 제품 Recipe Version을 과거 Batch에 보존하는 것과 같은 원리다.
자동 생성된 분개도 원본 Transaction으로 돌아갈 수 있어야 한다
회계담당자가 장부에서 매출원가 3,482,700원을 발견했다고 하자. 이 숫자가 자동으로 만들어졌다는 사실만으로는 부족하다. 왜 3,482,700원인지 확인할 수 있어야 한다. 그 분개를 열었을 때 판매 Transaction을 확인하고, 출고된 제품과 수량을 확인하고, 필요하면 완제품 LOT와 생산 Batch까지 내려갈 수 있다면 회계 숫자의 근거를 찾는다. 반대로 생산현장에서도 특정 Batch의 재료비와 완제품 원가가 어느 회계정보로 연결됐는지 확인할 수 있다. 이것이 ERP 통합의 차이다 — 회계가 제조와 별도의 세계에 존재하지 않는다.
자동분개보다 중요한 기능이 ’역추적’일 수도 있다
자동분개를 소개할 때 흔히 “회계담당자의 입력시간을 줄인다”를 강조한다. 중요한 효과지만, 제조업에서는 나중에 숫자의 근거를 찾는 시간이 더 큰 문제일 수 있다. 월말에 완제품 재고자산이 예상보다 크게 늘었다고 하자. 통합된 데이터라면 품목별 재고증가를 보고, 어떤 생산 Batch에서 증가했는지 확인하고, 그 Batch의 생산수량과 원가를 다시 볼 수 있다. 반대로 특정 원재료 계정이 급증했다면 어느 공급업체에서 어떤 LOT가 얼마에 입고됐는지 내려갈 수 있다. 자동분개의 가치는 입력을 없애는 것뿐 아니라 장부의 금액을 실제 업무 Transaction까지 되돌려 설명할 수 있게 하는 데 있다.
재고조정은 자동분개에서 특히 조심한다
실사 후 재고가 10kg 부족하다는 이유로 Inventory Adjustment가 발생했다고 하자. 재고수량은 감소하지만 그 10kg이 왜 감소했는지에 따라 경제적 의미가 달라진다 — 생산투입 누락인지, 정상 공정손실인지, 파손·폐기인지, 단순 장부오류인지. 그래서 재고조정 −10kg = 특정 비용계정처럼 모든 조정을 하나의 Rule로 보내는 건 위험하다. 재고조정 사유코드를 강조한 이유도 여기 있다. 자동분개 엔진은 수량만이 아니라 Transaction Type과 Reason Code를 함께 판단할 수 있어야 한다.
반품과 취소는 원래 거래를 삭제하는 방식으로 처리하지 않는다
제품 100개를 판매했는데 10개가 반품됐다고 하자. 가장 단순한 방법은 기존 판매수량을 100개에서 90개로 수정하는 것이지만, 그러면 처음에 100개가 출고됐고 그중 10개가 돌아왔다는 사실이 사라진다. 회계와 재고 모두 원거래와 반대방향의 Transaction을 남기는 구조가 더 적절하다. 원거래를 보존하고 반품·취소·역분개 같은 별도 거래를 연결하는 것이다. 이렇게 해야 누가 언제 어떤 이유로 거래를 되돌렸는지도 확인된다. 자동분개를 구현할수록 ’수정’보다 반대 Transaction을 어떻게 만들 것인가가 중요해진다.
마감 이후에는 자동화보다 통제가 우선이다
8월 원가와 회계가 모두 마감된 뒤 누군가 8월 15일 생산실적을 수정했다고 하자. 생산수량이 바뀌면 재고가 바뀌고 제조원가가 바뀌며 이미 확정된 회계장부와 차이가 생긴다. 그래서 기간마감 이후에는 과거 Transaction을 자유롭게 수정하지 못하도록 통제해야 한다. 수정이 꼭 필요하면 권한 · 사유 · 승인 · 수정이력 · 필요한 조정분개를 관리한다. 외부감사법상 내부회계관리제도 적용대상 회사에 관한 규정에서도 회계정보의 기록·오류수정·점검·조정과 장부의 위변조 방지 통제가 중요하게 다뤄진다. 모든 중소기업이 동일한 법적 의무를 가진다는 뜻은 아니지만, ERP 설계원칙으로는 참고할 가치가 있다.
자동분개를 도입하면 회계담당자의 일이 없어지나
없어지지 않는다. 업무의 성격이 달라진다. 반복적인 정상거래를 사람이 하나씩 입력하는 일은 줄지만, 대신 담당자는 예외거래 · 계정 매핑 · 마감 · 조정 · 대사 · Rule 변경을 검토한다. ERP가 한 달에 10,000건의 정상적인 재고·판매 Transaction을 자동 처리했다면 담당자가 10,000건을 다시 입력할 필요는 없다. 하지만 자동분개 결과의 총액이 재고 Subledger와 일치하는지, 예외처리된 거래는 없는지, 비정상 계정이 쓰이지 않았는지는 확인해야 한다. 자동화 이후 회계의 역할은 입력에서 통제와 검증 쪽으로 이동한다.
월말에는 세 숫자가 서로 설명되어야 한다
자동분개가 제대로 작동하는지는 화면에 ’자동분개 완료’라고 뜨는 것으로 판단하기 어렵다. 월말에 최소한 서로 다른 영역의 숫자가 연결되는지 확인해야 한다 — 창고가 가진 재고수량·금액, 생산에서 집계된 제조원가, 회계장부에 기록된 재고자산·매출원가. 완전히 동일한 화면이나 동일한 시점의 숫자라는 뜻은 아니다(마감·원가확정 시점 차이가 있다). 중요한 건 차이가 있다면 왜 있는지 설명하고 대사할 수 있어야 한다는 것이다. 이게 안 되면 자동분개 건수가 아무리 많아도 제조와 회계가 제대로 통합됐다고 보기 어렵다.
자동분개의 완성은 분개 버튼이 사라지는 게 아니다
제조 ERP를 직접 설계하면서 자동분개를 단순히 ’분개를 대신 입력해주는 기능’으로 보면 한계가 분명했다. 생산현장에는 이미 회계의 원본이 되는 사건들이 발생하고 있다 — 원재료가 입고됐고, 실제로 생산에 투입됐고, 완제품이 만들어졌고, 제품이 출고됐다. 회계가 필요한 건 그 사건을 또 한 번 사람이 입력하는 게 아니라 검증된 현업 Transaction을 회사의 회계정책에 맞는 금액과 계정으로 해석하는 과정이다.
그래서 자동분개의 품질은 자동화율보다 다른 질문으로 평가하는 편이 낫다. 장부에서 1억원이라는 숫자를 발견했을 때 그 1억원을 만든 실제 거래를 다시 찾을 수 있는가. 그리고 실제 거래에서 출발했을 때 그 결과가 어느 회계정보에 반영됐는지 확인할 수 있는가. 두 방향이 모두 연결되면 자동분개는 단순 입력자동화를 넘어 제조 데이터와 회계 데이터를 연결하는 장치가 된다.
참고 — 매출·매입 인식시점, 재고자산 평가, 내부회계관리 통제 요건은 회사 규모·거래조건·관련 법령에 따라 다르다. 실제 회계·세무 적용은 전문가 확인이 필요하다.
제조원가 계산 완전정복 — 재료비·노무비·제조경비를 실제 생산데이터로 계산하는 법
원가 · 회계3분 만에 확인최종 검증:
개정 이력
· 발행
· 개정
여기 담긴 규정·수치는 최소 6개월마다 위 공식 출처와 대조해 재확인합니다. 실질적 변경(요건·기준·수치)은 조용히 덮어쓰지 않고 개정 이력에 남깁니다.
이 글은 일반적인 실무 정보이며 법률·세무·행정 자문이 아닙니다. 규정·수치는 관할과 시점에 따라 달라지므로, 실제 판단 전 위 공식 출처와 관할 기관에서 최신 기준을 확인하시기 바랍니다.
