🍀 최근에 SaaS 서비스를 제공하는 AI 관련 직무 면접을 보고 왔는데, 해당 직무에서 이용자의 비용 지불 관련해서 Stripe로 확인하고, 해당 서비스의 매출을 관리한다고 하셔서 이에 대해서 다뤄보려고 한다.

Stripe, Inc.는 아일랜드·미국계 핀테크 / SaaS 기업으로, 온라인 결제 처리 소프트웨어 및 API를 제공한다.
Stripe는 단순한 결제 게이트웨이를 넘어, Payments, Billing, Connect, 세금 자동화, 분석 및 리포팅 등 다양한 기능을 제공하는 종합 금융 인프라 플랫폼으로 확장하고 있다.
SaaS (Software as a Service)
설치형 소프트웨어가 아니라, 클라우드에서 제공되고 사용자가 구독 형태로 이용하는 소프트웨어 모델을 말한다.
Stripe는 단일한 결제 솔루션이 아니라, 여러 모듈을 조합해 금융 인프라 블록을 제공한다.
| 제품/기능 | 역할 | 특징 |
|---|---|---|
| Payments | 온라인/오프라인 결제 처리 | 카드, 은행 이체, 간편결제 등 다양한 결제 방식 지원 |
| Billing | 정기 과금 / 구독 관리 | 요금제, 청구서, 무료 체험, 할인 코드 등 제공 |
| Connect | 플랫폼/마켓플레이스 정산 | 판매자/공급자에게 분배 지급, KYC 지원 |
| Entitlements | 기능 권한 관리 | 요금제 상태에 따라 기능 자동 활성화/비활성화 |
| Dashboard | 운영 및 분석 도구 | 거래 내역, 고객 관리, API 로그 등 |
| Elements | 결제 UI 구성 요소 | 카드 입력, 지갑 연동 등 현지화된 UI 제공 |
| Release Phases | 기능 단계적 배포 | Private Preview → Public Preview → 일반 배포 |
고객이 웹/앱에서 결제 요청을 한다.
Stripe Elements(결제 UI 컴포넌트)를 통해 카드 정보가 입력된다.
토큰화(Tokenization)
민감한 카드 번호를 직접 저장하지 않고, 임의의 토큰으로 치환하여 보안을 강화하는 기술이다.
Stripe는 카드사/은행에 결제 요청을 전달한다.
승인/거절 결과를 다시 사용자에게 반환한다.
Stripe는 일정 주기마다 판매자 계좌로 정산을 송금한다.
Webhook : 결제 성공, 구독 갱신, 취소와 같은 이벤트가 발생하면 Stripe가 서버에 알림을 보낸다.
API 로그 : 개발자 대시보드에서 요청 및 응답 내역을 확인할 수 있다.
Release Phases : 기능을 단계적으로 도입하여 안정성을 높인다.
Stripe는 개발자 친화적 플랫폼으로 유명하다.
Stripe는 API를 통해 동작합니다.
API(Application Programming Interface)
프로그램끼리 소통할 수 있도록 제공되는 규칙(명령어 세트)
Stripe는 /v1, /v2처럼 버전을 나눠서 API를 운영한다.
새로운 기능이 추가되거나 개선될 때는 버전이 바뀌는데, 개발자는 헤더(Stripe-Version)라는 설정을 통해 어떤 버전을 쓸지 선택할 수 있다.
ex)
개발자가 바로 실제 결제(실제 돈이 오가는 환경)에서 코드를 실행하면 위험하기에 Stripe는 테스트 모드(Sandbox)를 제공한다. 즉, Sandbox는 가상의 결제 환경인 것이다.
실제 카드사에 요청하지 않고, “가짜 카드 번호” 등을 사용해서 코드가 제대로 작동하는지 확인할 수 있다.
덕분에 개발자는 안전하게 검증하고, 문제가 없을 때만 실제 운영 환경으로 배포할 수 있다.
Stripe는 결제 화면(UI)까지 미리 만들어둔다.
예를 들어 “카드 번호 입력 폼”이나 “Apple Pay 버튼”을 직접 코딩하지 않아도 된다. 즉, Stripe가 제공하는 Elements를 가져다 쓰면, 바로 결제 화면이 완성되는 것이다.
이 안에는 보안 처리, 오류 메시지, 다국어 지원까지 포함되어 있다. 즉, “카드 입력 폼” 같은 걸 다시 만들 필요 없이, Stripe에서 제공하는 블록(컴포넌트)을 조립만 하면 구조이다.
Stripe는 여러 언어/환경에서 쓸 수 있도록 SDK를 제공한다.
SDK(Software Development Kit)
개발자가 특정 기능을 쉽게 사용할 수 있도록 제공되는 도구 모음(코드 + 라이브러리)
Node.js, Python, Java, Go : 서버 쪽 언어에서 Stripe API를 쉽게 호출 가능
iOS, Android : 모바일 앱에서 Stripe 결제 버튼, 카드 등록 기능 등을 바로 구현 가능
즉, Stripe를 쓰면 언어별 맞춤 도구가 제공되기 때문에, 개발자는 복잡한 통신 코드를 직접 짤 필요가 없다.
Webhook은 Stripe 같은 서비스에서 “특정 사건(이벤트)이 일어나면, 미리 약속한 주소(서버 URL)로 자동으로 알림을 보내는 방식”이다.
즉, Webhook은 서버 버전의 푸시 알림이라고 생각하면 된다.
고객이 Stripe를 통해 결제를 한다.
Stripe가 이 결제가 성공했는지 실패했는지 결과를 확인한다.
Stripe는 미리 등록해둔 회사 서버의 Webhook URL로 “이 결제가 성공했습니다”라는 메시지를 보낸다.
회사 서버는 이 메시지를 받아서, 내부적으로 처리한다.
ex)
즉, Stripe는 단순히 결제만 해주는 게 아니라, Webhook을 통해 기업의 서비스 운영과 바로 연결된다.
Stripe가 알림을 보내주기 때문에, 기업은 “새로 갱신된 구독 상태”나 “결제 성공 여부”를 수동으로 확인하지 않아도 된다.
따라서, 해당 기능 덕분에 실시간으로 비즈니스 로직(서비스 권한, 환불, 알림 발송 등)을 자동화할 수 있다.
사용량 기반 과금, 좌석 단위 과금, 혼합형 과금 등 다양한 요금제 지원
프로레이트 계산, 카드 만료 자동 갱신, 무료 체험 및 쿠폰 적용 가능
고객 포털을 통해 사용자가 직접 구독 관리 가능
Stripe의 Product/Price와 서비스 내부 기능을 연결
ex) Basic 요금제에는 A, B 기능만 제공하고, Pro 요금제에는 A~D 기능 제공
구독이 만료되면 자동으로 기능이 비활성화
Stripe 대시보드는 운영자와 개발자 모두에게 중요한 도구이다.
Analytics : 매출, 거래량, 주요 알림 확인
거래 내역 관리 : 환불, 정산 내역, 고객별 결제 이력 확인
고객 관리 : 고객 프로필, 결제 수단, 구독 상태 관리
정산 관리 : 송금 일정, 금액, 진행 상태 추적
모바일 앱 지원 : 언제 어디서나 매출 및 거래 내역 확인 가능
개발자 전용 Workbench에서는 API 로그, Webhook 이벤트, 실패 원인 등을 심층적으로 분석할 수 있다.
Stripe가 널리 사용되는 이유 중 하나는 보안과 규제 대응 능력이다.
PCI DSS 인증을 Stripe가 직접 관리하여 기업이 카드 정보를 저장하지 않아도 된다.
PCI DSS (Payment Card Industry Data Security Standard)
국제 결제 보안 표준으로, 카드 결제를 처리하는 모든 시스템이 따라야 하는 규칙
SCA(Strong Customer Authentication) 같은 규제 요구사항을 자동 처리할 수 있다.
SCA(Strong Customer Authentication)
강력한 고객 인증으로, 온라인 결제를 할 때, 사용자가 정말 본인인지 확인하기 위해 추가적인 인증 절차를 요구하는 보안 규칙
글로벌 결제 수단 지원 : 알리페이, 애플페이, 구글페이, 현지 QR 결제 등 다국가 확장성 보장
AML/KYC를 지원하여 자금세탁방지 및 고객신원확인 규제도 충족한다.
AML (Anti-Money Laundering)
자금세탁방지라는 뜻으로, 범죄나 불법 행위로 얻은 돈을 합법적인 자금처럼 보이게 숨기거나 세탁하는 것을 막기 위한 규제
KYC (Know Your Customer)
고객신원확인이라는 뜻으로, 금융 서비스를 제공할 때, 고객이 누구인지 신원을 확인하는 절차
단, Stripe를 현업에 도입할 시에는 다음과 같은 사항들을 고려해야 한다.
비용 구조 : 거래 수수료, 해외 결제 수수료, 환전 수수료 등을 감안해야 한다.
요구 기능 : 단순 결제인지, 구독형 서비스인지, 혹은 마켓플레이스형인지에 따라 적합성이 달라진다.
벤더 락인 : Stripe에 과도하게 의존할 경우 다른 시스템으로의 전환이 어렵다.
벤더 락인(Vendor Lock-in)
특정 업체의 서비스나 기술에 의존하여, 다른 대체 서비스로 전환하기 어려워지는 상황
국제 확장성 : 지원 국가와 결제 수단 확인 필요하다.
보안/규제 준수 : 내부 보안 정책과 Stripe의 보안 모델을 조율해야 한다.
테스트와 안정성 확보 : 샌드박스 환경과 Webhook 이벤트를 충분히 검증해야 한다.
Stripe와 같은 SaaS 기반 결제 시스템은 단순한 결제 게이트웨이를 넘어 종합 금융 플랫폼으로 발전하고 있다.
기업은 이를 통해
빠르게 결제 기능을 구축하고,
구독/정기 과금, 기능 권한 제어, 운영 도구까지 통합 관리하며,
글로벌 확장성을 확보할 수 있다.
다만, 비용 구조, 락인 리스크, 기능 적합성 등은 사전에 충분히 검토해야 한다.
앞으로 결제 시스템은 AI 기반 리스크 탐지, 실시간 최적화, 디지털 자산 결제 등으로 확장될 전망이다.
💭 My thoughts
이번 면접에서 처음으로 Stripe와 SaaS 기반 결제 시스템을 알게 되었다.
사실 그 전까지는 결제라는 것이 “카드사와 은행이 알아서 처리해주는 것” 정도로만 생각했는데, Stripe처럼 이를 클라우드 서비스 형태로 제공하는 플랫폼이 있다는 점이 무척 인상적이었다.
특히 흥미로웠던 점은 다음과 같다.
1. 결제 인프라를 직접 구축하지 않아도 된다는 효율성
→ 작은 스타트업도 Stripe API 몇 줄만 붙이면 글로벌 결제 서비스를 시작할 수 있다는 점에서, 진입 장벽을 크게 낮춰주는 기술이라고 생각한다.
2. 단순 결제가 아닌 금융 인프라로의 확장성
→ Stripe는 결제뿐 아니라 구독 관리, 정산, 세금 자동화까지 지원한다. 이는 단순히 “돈을 받는 기능”을 넘어서, 서비스 운영 전반을 뒷받침하는 핵심 인프라라는 느낌을 받았다.
3. 보안·규제 대응의 내재화
→ PCI DSS, SCA, AML/KYC 같은 보안·규제 요소들은 기업 입장에서 큰 부담일 수 있는데, Stripe가 이를 대신 해결해 준다는 점에서 “안심할 수 있는 구조”라는 생각이 들었다.
이번 경험을 통해 결제 시스템이 단순한 기능이 아니라, 서비스 확장성과 신뢰성을 결정짓는 중요한 요소라는 사실을 깨달았다. 만약 내가 앞으로 데이터 분석이나 서비스 기획을 맡게 된다면, Stripe 같은 인프라 서비스를 단순히 “기술”로 보는 것을 넘어, 비즈니스 모델을 빠르게 실행할 수 있게 하는 전략적 자원으로 바라봐야겠다고 느꼈다.