토스 인증
토스 인증 서비스를 사용하기 위한 계약 방법을 안내해요.
방화벽 설정
요청 서버의 아웃바운드(Outbound) 설정에 아래 토스인증 IP를 허용해 주세요. 모든 통신은 443 포트(HTTPS) 를 사용해요.
토스 인증 서버는 인바운드(Inbound) 가 제한 없이 오픈되어 있어, 별도 설정 없이 바로 통신할 수 있어요.
1. AccessToken 받기
토스 본인확인을 위한 Access Token을 발급받아요. 발급된 토큰은 이후 모든 API 호출의 Authorization 헤더에 사용돼요.
토큰에는 만료 시간(expires_in) 이 있어요. 만료 시 새 토큰을 발급해야 하고, 유효한 토큰이 있으면 재발급을 피해서 불필요한 호출을 줄여 주세요.
Base URL:
https://oauth2.cert.toss.imEndpoint:
/tokenMethod:
POSTContent-Type:
application/x-www-form-urlencoded
요청 헤더
Content-Type
string
Y
application/x-www-form-urlencoded
요청 파라미터
grant_type
string
Y
고정 값: client_credentials
scope
string
Y
인증 요청 범위 (예: ca)
client_id
string
Y
고객사에 발급된 클라이언트 아이디
client_secret
string
Y
고객사에 발급된 클라이언트 시크릿
응답
access_token
string
Access Token 값
scope
string
발급된 인증 범위
token_type
string
토큰 타입 (항상 Bearer)
expires_in
number
토큰 만료 시간(초 단위)
2. 인증 요청하기
토스 인증 서버에서 txId를 발급받아 본인확인 절차를 시작해요.
BaseURL :
https://cert.toss.imEndpoint :
/api/v2/sign/user/auth/requestMethod :
POSTContent-type :
application/json
2-1. 개인정보 기반 인증
고객의 이름·생년월일·전화번호 를 암호화 후 전송하는 방식이에요. 보안을 위해 세션키(sessionKey)는 매 요청마다 새로 생성해 주세요.
요청 헤더
Authorization
string
Y
Bearer {Access Token}
Content-Type
string
Y
application/json
요청 파라미터
요청 예시
응답 예시
성공 응답
resultType
string
요청 결과 (성공 : SUCCESS, 실패 : FAIL)
success.txId
string
인증 요청 트랜잭션 아이디로 거래를 고유할 수 있는 값. 특정 거래를 고유할 수 있는 값이므로 반드시 저장 관리해야 해요.
success.requestedDt
string
최초 요청 시각(YYYY-MM-DDThh:mm:ss±hh:mm)
success.appScheme
string
토스 인증 화면을 띄울 수 있는 앱 스킴 정보
success.androidAppUri
string
안드로이드 인증 앱 스킴 값으로 appScheme과 같은 역할을 하지만, Chrome Intent를 사용하기 때문에 고객사의 추가 기능 구현 없이 토스 앱 설치 유무를 판별할 수 있는 장점이 있어요.
success.iosAppUri
string
iOS 인증 앱 스킴 값으로 appScheme과 같은 역할을 하지만, Universal Link를 사용하기 때문에 안드로이드와 마찬가지로 고객사의 추가 기능 구현 없이 토스 앱 설치 유무를 판별할 수 있는 장점이 있어요.
실패 응답
resultType
string
실패 시 FAIL
error.errorType
number
에러 유형
error.errorCode
string
에러 코드(예: CE1000)
error.reason
string
에러 메시지
error.data
object
부가 데이터(있을 경우)
error.title
string | null
에러 제목(있을 경우)
2-2. 원터치 인증
클라이언트에서 개인정보 입력 없이 토스앱을 호출해 한 번에 인증을 완료해요.
요청 헤더
Authorization
string
Y
Bearer {Access Token}
Content-Type
string
Y
application/json
요청 파라미터
requestType
string
Y
"USER_NONE"
requestUrl
string
Y
인증 완료 후 돌아올 앱스킴
요청 예시
응답 예시
성공 응답
resultType
string
요청 결과 (성공 : SUCCESS, 실패 : FAIL)
success.txId
string
인증 요청 트랜잭션 아이디로 거래를 고유할 수 있는 값. 특정 거래를 고유할 수 있는 값이므로 반드시 저장 관리해야 해요.
success.requestedDt
string
최초 요청 시각(YYYY-MM-DDThh:mm:ss±hh:mm)
실패 응답
resultType
string
실패 시 FAIL
error.errorType
number
에러 유형
error.errorCode
string
에러 코드(예: CE1000)
error.reason
string
에러 메시지
error.data
object
부가 데이터(있을 경우)
error.title
string | null
에러 제목(있을 경우)
3. 인증 화면 호출하기
본인확인 요청 API 응답에서 받은 txId를 포함해 appsInTossSignTossCert를 호출하면 토스앱 인증 화면이 실행돼요.
응답
onSuccess파라미터 없음
onErrorError { code: string; message: string }(예: 사용자 취소, 앱 미설치, 스킴 실패 등)
4. 본인확인 상태 조회하기
사용자의 현재 인증 진행 상태를 조회해요. txId를 사용해 현재의 인증 단계 (REQUESTED, IN_PROGRESS, COMPLETED, EXPIRED)를 확인할 수 있어요.
BaseURL :
https://cert.toss.imEndpoint :
/api/v2/sign/user/auth/id/statusMethod :
POSTContent-type :
application/json
요청 헤더
Authorization
string
Y
Bearer {Access Token}
Content-Type
string
Y
application/json
요청 파라미터
txId
string
Y
상태 확인이 필요한 인증 요청 트랜잭션 아이디
요청 예시
성공 응답
resultType
string
요청 결과. 성공 시 SUCCESS
success.txId
string
조회한 인증 트랜잭션 ID
success.status
string
인증 진행 상태 (아래 "status 값" 표 참고)
success.requestedDt
string
최초 인증 요청 시각 (YYYY-MM-DDThh:mm:ss±hh:mm, ISO 8601)
실패 응답
resultType
string
실패 시 FAIL
error.errorType
number
에러 유형
error.errorCode
string
에러 코드(예: CE3100)
error.reason
string
에러 메시지
error.data
object
부가 데이터(있을 경우)
error.title
string | null
에러 제목(있을 경우)
status 값
REQUESTED
토스 인증서버에서 사용자의 토스 앱으로 인증이 요청된 상태
IN_PROGRESS
사용자가 인증을 진행 중인 상태
COMPLETED
고객이 인증을 완료한 상태 (최종 확정은 결과조회 API로 판단 해야해요)
EXPIRED
유효시간 만료로 인증 진행이 불가한 상태
5. 본인확인 결과 조회하기
인증이 완료된 사용자의 결과 정보를 조회해요. 조회는 반드시 서버-서버 통신으로 진행해 주세요. 본인확인 결과로 수집한 정보는 서버에 안전하게 저장하고, 이후 전자서명/간편인증 시 해당 정보와 비교·검증 해 주세요.
BaseURL :
https://cert.toss.imEndpoint :
/api/v2/sign/user/auth/id/resultMethod :
POSTContent-type :
application/json
요청 헤더
Authorization
string
Y
Bearer {Access Token}
Content-Type
string
Y
application/json
요청 파라미터
txId
string
Y
결과 확인이 필요한 인증 요청 트랜잭션 아이디
sessionKey
string
Y
결과조회에서는 인증수단과 무관하게 txId와 함께 필수로 전달. 요청/응답 AES 암·복호화용 세션 키로, 매 요청마다 새로 생성하고 인증요청에서 사용한 세션키는 재사용 금지 (생성 방법)
요청 예시
성공 응답
resultType
string
성공 시 SUCCESS
success.txId
string
결과를 조회한 인증 트랜잭션 아이디
success.status
string
COMPLETED (결과 조회가 정상 처리된 상태)
success.userIdentifier
string | null
현재 버전 미사용 (null)
success.userCiToken
string | null
현재 버전 미사용 (null)
success.signature
string
사용자가 서명한 전자서명 값(Base64 인코딩된 DER). txId와 함께 저장 관리 필수
success.randomValue
string | null
현재 버전 미사용 (null)
success.completedDt
string
사용자 인증 완료 시각 (YYYY-MM-DDThh:mm:ss±hh:mm, ISO 8601)
success.requestedDt
string
최초 인증 요청 시각 (YYYY-MM-DDThh:mm:ss±hh:mm, ISO 8601)
success.personalData
object
인증에 사용된 개인정보(암호화 값). 하위 필드 표 참고
personalData(인증을 진행한 사용자 개인정보) Object
ci
string
암호화된 사용자의 CI
name
string
암호화된 사용자의 이름
birthday
string
암호화된 생년월일 8자리
gender
string
암호화된 성별 정보 (MALE | FEMALE)
nationality
string
암호화된 국적 (LOCAL | FOREIGNER)
ci2
string | null
예측 불가 상황에서 ci 유출 대응을 위한 임시 파라미터, null 고정
di
string
암호화된 사용자의 DI
ciUpdate
string | null
예측 불가 상황에서 ci 유출 대응을 위한 임시 파라미터, null 고정
ageGroup
string
암호화된 성인여부 (ADULT | MINOR)
실패 응답
resultType
string
실패 시 FAIL
error.errorType
number
에러 유형
error.errorCode
string
에러 코드(예: CE3102)
error.reason
string
에러 메시지
error.data
object
부가 데이터(있을 경우)
error.title
string | null
에러 제목(있을 경우)
테스트하기
계약이 완료되지 않아도 토스인증 테스트 환경에서 인증 연동을 진행해 볼 수 있어요. 연동을 먼저 진행한 뒤 테스트를 수행해 주세요. 테스트 시에는 앱 스토어에서 설치한 최신 버전의 토스앱을 이용해 주세요. 본인확인과 원터치 인증 방식 모두 테스트가 가능해요.
라이브 환경과의 차이점
인증 사용료 무료 — 인증을 성공적으로 완료하더라도 과금되지 않아요.
테스트 환경 자격증명 — client_id, client_secret 모두 test_ 로 시작해요. 이 접두어로 운영 환경 정보와 쉽게 구분할 수 있어요.
Access Token 유효기간 — 연동 편의를 위해 1년(31536000초) 유효기간이 적용돼요. 운영 환경에서는 사업자가 신청한 네트워크 방식에 따라 달라질 수 있어요.
가상의 개인정보 제공 — 토스에 가입된 사용자의 암호화된 개인정보 대신 토스가 생성한 가상 인물의 고정된 개인정보가 전달돼요. 실제 사용자 정보를 보호하기 위한 조치이며, 정확한 사용자 정보가 필요하다면 토스로부터 제공받은 이용기관 고유 키를 사용해 운영 환경과 연동해야 해요.
세션키 생성
보안을 위해 세션키(sessionKey)는 매 요청마다 새로 생성해 주세요.
보다 자세한 예시는 여기에서 확인해 보세요.
개인정보 암복호화
토스 인증 API는 일부 요청에서 고객의 개인정보가 포함될 수 있어요. 안전을 위해 고객사 서버와 토스 서버는 암호화된 데이터만 주고받아요. 평문이 필요할 땐 데이터를 복호화해 확인해 주세요.
인증 요청에서 고객의 이름, 생년월일, 휴대폰번호를 전달할 때 암호화
전자서명 서비스 원문에 고객의 개인정보가 포함되는 경우 원문 암호화
인증 결과로 토스 서버에서 CI·DI 등을 포함한 개인정보를 제공하는 경우 암호화
세션 키 생성 및 암호화 예제
기본적으로 SDK 사용을 권장하지만, 다양한 언어의 코드 샘플도 함께 제공해요. 자세한 예시는 여기에서 확인해 보세요.
마지막 업데이트
도움이 되었나요?