메인 콘텐츠로 건너뛰기
거래 데이터를 인보이스 시스템(Stripe, QuickBooks, Xero 등)으로 자동으로 전송합니다. 기회가 성사되었을 때.

워크플로우 구조

  1. 트리거: 레코드가 업데이트됨(기회)
  2. 필터: Stage = Closed Won
  3. 레코드 검색: 회사 세부정보 가져오기
  4. 코드(선택): 페이로드 형식 지정
  5. HTTP 요청: 인보이스 시스템으로 전송

단계 1: 트리거 설정

  1. 새 워크플로우 만들기
  2. 레코드가 업데이트됨 트리거 선택
  3. 객체로 기회(Opportunity) 선택

단계 2: Closed Won 필터링

거래가 성사된 경우에만 계속되도록 필터 작업을 추가합니다:
설정
필드단계
조건같음
CLOSED_WON (또는 사용 중인 스테이지 이름)
트리거는 모든 기회 업데이트에서 실행됩니다. 필터는 스테이지가 Closed Won으로 변경될 때만 워크플로우가 계속 진행되도록 보장합니다.

단계 3: 회사 세부정보 가져오기

기회 레코드에는 인보이스에 필요한 모든 회사 필드가 포함되지 않을 수 있습니다. 레코드 검색 작업을 추가합니다:
설정
객체회사
일치 기준ID가 {{trigger.object.companyId}}와 같음
청구지 주소, 세금 ID 등과 함께 전체 회사 레코드를 가져옵니다.

단계 4: 페이로드 형식 지정(선택)

인보이스 시스템에서 특정 형식이 필요한 경우 코드 작업을 추가합니다:
export const main = async (params: {
  opportunity: any;
  company: any;
}): Promise<object> => {
  const { opportunity, company } = params;

  return {
    invoice: {
      // Customer info from Company
      customer_name: company.name,
      customer_email: company.email || "",
      billing_address: {
        line1: company.address?.street || "",
        city: company.address?.city || "",
        postal_code: company.address?.postalCode || "",
        country: company.address?.country || ""
      },
      tax_id: company.taxId || null,

      // Invoice details from Opportunity
      amount: opportunity.amount,
      currency: opportunity.currency || "USD",
      description: `Invoice for ${opportunity.name}`,
      due_days: 30,

      // Reference back to Twenty
      metadata: {
        opportunity_id: opportunity.id,
        company_id: company.id
      }
    }
  };
};

단계 5: 인보이스 시스템으로 전송

HTTP 요청 작업을 추가합니다:
설정
방법POST
URL인보이스 API 엔드포인트
헤더Authorization: Bearer YOUR_API_KEY
본문{{code.invoice}} 또는 필드를 직접 매핑

예시: Stripe 인보이스

POST https://api.stripe.com/v1/invoices
Headers:
  Authorization: Bearer sk_live_xxx
  Content-Type: application/x-www-form-urlencoded

Body:
  customer: {{company.stripeCustomerId}}
  collection_method: send_invoice
  days_until_due: 30

예시: QuickBooks 인보이스

POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
Headers:
  Authorization: Bearer YOUR_ACCESS_TOKEN
  Content-Type: application/json

Body: {{code.invoice}}

전체 워크플로우 요약

단계작업목적
1트리거: 레코드 업데이트됨어떤 기회가 변경되면 실행
2필터Stage = Closed Won인 경우에만 진행
3레코드 검색청구를 위한 전체 회사 세부정보 가져오기
4코드인보이스 API용 데이터 형식 지정
5HTTP 요청외부 시스템에서 인보이스 생성

  • 외부 ID 저장: 레코드 업데이트 작업을 사용하여 API가 반환한 인보이스 ID를 기회에 다시 저장합니다
  • 오류 처리: HTTP 요청이 실패하면 알림을 보내는 분기 추가
  • 먼저 테스트: 실제 운영 전에 인보이스 시스템의 샌드박스/테스트 모드를 사용하세요

관련 항목