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

Develop

Please refer to the Toss Pay introduction document for the service overview and console setup instructions.

Follow the sequence below for the integration flow.

  1. Create payment — Create the payment on the server and payTokenissue the token.

  2. Authenticate payment — Open the payment window with the SDK and perform user authentication.

  3. Execute payment — With authentication completed, payTokenapprove the actual payment with it.

  4. Refund payment — Refund the payment.

  5. Check payment status — Check payment status and transaction.


Prerequisites

Console setup is required

Before calling the API, you must complete the procedures below first.

  1. Please proceed with the subscription process.

  2. Please register the Toss Pay key value in the console.

For subscription/setup instructions, Toss Pay introduction please refer to the document.

Identify the payment target user

Toss Pay identifies the payment target using one of the two methods below. Do not pass both values at the same time; choose only one.

Category
Issuance method

x-toss-user-key

Toss Loginobtained with userKey value.

x-anon-key

Issue user identification keyThis is the hash value obtained with

Please choose according to your purpose.

  • If you have already integrated Toss Login, or want to manage it together with member information such as name and email, use Toss Login.

  • If you want to identify users lightly without login integration, use the user identification key issuance feature.

x-anon-keyIf you want to check in advance whether (hash) is a valid value, Check identification key use the API.


Basic information

Item
Value

Base URL

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

Server authentication

mTLS (client certificate)

Content-Type

application/json

mTLS certificate is required for server-to-server communication

The Toss Pay payment API is server-to-server communication called from the partner server to the Apps in Toss server. For security, set up an mTLS certificate on the server before calling it. For how to issue a certificate, How to issue an mTLS certificateplease refer to.


Test

When requesting payment creation isTestPayment: trueIf set, you can test payments in the sandbox environment. You don't need to configure it separately in the console, and you can test it even before subscription. However, in the sandbox, only payment creation is possible; actual approval processing is not supported.


1. Create payment

Create the payment.

  • Content-type: application/json

  • Method: POST

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

Please make sure to check when using cash receipts

Partners that need to issue cash receipts must cashReceipt: truebe sure to pass. cashReceiptcan only be set at the time of payment creation, and after payment is completed, the cash receipt issuance target cannot be changed. cashReceiptomitting it or falsesending it as

Request headers

Use one of the two headers below to identify the payment target. Do not pass both headers at the same time.

Name
Type
Required
Description

x-toss-user-key

string

Choose one

Toss Loginobtained with userKey. Get user informationcan be obtained through.

x-anon-key

string

Choose one

Issue user identification keyobtained with hash value.

Request parameters

Name
Type
Required
Description

orderNo

String

Y

merchant's order numberis the merchant's order number. It must be unique per merchant each time, and if duplicated, the payment creation request will fail. Only numbers, English letters, and special characters are allowed, and it must be within 50 characters. The same order number cannot be reused after buyer authentication is complete. Order numbers that were created more than 2 years ago also cannot be reused. _-:.^@can only be used, and it must be within 50 characters. The same order number cannot be reused after buyer authentication is complete. Order numbers that were created more than 2 years ago also cannot be reused.

productDesc

String

Y

Product descriptionIt cannot be set to only spaces, and cannot include backslash \and quotation marks "and must be within 255 characters total. If it includes Korean, use UTF-8 encoding.

amount

Integer

Y

Total payment amountIt is. All parameters related to amounts must be passed as numbers.

amountTaxFree

Integer

Y

Tax-exempt amount within the payment amountIt is. If it is a taxable item, 0pass it as

amountTaxable

Integer

N

Taxable amount within the payment amountIt is. If you do not set it separately and send the tax-exempt amount as 0won, the server will calculate it automatically.

amountVat

Integer

N

VAT within the payment amountIt is. If there is no value, it is calculated by dividing the taxable amount by 11 and rounding up to the first decimal place.

amountServiceFee

Integer

N

Service fee within the payment amount.

enablePayMethods

String

N

Payment method selection variableIt is. - TOSS_MONEY: show Toss Money only - CARD: show card only - null or otherwise: show the default payment method configured for the store

cashReceipt

boolean

N

Whether cash receipt issuance is possibleIt is. If using the cash receipt feature true, if not using it falsepass null If you pass an abnormal value as above, it will be explicitly handled as false.

cashReceiptTradeOption

String

N

Cash receipt issuance typeIt is. - GENERAL: General (default) - CULTURE: Culture expenses - PUBLIC_TP: Transportation expenses

installment

String

N

Installment restriction typeIt is. - USE: Use installments (default) - NOT_USE: Do not use installments

isTestPayment

boolean

Y

For sandbox payment requests, true, for live app payment requests, false.

Response parameters

Name
Type
Description

payToken

String

Toss Pay tokenIt is. A unique token value is generated each time. You must store and manage it.


2. Authenticate payment

TossPay.checkoutPaymentopens the Toss Pay payment window and performs user authentication. When authentication is complete, it returns whether it succeeded. The actual payment processing must be carried out separately on the server after authentication succeeds.

TossPay

TossPayis an object that groups Toss Pay payment-related functions.

Signature

Properties

  • checkoutPaymenttypeof checkoutPayment

    A function for authenticating Toss Pay payments.

checkoutPayment

Signature

Parameters

  • options · Required · CheckoutPaymentOptions

    The options required to open the payment window.

Return value

  • Promise<CheckoutPaymentResult>

    Returns the result including whether authentication succeeded.

Example

CheckoutPaymentOptions

CheckoutPaymentOptionsThese are the options required when opening the Toss Pay payment window.

Signature

Properties

  • payToken · Required · string

    The payment token.

CheckoutPaymentResult

CheckoutPaymentResultWhether the user succeeded in authentication in the Toss Pay payment window.

Signature

Properties

  • success · Required · boolean

    Whether authentication succeeded.

  • reasonstring

    The reason why authentication failed.


3. Execute payment

When the buyer completes payment authentication, the payment status is 'pending'. payTokenWhen you call this API with the token and the order number, the actual approval is completed and the amount is withdrawn from the buyer's payment method.

  • Content-type: application/json

  • Method: POST

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

Request headers

Use one of the two headers below to identify the payment target. Do not pass both headers at the same time.

Name
Type
Required
Description

x-toss-user-key

string

Choose one

Toss Loginobtained with userKey. Get user informationcan be obtained through.

x-anon-key

string

Choose one

Issue user identification keyobtained with hash value.

Request parameters

Name
Type
Required
Description

payToken

String

Y

It is a Toss Pay token.

orderNo

String

N

It is the merchant order number.

isTestPayment

boolean

Y

payTokenIf it was issued in the sandbox true, if it was issued in the live app false.

Response

Name
Type
Description

mode

String

Payment environment. LIVE: production, TEST: test

orderNo

String

It is the approved product order number.

amount

Integer

It is the product amount.

approvalTime

String

Payment approval processing time. (yyyy-MM-dd HH🇲🇲ss)

stateMsg

String

This is the status response text. In the case of a normal response, "Payment completed"is returned.

discountedAmount

Integer

The discounted amount. 0If no discount is applied, it is returned as

paidAmount

Integer

The approved amount for the payment method. The net approved amount excluding the discount amount from the total amount.

payMethod

String

Payment method. TOSS_MONEY: Toss Money, CARD: card

payToken

String

It is a Toss Pay token. You must store and manage it.

transactionId

String

Transaction ID. Can be used as an identifier when calling the sales receipt or processing a refund.

cardCompanyCode

String

Approved card company code.

cardCompanyName

String

Approved card company name.

cardAuthorizationNo

String

The card issuer authorization number that the buyer can check. It is available in live key payments.

spreadOut

String

The card installment months selected by the user. For amounts under 50,000 won and one-time payments, 0is returned.

noInterest

String

Whether card no-interest installment is applied. true: no interest, false: regular

salesCheckLinkUrl

String

Credit card sales receipt call URL.

cardMethodType

String

Card type. CREDIT: credit card, CHECK: debit card, PREPAYMENT: prepaid card

cardNumber

String

The masked card number. In a 16-digit card number, the middle digits are masked.

cardUserType

String

Card user type. PERSONAL: personal card, PERSONAL_FAMILY: family card, CORP_PERSONAL: corporate designated payment account employee, CORP_PRIVATE: corporate shared, CORP_COMPANY: corporate designated payment account company (Hana Card only)

cardNum4Print

String

The last 4 digits of the card selected by the user.

cardBinNumber

String

Card BIN number.

cashReceiptMgtKey

String

Cash receipt management number identifier. If this field is present, you can distinguish whether a cash receipt is issued.

accountBankCode

String

Bank code. In the case of Toss Money payments, pass the bank code defined by Toss.

accountBankName

String

Bank name.

accountNumber

String

Account number. Some masking is included.

msg

String

Explanation message when the response is not successful.

errorCode

String

Error code.


4. Refund payment

Refund the payment to the buyer.

  • Content-type: application/json

  • Method: POST

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

Request headers

Use one of the two headers below to identify the payment target. Do not pass both headers at the same time.

Name
Type
Required
Description

x-toss-user-key

string

Choose one

Toss Loginobtained with userKey. Get user informationcan be obtained through.

x-anon-key

string

Choose one

Issue user identification keyobtained with hash value.

Request parameters

Name
Type
Required
Description

payToken

String

Y

It is a Toss Pay token.

reason

String

Y

Refund reason. Only Korean, numbers, English letters, and special characters _ - : . ^ @ ( ) [ ] # / ! % ? &are allowed.

isTestPayment

boolean

Y

payTokenIf it was issued in the sandbox true, if it was issued in the live app false.

Response

Name
Type
Description

refundNo

String

Refund number.

approvalTime

String

Refund processing time. (yyyy-MM-dd HH🇲🇲ss)

cashReceiptMgtKey

String

Cash receipt management number identifier.

refundableAmount

Integer

Refundable amount.

discountedAmount

Integer

Discounted amount.

paidAmount

Integer

Approved amount for the payment method.

refundedAmount

Integer

Refund request amount.

refundedDiscountAmount

Integer

The discount amount actually deducted from the refund request amount.

refundedPaidAmount

Integer

The payment method amount actually deducted from the refund request amount.

payToken

String

Refunded payment token.

transactionId

String

Transaction ID.

cardMethodType

String

Card type. CREDIT: credit card, CHECK: debit card, PREPAYMENT: prepaid card

cardNumber

String

Masked card number.

cardUserType

String

Card user type. PERSONAL: personal card, PERSONAL_FAMILY: family card, CORP_PERSONAL: corporate designated payment account employee, CORP_PRIVATE: corporate shared, CORP_COMPANY: corporate designated payment account company (Hana Card only)

cardNum4Print

String

The last 4 digits of the card selected by the user.

cardBinNumber

String

Card BIN number.

accountBankCode

String

Bank code. In the case of Toss Money payments, pass the bank code defined by Toss.

accountBankName

String

Bank name.

accountNumber

String

Masked account number.


5. Retrieve payment status

You can retrieve the transaction status and transactions of a created payment. This can also be used when approval or refund responses are not received.

  • Content-type: application/json

  • Method: POST

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

Request headers

Use one of the two headers below to identify the payment target. Do not pass both headers at the same time.

Name
Type
Required
Description

x-toss-user-key

string

Choose one

Toss Loginobtained with userKey. Get user informationcan be obtained through.

x-anon-key

string

Choose one

Issue user identification keyobtained with hash value.

Request parameters

Name
Type
Required
Description

payToken

String

Y

It is a Toss Pay token.

orderNo

String

Y

It is the merchant order number.

isTestPayment

boolean

Y

payTokenIf it was issued in the sandbox true, if it was issued in the live app false.

Response

Name
Type
Description

mode

String

Payment environment. LIVE: production, TEST: test

payToken

String

It is a Toss Pay token.

orderNo

String

This is the merchant order number linked to Toss Pay.

payStatus

String

This is the payment status.

payMethod

String

Payment method. TOSS_MONEY: Toss Money, CARD: card

amount

Integer

This is the total payment amount sent by the merchant.

discountedAmount

Integer

Discounted amount.

discountAmountV2

Integer

This is the amount of instant discount applied.

paidPointV2

Integer

This is the amount spent using Toss Points.

paidAmount

Integer

Approved amount for the payment method.

refundableAmount

Integer

This is the refundable balance.

amountTaxable

Integer

This is the taxable amount of the total payment amount.

amountTaxFree

Integer

This is the non-taxable amount of the total payment amount.

amountVat

Integer

This is the VAT amount of the total payment amount.

amountServiceFee

Integer

This is the service fee within the total payment amount.

disposableCupDeposit

Integer

This is the disposable cup deposit.

accountBankCode

String

This is the bank code.

accountBankName

String

Bank name.

accountNumber

String

Masked account number.

card

Object

This is card information.

noInterest

Boolean

Whether card no-interest installment is applied. true: no interest, false: regular

spreadOut

Integer

This is the card installment months selected by the user.

cardAuthorizationNo

String

This is the card issuer approval number that the buyer can check.

cardMethodType

String

Card type. CREDIT: credit card, CHECK: debit card, PREPAYMENT: prepaid card

cardUserType

String

Card user type.

cardNumber

String

Masked card number.

cardBinNumber

String

Card BIN number.

cardNum4Print

String

The last 4 digits of the card selected by the user.

salesCheckLinkUrl

String

Credit card sales receipt call URL.

cardCompanyName

String

Approved card company name.

cardCompanyCode

Integer

This is the card issuer code.

transactions

list

This is the list of transaction records.

stepType

String

This is the requested transaction type. PAY: payment, REFUND: refund

transactionId

String

This is the transaction ID. We recommend using it for transaction reconciliation.

paidAmount

Integer

This is the payment method amount for the requested transaction type.

transactionAmount

Integer

This is the merchant-delivered amount for the requested transaction type. For refund requests, a negative amount is returned.

discountedAmount

Integer

This is the discount amount applied to the requested transaction type. It includes instant discounts and Toss Points used.

pointAmount

Integer

This is the point amount for the requested transaction type.

regTs

String

This is the request processing time.

createdTs

String

This is the payment creation time. It is the time of the user's first payment request.

paidTs

String

This is the payment completion processing time.


6. Code cleanup

Payment status list

Value
Description

PAY_STANDBY

Awaiting payment

PAY_APPROVED

Buyer authentication completed

PAY_CANCEL

Payment canceled

PAY_PROGRESS

Payment in progress

PAY_COMPLETE

Payment completed

REFUND_PROGRESS

Refund in progress

REFUND_SUCCESS

Refund successful

SETTLEMENT_COMPLETE

Settlement complete

SETTLEMENT_REFUND_COMPLETE

Refund settlement complete

Bank code list

For Toss Money payments, also send the account information selected by the user.

Bank code (accountBankCode)
Bank name (accountBankName)

002

KDB Industrial Bank

003

IBK Industrial Bank of Korea

004

KB Kookmin Bank

005

KEB Hana Bank

007

Suhyup Bank

011

NH NongHyup Bank

020

Woori Bank

023

Standard Chartered Bank

027

Citibank

031

Daegu Bank

032

Busan Bank

034

Gwangju Bank

035

Jeju Bank

037

Jeonbuk Bank

039

Gyeongnam Bank

045

MG Community Credit Cooperative

048

Credit Union

050

Savings Bank

064

Forest Cooperative

071

Post Office

081

Hana Bank

088

Shinhan Bank

089

K Bank

090

KakaoBank

092

Toss Bank

103

SBI Savings Bank

218

KB Securities

230

Mirae Asset Securities

238

Mirae Asset Securities

240

Samsung Securities

243

Korea Investment & Securities

247

NH Investment & Securities

261

Kyobo Securities

262

HI Investment & Securities

263

Hyundai Motor Securities

264

Kiwoom Securities

265

eBEST Investment & Securities

266

SK Securities

267

Daishin Securities

269

Hanwha Investment & Securities

270

Hana Securities

271

Toss Securities

278

Shinhan Securities

279

DB Financial Investment

280

Eugene Investment & Securities

287

Meritz Securities

888

Toss Money

889

Toss Points

Card issuer code list

Card issuer name
Card (acquirer) code

Shinhan

1

Hyundai

2

Samsung

3

Kookmin

4

Lotte

5

Hana

6

Woori

7

NongHyup

8

Citi (not supported)

9

BC (BC)

10

Error code

Value
Description

PAYMENT_EXISTING_PAYMENT

This is a payment that already exists.

COMMON_INVALID_API_KEY

The apiKey is invalid.

COMMON_BREAK_TIME_OF_BANK

The bank is currently under maintenance. Please use it after maintenance is over.

Other error codes

Last updated

Was this helpful?