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

개발하기

서비스 소개와 콘솔 설정 방법은 토스페이 소개 문서를 참고해 주세요.

연동 흐름은 아래 순서를 따라 주세요.

  1. 결제 생성하기 — 서버에서 결제를 생성하고 payToken을 발급받아요.

  2. 결제 인증하기 — SDK로 결제창을 띄우고 사용자 인증을 수행해요.

  3. 결제 실행하기 — 인증이 완료된 payToken으로 실제 결제를 승인해요.

  4. 결제 환불하기 — 결제 건을 환불해요.

  5. 결제 상태 조회하기 — 결제 상태와 트랜잭션을 조회해요.


사전 준비 사항

콘솔 설정이 필요해요

API를 호출하기 전에 아래 절차를 먼저 완료해야 해요.

  1. 청약을 진행해 주세요.

  2. 콘솔에서 토스페이 키 값을 등록해 주세요.

청약/설정 방법은 토스페이 소개 문서를 참고해 주세요.

결제 대상 사용자 식별하기

토스페이는 아래 2가지 방법 중 하나로 결제 대상을 식별해요. 두 값을 동시에 전달하지 말고 하나만 선택해 주세요.

구분
발급 방법

x-toss-user-key

토스 로그인으로 받은 userKey 값이에요.

x-anon-key

사용자 식별키 발급으로 받은 hash 값이에요.

목적에 따라 선택해 주세요.

  • 이미 토스 로그인을 연동했거나, 이름·이메일 같은 회원 정보와 묶어 통합 관리하려면 토스 로그인을 사용해요.

  • 로그인 연동 없이 가볍게 사용자만 식별하려면 사용자 식별키 발급 기능을 사용해요.

x-anon-key(hash)가 유효한 값인지 미리 확인하고 싶다면 식별키 검증하기 API를 사용해 주세요.


기본 정보

항목

Base URL

https://pay-apps-in-toss-api.toss.im

서버 인증

mTLS (클라이언트 인증서)

Content-Type

application/json

서버 간 통신에는 mTLS 인증서가 필요해요

토스페이 결제 API는 파트너 서버에서 앱인토스 서버로 호출하는 서버 간 통신이에요. 보안을 위해 서버에 mTLS 인증서를 설정한 뒤 호출해 주세요. 인증서 발급 방법은 mTLS 인증서 발급 방법을 참고해 주세요.


테스트하기

결제 생성 요청 시 isTestPayment: true로 설정하면 샌드박스 환경에서 결제를 테스트할 수 있어요. 콘솔에 별도로 설정하지 않아도 되고, 청약 전에도 테스트할 수 있어요. 단, 샌드박스에서는 결제 생성까지만 가능하며 실제 승인 처리는 지원하지 않아요.


1. 결제 생성하기

결제 건을 생성해요.

  • Content-type: application/json

  • Method: POST

  • URL: /api-partner/v1/apps-in-toss/pay/make-payment

현금영수증 사용 시 반드시 확인해 주세요

현금영수증 발급이 필요한 파트너사는 결제 생성 요청 시 cashReceipt: true를 반드시 전달해야 해요. cashReceipt는 결제 생성 시점에만 설정할 수 있으며, 결제 완료 후에는 현금영수증 발급 대상을 변경할 수 없어요. cashReceipt를 누락하거나 false로 보내면 현금영수증 발급 대상이 아니에요.

요청 헤더

결제 대상을 식별하는 헤더는 아래 2가지 중 하나를 사용해요. 두 헤더를 동시에 전달하지 마세요.

이름
타입
필수
설명

x-toss-user-key

string

택 1

토스 로그인으로 받은 userKey예요. 사용자 정보 받기를 통해 획득할 수 있어요.

x-anon-key

string

택 1

사용자 식별키 발급으로 받은 hash 값이에요.

요청 파라미터

이름
타입
필수
설명

orderNo

String

Y

가맹점의 주문번호예요. 가맹점별로 매회 유니크해야 하며, 중복될 경우 결제 생성 요청이 실패해요. 숫자, 영문자, 특수문자 _-:.^@만 사용 가능하며 50자 이내여야 해요. 동일 주문번호는 구매자 인증 완료 이후 재사용이 불가해요. 최초 생성 후 2년이 지난 주문번호도 재사용할 수 없어요.

productDesc

String

Y

상품 설명이에요. 공백으로만 설정할 수 없고, 백슬래시 \와 따옴표 "를 포함할 수 없으며 총 255자 이내여야 해요. 한글이 포함된 경우 UTF-8 인코딩을 사용해 주세요.

amount

Integer

Y

총 결제 금액이에요. 금액과 관련된 모든 파라미터는 숫자 형태로 전달해야 해요.

amountTaxFree

Integer

Y

결제 금액 중 비과세 금액이에요. 과세 품목이면 0으로 전달해 주세요.

amountTaxable

Integer

N

결제 금액 중 과세 금액이에요. 별도로 설정하지 않고 비과세 금액을 0원으로 보내면 서버에서 자동으로 계산해요.

amountVat

Integer

N

결제 금액 중 부가세예요. 값이 없으면 과세 금액을 11로 나눈 후 소수점 첫째 자리에서 올림으로 계산해요.

amountServiceFee

Integer

N

결제 금액 중 봉사료예요.

enablePayMethods

String

N

결제수단 구분 변수예요. - TOSS_MONEY: 토스머니만 노출 - CARD: 카드만 노출 - null 또는 그 외: 상점에 설정된 기본 결제수단으로 노출

cashReceipt

boolean

N

현금영수증 발급 가능 여부예요. 현금영수증 기능을 사용하는 경우 true, 미사용의 경우 false를 전달해 주세요. null 같은 비정상 값을 전달하면 명시적으로 false로 처리돼요.

cashReceiptTradeOption

String

N

현금영수증 발급 타입이에요. - GENERAL: 일반(기본값) - CULTURE: 문화비 - PUBLIC_TP: 교통비

installment

String

N

할부 제한 타입이에요. - USE: 할부 사용(기본값) - NOT_USE: 할부 미사용

isTestPayment

boolean

Y

샌드박스 결제 요청이면 true, 라이브앱 결제 요청이면 false예요.

응답 파라미터

이름
타입
설명

payToken

String

토스페이 토큰이에요. 매회 유니크한 토큰 값이 생성돼요. 반드시 저장하고 관리해야 해요.


2. 결제 인증하기

TossPay.checkoutPayment는 토스페이 결제창을 띄우고 사용자 인증을 수행해요. 인증이 완료되면 성공 여부를 반환해요. 실제 결제 처리는 인증 성공 후 서버에서 별도로 진행해야 해요.

TossPay

TossPay는 토스페이 결제 관련 함수를 모아둔 객체예요.

시그니처

프로퍼티

  • checkoutPaymenttypeof checkoutPayment

    토스페이 결제를 인증하는 함수예요.

checkoutPayment

시그니처

파라미터

  • options · 필수 · CheckoutPaymentOptions

    결제창을 띄울 때 필요한 옵션이에요.

반환값

  • Promise<CheckoutPaymentResult>

    인증 성공 여부를 포함한 결과를 반환해요.

예제

CheckoutPaymentOptions

CheckoutPaymentOptions는 토스페이 결제창을 띄울 때 필요한 옵션이에요.

시그니처

프로퍼티

  • payToken · 필수 · string

    결제 토큰이에요.

CheckoutPaymentResult

CheckoutPaymentResult는 토스페이 결제창에서 사용자가 인증에 성공했는지 여부예요.

시그니처

프로퍼티

  • success · 필수 · boolean

    인증이 성공했는지 여부예요.

  • reasonstring

    인증이 실패했을 경우의 이유예요.


3. 결제 실행하기

구매자가 결제 인증을 완료하면 결제 상태는 '대기' 상태예요. payToken과 주문번호로 이 API를 호출하면 실제 승인이 완료되고 구매자의 결제 수단에서 금액이 출금돼요.

  • Content-type: application/json

  • Method: POST

  • URL: /api-partner/v1/apps-in-toss/pay/execute-payment

요청 헤더

결제 대상을 식별하는 헤더는 아래 2가지 중 하나를 사용해요. 두 헤더를 동시에 전달하지 마세요.

이름
타입
필수
설명

x-toss-user-key

string

택 1

토스 로그인으로 받은 userKey예요. 사용자 정보 받기를 통해 획득할 수 있어요.

x-anon-key

string

택 1

사용자 식별키 발급으로 받은 hash 값이에요.

요청 파라미터

이름
타입
필수
설명

payToken

String

Y

토스페이 토큰이에요.

orderNo

String

N

가맹점 주문번호예요.

isTestPayment

boolean

Y

payToken이 샌드박스에서 발급된 것이면 true, 라이브앱에서 발급된 것이면 false예요.

응답

이름
타입
설명

mode

String

결제 환경이에요. LIVE: 실거래용, TEST: 테스트용

orderNo

String

승인된 상품 주문번호예요.

amount

Integer

상품 금액이에요.

approvalTime

String

결제 승인 처리 시간이에요. (yyyy-MM-dd HH🇲🇲ss)

stateMsg

String

상태 응답 텍스트예요. 정상 응답일 경우 "결제 완료"로 내려와요.

discountedAmount

Integer

할인된 금액이에요. 할인 적용이 없으면 0으로 내려와요. 즉시할인과 토스 포인트 사용금액이 포함돼요.

paidAmount

Integer

지불수단 승인금액이에요. 총 금액 중 할인 금액을 제외한 순수 지불수단 승인금액이에요.

payMethod

String

결제수단이에요. TOSS_MONEY: 토스머니, CARD: 카드

payToken

String

토스페이 토큰이에요. 반드시 저장하고 관리해야 해요.

transactionId

String

거래 트랜잭션 아이디예요. 매출전표 호출이나 환불 진행 시 구분 값으로 활용할 수 있어요.

cardCompanyCode

String

승인 카드사 코드예요.

cardCompanyName

String

승인 카드사명이에요.

cardAuthorizationNo

String

구매자가 확인할 수 있는 카드사 승인번호예요. 라이브 키 결제에서 확인할 수 있어요.

spreadOut

String

사용자가 선택한 카드 할부개월이에요. 5만원 미만 금액 및 일시불 결제의 경우 0으로 내려와요.

noInterest

String

카드 무이자 적용 여부예요. true: 무이자, false: 일반

salesCheckLinkUrl

String

신용카드 매출전표 호출 URL이에요.

cardMethodType

String

카드 타입이에요. CREDIT: 신용카드, CHECK: 체크카드, PREPAYMENT: 선불카드

cardNumber

String

마스킹된 카드번호예요. 카드번호 16자리 중 중간 자리는 마스킹돼요.

cardUserType

String

카드 사용자 구분이에요. PERSONAL: 본인카드, PERSONAL_FAMILY: 가족카드, CORP_PERSONAL: 법인지정 결제계좌 임직원, CORP_PRIVATE: 법인 공용, CORP_COMPANY: 법인지정 결제계좌 회사(하나카드만)

cardNum4Print

String

사용자가 선택한 카드의 끝 4자리예요.

cardBinNumber

String

카드 BIN 번호예요.

cashReceiptMgtKey

String

현금영수증 관리번호 식별값이에요. 이 필드가 있으면 현금영수증 발급 여부를 구분할 수 있어요.

accountBankCode

String

은행 코드예요. 토스머니 결제의 경우 토스가 정의한 은행 코드를 전달해요.

accountBankName

String

은행명이에요.

accountNumber

String

계좌번호예요. 일부 마스킹이 포함돼요.

msg

String

응답이 성공이 아닌 경우 설명 메시지예요.

errorCode

String

에러 코드예요.


4. 결제 환불하기

결제 건을 구매자에게 환불해요.

  • Content-type: application/json

  • Method: POST

  • URL: /api-partner/v1/apps-in-toss/pay/refund-payment

요청 헤더

결제 대상을 식별하는 헤더는 아래 2가지 중 하나를 사용해요. 두 헤더를 동시에 전달하지 마세요.

이름
타입
필수
설명

x-toss-user-key

string

택 1

토스 로그인으로 받은 userKey예요. 사용자 정보 받기를 통해 획득할 수 있어요.

x-anon-key

string

택 1

사용자 식별키 발급으로 받은 hash 값이에요.

요청 파라미터

이름
타입
필수
설명

payToken

String

Y

토스페이 토큰이에요.

reason

String

Y

환불 사유예요. 한글 및 숫자, 영문자, 특수문자 _ - : . ^ @ ( ) [ ] # / ! % ? &만 허용해요.

isTestPayment

boolean

Y

payToken이 샌드박스에서 발급된 것이면 true, 라이브앱에서 발급된 것이면 false예요.

응답

이름
타입
설명

refundNo

String

환불 번호예요.

approvalTime

String

환불 처리 시간이에요. (yyyy-MM-dd HH🇲🇲ss)

cashReceiptMgtKey

String

현금영수증 관리번호 식별값이에요.

refundableAmount

Integer

환불 가능 금액이에요.

discountedAmount

Integer

할인된 금액이에요.

paidAmount

Integer

지불수단 승인금액이에요.

refundedAmount

Integer

환불 요청 금액이에요.

refundedDiscountAmount

Integer

환불 요청 금액 중 실 차감된 할인 금액이에요.

refundedPaidAmount

Integer

환불 요청 금액 중 실 차감된 지불수단 금액이에요.

payToken

String

환불된 결제 토큰이에요.

transactionId

String

거래 트랜잭션 아이디예요.

cardMethodType

String

카드 타입이에요. CREDIT: 신용카드, CHECK: 체크카드, PREPAYMENT: 선불카드

cardNumber

String

마스킹된 카드번호예요.

cardUserType

String

카드 사용자 구분이에요. PERSONAL: 본인카드, PERSONAL_FAMILY: 가족카드, CORP_PERSONAL: 법인지정 결제계좌 임직원, CORP_PRIVATE: 법인 공용, CORP_COMPANY: 법인지정 결제계좌 회사(하나카드만)

cardNum4Print

String

사용자가 선택한 카드의 끝 4자리예요.

cardBinNumber

String

카드 BIN 번호예요.

accountBankCode

String

은행 코드예요. 토스머니 결제의 경우 토스가 정의한 은행 코드를 전달해요.

accountBankName

String

은행명이에요.

accountNumber

String

마스킹된 계좌번호예요.


5. 결제 상태 조회하기

생성된 결제 건의 거래 상태와 트랜잭션을 조회할 수 있어요. 승인 혹은 환불 응답을 수신하지 못한 경우에도 활용할 수 있어요.

  • Content-type: application/json

  • Method: POST

  • URL: /api-partner/v1/apps-in-toss/pay/get-payment-status

요청 헤더

결제 대상을 식별하는 헤더는 아래 2가지 중 하나를 사용해요. 두 헤더를 동시에 전달하지 마세요.

이름
타입
필수
설명

x-toss-user-key

string

택 1

토스 로그인으로 받은 userKey예요. 사용자 정보 받기를 통해 획득할 수 있어요.

x-anon-key

string

택 1

사용자 식별키 발급으로 받은 hash 값이에요.

요청 파라미터

이름
타입
필수
설명

payToken

String

Y

토스페이 토큰이에요.

orderNo

String

Y

가맹점 주문번호예요.

isTestPayment

boolean

Y

payToken이 샌드박스에서 발급된 것이면 true, 라이브앱에서 발급된 것이면 false예요.

응답

이름
타입
설명

mode

String

결제 환경이에요. LIVE: 실거래용, TEST: 테스트용

payToken

String

토스페이 토큰이에요.

orderNo

String

토스페이와 연계된 가맹점 주문번호예요.

payStatus

String

결제 상태예요.

payMethod

String

결제수단이에요. TOSS_MONEY: 토스머니, CARD: 카드

amount

Integer

가맹점이 전달한 결제 총 금액이에요.

discountedAmount

Integer

할인된 금액이에요.

discountAmountV2

Integer

즉시 할인 적용 금액이에요.

paidPointV2

Integer

토스 포인트 사용금액이에요.

paidAmount

Integer

지불수단 승인금액이에요.

refundableAmount

Integer

환불 가능 잔액이에요.

amountTaxable

Integer

총 결제 금액 중 과세 금액이에요.

amountTaxFree

Integer

총 결제 금액 중 비과세 금액이에요.

amountVat

Integer

총 결제 금액 중 부가세 금액이에요.

amountServiceFee

Integer

총 결제 금액 중 봉사료예요.

disposableCupDeposit

Integer

일회용 컵 보증금이에요.

accountBankCode

String

은행 코드예요.

accountBankName

String

은행명이에요.

accountNumber

String

마스킹된 계좌번호예요.

card

Object

카드 정보예요.

noInterest

Boolean

카드 무이자 적용 여부예요. true: 무이자, false: 일반

spreadOut

Integer

사용자가 선택한 카드 할부개월이에요.

cardAuthorizationNo

String

구매자가 확인할 수 있는 카드사 승인번호예요.

cardMethodType

String

카드 타입이에요. CREDIT: 신용카드, CHECK: 체크카드, PREPAYMENT: 선불카드

cardUserType

String

카드 사용자 구분이에요.

cardNumber

String

마스킹된 카드번호예요.

cardBinNumber

String

카드 BIN 번호예요.

cardNum4Print

String

사용자가 선택한 카드의 끝 4자리예요.

salesCheckLinkUrl

String

신용카드 매출전표 호출 URL이에요.

cardCompanyName

String

승인 카드사명이에요.

cardCompanyCode

Integer

카드사 코드예요.

transactions

list

거래 트랜잭션 목록이에요.

stepType

String

요청된 거래 타입이에요. PAY: 결제, REFUND: 환불

transactionId

String

거래 트랜잭션 아이디예요. 거래 대사 시 활용하는 것을 권장해요.

paidAmount

Integer

요청된 거래 타입 중 지불수단 금액이에요.

transactionAmount

Integer

요청된 거래 타입의 가맹점 전달금액이에요. 환불 요청의 경우 마이너스 금액이 내려와요.

discountedAmount

Integer

요청된 거래 타입 중 적용된 할인금액이에요. 즉시할인과 토스 포인트 사용금액이 포함돼요.

pointAmount

Integer

요청된 거래 타입 중 포인트 금액이에요.

regTs

String

요청 처리 시간이에요.

createdTs

String

결제 생성 시간이에요. 사용자 최초 결제 요청 시간이에요.

paidTs

String

결제 완료 처리 시간이에요.


6. 코드 정리

결제 상태 리스트

설명

PAY_STANDBY

결제 대기 중

PAY_APPROVED

구매자 인증 완료

PAY_CANCEL

결제 취소

PAY_PROGRESS

결제 진행 중

PAY_COMPLETE

결제 완료

REFUND_PROGRESS

환불 진행 중

REFUND_SUCCESS

환불 성공

SETTLEMENT_COMPLETE

정산 완료

SETTLEMENT_REFUND_COMPLETE

환불 정산 완료

은행코드 리스트

토스머니 결제의 경우 사용자가 선택한 계좌 정보를 함께 전달해요.

은행 코드 (accountBankCode)
은행 명 (accountBankName)

002

KDB산업은행

003

IBK기업은행

004

KB국민은행

005

KEB하나은행

007

수협은행

011

NH농협은행

020

우리은행

023

SC은행

027

씨티은행

031

대구은행

032

부산은행

034

광주은행

035

제주은행

037

전북은행

039

경남은행

045

MG새마을금고

048

신협

050

저축은행

064

산림조합

071

우체국

081

하나은행

088

신한은행

089

케이뱅크

090

카카오뱅크

092

토스뱅크

103

SBI저축은행

218

KB증권

230

미래에셋증권

238

미래에셋증권

240

삼성증권

243

한국투자증권

247

NH투자증권

261

교보증권

262

하이투자증권

263

현대차투자증권

264

키움증권

265

이베스트증권

266

SK증권

267

대신증권

269

한화투자증권

270

하나증권

271

토스증권

278

신한투자증권

279

DB금융투자

280

유진투자

287

메리츠증권

888

토스머니

889

토스포인트

카드사코드 리스트

카드사 이름
카드(매입사) 코드

신한

1

현대

2

삼성

3

국민

4

롯데

5

하나

6

우리

7

농협

8

씨티(미지원)

9

비씨(BC)

10

에러 코드

설명

PAYMENT_EXISTING_PAYMENT

이미 존재하는 결제예요.

COMMON_INVALID_API_KEY

바르지 않은 apiKey예요.

COMMON_BREAK_TIME_OF_BANK

지금은 은행 점검 시간이에요. 점검이 끝난 후 사용해 주세요.

그 외의 에러코드

마지막 업데이트

도움이 되었나요?