거래내역 조회 자동화

가계부부터 회계까지, API로 금융 데이터를 자동화하는 방법

목차

1. 왜 거래내역 자동화인가?

매일 은행 앱을 열어 거래내역을 확인하고, 엑셀에 수기로 입력하는 일은 번거롭고 실수하기 쉽습니다. 거래내역 API를 활용하면 이 과정을 완전히 자동화할 수 있습니다.

수동 관리의 문제점

  • 시간 소모: 매일 또는 매주 반복되는 수작업
  • 입력 오류: 금액, 날짜, 분류 실수
  • 누락: 소액 거래나 자동이체 빠뜨림
  • 지연: 실시간 파악 불가

자동화의 장점

  • 정확성: 은행 데이터 그대로 가져오므로 오류 없음
  • 실시간: 원하는 주기로 자동 업데이트
  • 통합: 여러 은행 계좌를 한 곳에서 관리
  • 분석: 축적된 데이터로 패턴 분석 가능

2. 활용 사례: 개인 가계부 자동화

가장 일반적인 활용 사례입니다. 은행 거래내역을 자동으로 가져와서 카테고리별로 분류하고, 월별 지출 리포트를 생성합니다.

자동화 흐름

1. 매일 자정에 Bank API 호출 (전일 거래내역)
2. 거래 내용(description)을 기반으로 카테고리 자동 분류
   - "스타벅스" → 카페/음료
   - "쿠팡" → 온라인쇼핑
   - "지하철" → 교통
3. 구글 스프레드시트 또는 Notion DB에 자동 저장
4. 월말에 카테고리별 지출 합계 리포트 생성

기대 효과

  • 월 평균 2-3시간의 가계부 작성 시간 절약
  • 지출 패턴 파악으로 10-20% 지출 절감 가능
  • 불필요한 정기 결제 발견

3. 활용 사례: 소규모 사업자 회계

프리랜서, 1인 사업자, 소규모 법인의 경우 사업용 계좌의 입출금 내역을 자동으로 회계 시스템에 연동할 수 있습니다.

자동화 흐름

1. 사업용 계좌 거래내역 자동 수집
2. 입금: 매출로 자동 분류
   - 거래처명 매칭으로 세금계산서와 연결
3. 출금: 비용 항목으로 자동 분류
   - "AWS" → 서버비용
   - "Google" → 광고비
   - "배달의민족" → 복리후생비
4. 회계 프로그램(엑셀, 더존 등)에 자동 입력

기대 효과

  • 세무사 비용 절감 (기장 자료 자동 생성)
  • 부가세 신고 시 매입/매출 자동 정리
  • 실시간 손익 파악

4. 활용 사례: 구독 결제 추적

넷플릭스, 유튜브 프리미엄, 각종 SaaS... 어느새 늘어난 구독 서비스를 자동으로 추적하고 관리합니다.

자동화 흐름

1. 거래내역에서 정기 결제 패턴 감지
   - 매월 같은 날짜, 같은 금액, 같은 가맹점
2. 구독 서비스 목록 자동 생성
3. 월별 구독료 합계 계산
4. 3개월 이상 미사용 구독 알림

구독 감지 로직 예시

// 정기 결제 패턴 감지
function detectSubscriptions(transactions) {
  const patterns = {};

  transactions.forEach(tx => {
    const key = `${tx.description}_${tx.amount}`;
    if (!patterns[key]) {
      patterns[key] = [];
    }
    patterns[key].push(tx.date);
  });

  // 3개월 연속 같은 패턴이면 구독으로 판단
  return Object.entries(patterns)
    .filter(([key, dates]) => dates.length >= 3)
    .map(([key, dates]) => {
      const [description, amount] = key.split('_');
      return { description, amount: Number(amount), dates };
    });
}

5. 실제 구현 예제

Google Apps Script를 활용하면 무료로 간단한 자동화를 구현할 수 있습니다.

Google Apps Script 예제

function fetchTransactions() {
  const API_KEY = 'pk_live_xxx';
  const SECRET_KEY = 'sk_client_xxx';

  const today = new Date();
  const yesterday = new Date(today);
  yesterday.setDate(yesterday.getDate() - 1);

  const formatDate = (d) => {
    return d.toISOString().slice(0, 10).replace(/-/g, '');
  };

  const response = UrlFetchApp.fetch(
    'https://api-7mpyj62y4a-du.a.run.app/api/v1/transactions',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${API_KEY}:${SECRET_KEY}`
      },
      payload: JSON.stringify({
        bankCode: 'NH',
        accountNumber: '1234567890',
        accountPassword: '1234',
        residentNumber: '830517',
        startDate: formatDate(yesterday),
        endDate: formatDate(yesterday)
      })
    }
  );

  const data = JSON.parse(response.getContentText());

  if (data.success) {
    const sheet = SpreadsheetApp.getActiveSheet();
    data.data.transactions.forEach(tx => {
      sheet.appendRow([
        tx.date,
        tx.type,
        tx.amount,
        tx.description,
        categorize(tx.description)  // 자동 분류
      ]);
    });
  }
}

function categorize(description) {
  const categories = {
    '스타벅스|투썸|카페': '카페/음료',
    '쿠팡|네이버페이|배민': '온라인쇼핑',
    '지하철|버스|택시': '교통',
    'SKT|KT|LG유플러스': '통신',
    'Netflix|유튜브|Spotify': '구독서비스'
  };

  for (const [pattern, category] of Object.entries(categories)) {
    if (new RegExp(pattern, 'i').test(description)) {
      return category;
    }
  }
  return '기타';
}

// 매일 자정에 실행되도록 트리거 설정
function createTrigger() {
  ScriptApp.newTrigger('fetchTransactions')
    .timeBased()
    .everyDays(1)
    .atHour(0)
    .create();
}

6. 자동화 구축 팁

에러 처리

  • 네트워크 오류 시 재시도 로직 구현
  • 은행 점검 시간(보통 새벽 00:00~00:30) 피하기
  • 실패 시 이메일/슬랙 알림 설정

데이터 보안

  • API Key는 환경 변수로 관리
  • 저장되는 거래내역 암호화
  • 접근 권한 최소화

성능 최적화

  • 중복 조회 방지 (마지막 조회 날짜 저장)
  • 배치 처리로 Rate Limit 관리
  • 필요한 기간만 조회 (최대 3개월 권장)
팁: 처음에는 간단하게 시작하세요. 기본적인 거래내역 수집부터 시작해서, 점차 분류와 리포트 기능을 추가하면 됩니다.

마치며

거래내역 자동화는 시간 절약뿐 아니라, 본인의 재무 상태를 정확하게 파악하는 데 큰 도움이 됩니다. Bank API를 활용하면 복잡한 은행 연동 없이도 쉽게 자동화 시스템을 구축할 수 있습니다.

무료 플랜으로 시작해서 자신만의 자동화 시스템을 만들어보세요. 자세한 API 사용법은 API 문서를 참고하시기 바랍니다.

관련 글