발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 084

Stripe 결제 이벤트 → 회계 장부 자동 기록

  • ▸Stripe 결제/환불 이벤트를 실시간으로 수신
  • ▸거래 데이터를 Google Sheets 회계 장부에 자동 기록
  • ▸월별 매출 합산 및 재무팀 자동 보고

✅사전 준비

  • □Stripe 웹훅 엔드포인트 등록 (Stripe Dashboard → Developers → Webhooks)
  • □수신할 이벤트 선택: payment_intent.succeeded, charge.refunded, customer.subscription.created
  • □Google Sheets 회계 장부 시트 생성 (컬럼: 날짜, 거래ID, 유형, 금액, 고객, 상태)
  • □Stripe 웹훅 서명 시크릿 저장

Stripe 웹훅 수신 및 서명 검증

Node: Webhook
Path: /stripe-webhook
Method: POST

// Stripe-Signature 헤더 검증 (Code 노드)
const signature = $json.headers['stripe-signature'];
const payload = $json.rawBody;
// HMAC-SHA256 서명 검증 로직
// 실제 구현 시 Stripe 공식 SDK 사용 권장

// 이벤트 타입 분기 (Switch 노드)
Node: Switch
Value: {{ $json.body.type }}
Case 'payment_intent.succeeded': 수입 기록
Case 'charge.refunded': 환불 기록
Case 'customer.subscription.created': 구독 기록

Google Sheets 회계 기록

Node: Google Sheets (Append Row)
Spreadsheet: 회계 장부
Sheet: {{ $now.toFormat('yyyy년 MM월') }}

값 매핑:
날짜: {{ $now.toFormat('yyyy-MM-dd HH:mm') }}
거래ID: {{ $json.body.data.object.id }}
유형: {{ $json.body.type === 'charge.refunded' ? '환불' : '수입' }}
금액(원): {{ Math.round($json.body.data.object.amount / 100) }}
고객이메일: {{ $json.body.data.object.receipt_email }}
상태: 완료
⚠️ 주의Stripe 결제 금액은 최소 통화 단위(원화의 경우 원, USD의 경우 센트)로 전달됩니다. USD라면 100으로 나눠야 달러 금액이 되지만, KRW는 이미 원 단위이므로 나누지 않아야 합니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe084",
  "title": "카카오 알림톡 대량 발송 자동화",
  "chapter": 8,
  "category": "국내 서비스 특화 레시피",
  "difficulty": "⭐⭐⭐",
  "estimatedTime": "60분",
  "usedApps": [
    "카카오비즈니스 API",
    "Google Sheets"
  ],
  "description": "Google Sheets에 수신자 목록(이름·전화번호·발송 내용 변수)을 준비하면, n8n이 Loop Over Items 노드로 각 행마다 카카오 알림톡을 개별 발송하고, 발송 결과(성공·실패)를 시트에 자동 기록합니다.",
  "apiGuide": {
    "platform": "카카오비즈니스",
    "issueUrl": "business.kakao.com",
    "note": "알림톡은 유료 서비스입니다. 건당 약 8~15원 수준.",
    "steps": [
      "카카오비즈니스 접속 → 알림톡 채널 개설",
      "알림톡 템플릿 등록 및 심사 완료",
      "API 키 발급",
      "발신 프로필 키 확인"
    ]
  },
  "nodes": [
    {
      "id": "node1",
      "type": "n8n-nodes-base.googleSheets",
      "name": "수신자 목록 조회",
      "parameters": {
        "operation": "getAll",
        "spreadsheetId": "={{$env.KAKAO_RECIPIENT_SHEET_ID}}",
        "sheetName": "발송대상",
        "filters": {
          "conditions": [
            {
              "column": "발송상태",
              "condition": "equals",
              "value": "대기"
            }
          ]
        }
      }
    },
    {
      "id": "node2",
      "type": "n8n-nodes-base.splitInBatches",
      "name": "개별 발송 처리",
      "parameters": {
        "batchSize": 1
      }
    },
    {
      "id": "node3",
      "type": "n8n-nodes-base.httpRequest",
      "name": "카카오 알림톡 발송",
      "parameters": {
        "method": "POST",
        "url": "https://kapi.kakao.com/v1/api/talk/friends/message/default/send",
        "headers": {
          "Authorization": "Bearer {{$env.KAKAO_ACCESS_TOKEN}}",
          "Content-Type": "application/x-www-form-urlencoded"
        },
        "body": {
          "receiver_uuids": "[\"{{$json['카카오UUID']}}\"]",
          "template_object": "{\"object_type\":\"text\",\"text\":\"{{$json['발송내용']}}\",\"link\":{\"web_url\":\"{{$env.KAKAO_LANDING_URL}}\"}}"
        }
      }
    },
    {
      "id": "node4",
      "type": "n8n-nodes-base.googleSheets",
      "name": "발송 결과 시트 기록",
      "parameters": {
        "operation": "update",
        "spreadsheetId": "={{$env.KAKAO_RECIPIENT_SHEET_ID}}",
        "sheetName": "발송대상",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "발송상태": "={{$json['result_code'] === 0 ? '발송완료' : '발송실패'}}",
            "발송일시": "={{$now.format('YYYY-MM-DD HH:mm:ss')}}"
          }
        }
      }
    }
  ],
  "envVariables": {
    "KAKAO_RECIPIENT_SHEET_ID": "Google Sheets 수신자 목록 시트 ID",
    "KAKAO_ACCESS_TOKEN": "카카오비즈니스 API Access Token",
    "KAKAO_LANDING_URL": "알림톡 랜딩 URL"
  },
  "tips": [
    "카카오 알림톡은 사전 승인된 템플릿만 발송 가능합니다. 템플릿 심사에 2~5 영업일이 소요되니 미리 신청해두세요.",
    "대량 발송 시 API 호출 제한(Rate Limit)에 걸릴 수 있어요. Wait 노드를 배치 사이에 추가해 발송 속도를 조절하세요.",
    "레시피 088(토스페이먼츠 결제 완료 처리)과 연결하면 결제 완료 즉시 카카오 알림톡으로 주문 확인 메시지를 자동 발송할 수 있어요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe084"
}
← 이전 레시피☰ 목차다음 레시피 →