For the complete documentation index, see llms.txt. This page is also available as Markdown.

토스 인증

토스 인증 계약하기 >

토스 인증 서비스를 사용하기 위한 계약 방법을 안내해요.

최소 버전을 확인해 주세요

  • SDK : 1.2.1 이상

  • 토스앱 (본인확인) : 5.233.0 이상

  • 토스앱 (원터치 인증) : 5.236.0 이상

getTossAppVersion 함수를 사용하여 토스앱 버전을 체크해 보세요.

방화벽 설정

요청 서버의 아웃바운드(Outbound) 설정에 아래 토스인증 IP를 허용해 주세요. 모든 통신은 443 포트(HTTPS) 를 사용해요.

토스 인증 서버는 인바운드(Inbound) 가 제한 없이 오픈되어 있어, 별도 설정 없이 바로 통신할 수 있어요.

본인확인 IP

  • 117.52.3.222

  • 117.52.3.235

  • 211.115.96.222

  • 211.115.96.235

1. AccessToken 받기

토스 본인확인을 위한 Access Token을 발급받아요. 발급된 토큰은 이후 모든 API 호출의 Authorization 헤더에 사용돼요.

토큰에는 만료 시간(expires_in) 이 있어요. 만료 시 새 토큰을 발급해야 하고, 유효한 토큰이 있으면 재발급을 피해서 불필요한 호출을 줄여 주세요.

  • Base URL: https://oauth2.cert.toss.im

  • Endpoint: /token

  • Method: POST

  • Content-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.im

  • Endpoint : /api/v2/sign/user/auth/request

  • Method : POST

  • Content-type : application/json

2-1. 개인정보 기반 인증

고객의 이름·생년월일·전화번호암호화 후 전송하는 방식이에요. 보안을 위해 세션키(sessionKey)는 매 요청마다 새로 생성해 주세요.

요청 헤더

이름
타입
필수값 여부
설명

Authorization

string

Y

Bearer {Access Token}

Content-Type

string

Y

application/json

요청 파라미터

이름
타입
필수값 여부
설명

requestUrl

string

Y

토스 본인확인 사용 시 돌아갈 고객사 앱스킴

requestType

string

Y

USER_PERSONAL

triggerType

string

Y

APP_SCHEME

userName

string

Y

암호화 필수

userPhone

string

Y

숫자만, 암호화 필수

userBirthday

string

Y

YYYYMMDD, 암호화 필수

sessionKey

string

Y

AES 암복호화용, 매 요청마다 신규 생성 필요 (생성 방법)

요청 예시

응답 예시

성공 응답

이름
타입
설명

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

에러 제목(있을 경우)

다음 단계

응답의 txId를 사용해 appsInTossSignTossCert 함수를 호출하면 토스앱 인증 화면이 실행돼요. 인증 화면 호출하기를 참고해 주세요.

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

에러 제목(있을 경우)

다음 단계

응답의 txId를 사용해 appsInTossSignTossCert 함수를 호출하면 토스앱 인증 화면이 실행돼요. 인증 화면 호출하기를 참고해 주세요.

3. 인증 화면 호출하기

본인확인 요청 API 응답에서 받은 txId를 포함해 appsInTossSignTossCert를 호출하면 토스앱 인증 화면이 실행돼요.

원터치 인증 및 앱 버전 안내

원터치 인증 방식(USER_NONE) 을 사용하는 경우, skipConfirmDoctrue로 설정하면 인증서 확인 문서 단계를 건너뛸 수 있어요.

  • 토스 인증(requestType: USER_PERSONAL): 토스앱 5.233.0 이상

  • 토스 원터치 인증(requestType: USER_NONE): 토스앱 5.236.0 이상

getTossAppVersion 함수를 사용하여 토스앱 버전을 체크해 보세요.

응답

  • onSuccess

    • 파라미터 없음

  • onError

    • Error { code: string; message: string } (예: 사용자 취소, 앱 미설치, 스킴 실패 등)

4. 본인확인 상태 조회하기

사용자의 현재 인증 진행 상태를 조회해요. txId를 사용해 현재의 인증 단계 (REQUESTED, IN_PROGRESS, COMPLETED, EXPIRED)를 확인할 수 있어요.

주의하세요

상태조회 API는 진행 상태 확인용이에요. 최종 인증 성공 여부는 결과조회 API로 판별해야 해요.

  • BaseURL : https://cert.toss.im

  • Endpoint : /api/v2/sign/user/auth/id/status

  • Method : POST

  • Content-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. 본인확인 결과 조회하기

인증이 완료된 사용자의 결과 정보를 조회해요. 조회는 반드시 서버-서버 통신으로 진행해 주세요. 본인확인 결과로 수집한 정보는 서버에 안전하게 저장하고, 이후 전자서명/간편인증 시 해당 정보와 비교·검증 해 주세요.

주의하세요

결과조회 API는 성공 기준으로 최대 2회까지만 조회가 가능해요. 사용자 인증을 끝마친 후 60분(1시간) 이내 결과 조회를 끝내야 해요. 60분을 초과하면 결과 조회가 제한되며 인증 요청 API부터 다시 시작해야 해요.

  • BaseURL : https://cert.toss.im

  • Endpoint : /api/v2/sign/user/auth/id/result

  • Method : POST

  • Content-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 : test_a8e23336d673ca70922b485fe806eb2d

  • client_secret : test_418087247d66da09fda1964dc4734e453c7cf66a7a9e3

라이브 환경과의 차이점

인증 사용료 무료 — 인증을 성공적으로 완료하더라도 과금되지 않아요.

테스트 환경 자격증명client_id, client_secret 모두 test_ 로 시작해요. 이 접두어로 운영 환경 정보와 쉽게 구분할 수 있어요.

Access Token 유효기간 — 연동 편의를 위해 1년(31536000초) 유효기간이 적용돼요. 운영 환경에서는 사업자가 신청한 네트워크 방식에 따라 달라질 수 있어요.

가상의 개인정보 제공 — 토스에 가입된 사용자의 암호화된 개인정보 대신 토스가 생성한 가상 인물의 고정된 개인정보가 전달돼요. 실제 사용자 정보를 보호하기 위한 조치이며, 정확한 사용자 정보가 필요하다면 토스로부터 제공받은 이용기관 고유 키를 사용해 운영 환경과 연동해야 해요.

테스트 환경에서 제공되는 가상 개인정보 예시

  • CI : CI0110000000001 ...

  • DI : DI0110000000001 ...

  • 이름 : 김토스

  • 생년월일 : 19930324

  • 성별 : FEMALE

  • 내외국인 : LOCAL


세션키 생성

보안을 위해 세션키(sessionKey)는 매 요청마다 새로 생성해 주세요.

보다 자세한 예시는 여기에서 확인해 보세요.


개인정보 암복호화

토스 인증 API는 일부 요청에서 고객의 개인정보가 포함될 수 있어요. 안전을 위해 고객사 서버와 토스 서버는 암호화된 데이터만 주고받아요. 평문이 필요할 땐 데이터를 복호화해 확인해 주세요.

  • 인증 요청에서 고객의 이름, 생년월일, 휴대폰번호를 전달할 때 암호화

  • 전자서명 서비스 원문에 고객의 개인정보가 포함되는 경우 원문 암호화

  • 인증 결과로 토스 서버에서 CI·DI 등을 포함한 개인정보를 제공하는 경우 암호화

원터치 본인 인증

고객사 서버에서 토스인증 서버로 고객의 정보를 전달하지 않기 때문에 암호화 과정이 불필요해요. 다만, 사용자 인증이 완료된 이후 결과조회 API를 호출할 때는 세션키를 포함해서 요청해야 해요.

세션 키 생성 및 암호화 예제

참고하세요

토스 테스트 환경에서는 실제 사용자의 개인정보가 아닌 토스가 생성한 가상 인물의 고정된 개인정보를 제공해요.

세션키 생성 시 사용하는 Public key

기본적으로 SDK 사용을 권장하지만, 다양한 언어의 코드 샘플도 함께 제공해요. 자세한 예시는 여기에서 확인해 보세요.

마지막 업데이트

도움이 되었나요?