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

토스 페이

결제 생성하기

post

결제를 생성해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

토스페이 결제 생성을 위한 요청 본문이에요.

amountinteger · int64 · max: 7Required

총 결제 금액이에요.

Example: 1000
amountServiceFeeinteger · int64 · max: 7Optional

결제 금액 중 봉사료예요.

Example: 0
amountTaxFreeinteger · int64 · max: 7Required

결제 금액 중 비과세 금액이에요. 과세 상품이면 0으로 보내주세요.

Example: 0
amountTaxableinteger · int64 · max: 7Optional

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

Example: 909
amountVatinteger · int64 · max: 7Optional

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

Example: 91
cashReceiptbooleanOptional

현금영수증 발급 가능 여부예요. null일 경우 발급되지 않아요.

Example: false
cashReceiptTradeOptionstring · max: 10Optional

현금영수증 발급 타입이에요. CULTURE(문화비)/GENERAL(일반, 기본값)/PUBLIC_TP(교통비) 중 하나예요.

Example: GENERAL
enablePayMethodsstring · max: 100Optional

사용 가능한 결제 수단이에요. TOSS_MONEY/CARD 또는 null 값을 사용할 수 있어요.

Example: CARD
installmentstring · max: 10Optional

할부 제한 타입이에요. USE(할부 사용, 기본값)/NOT_USE(할부 미사용) 중 하나예요.

Example: USE
isTestPaymentbooleanRequired

샌드박스일 경우 false, 라이브앱일 경우 true예요. true면 실결제가 이루어져요.

Example: false
orderNostring · max: 50Required

가맹점의 상품 주문번호예요. 숫자, 영문자, 특수문자(_-:.^@)를 사용할 수 있어요.

Example: 20250422-01
productDescstring · max: 255Required

상품 설명이에요. 한글이 포함되면 인코딩에 유의해주세요.

Example: 테스트결제
Responses
200

결제 생성 요청이 성공적으로 처리됐어요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/make-payment
POST /api-partner/v1/apps-in-toss/pay/make-payment HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "orderNo": "20250422-01",
  "productDesc": "테스트결제",
  "amount": 1000,
  "amountTaxFree": 0,
  "amountTaxable": 909,
  "amountVat": 91,
  "amountServiceFee": 0,
  "enablePayMethods": "CARD",
  "cashReceipt": false,
  "cashReceiptTradeOption": "GENERAL",
  "installment": "USE",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "payToken": "pay_9f3ac72e8d41b0"
  }
}

결제 실행하기

post

결제 인증이 끝난 결제 건의 승인을 요청해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

사용자 인증이 된 결제 건에 대한 승인 요청 본문이에요.

isTestPaymentbooleanRequired

샌드박스일 경우 false, 라이브앱일 경우 true예요. true면 실결제가 이루어져요.

Example: false
orderNostring · max: 50Optional

가맹점의 상품 주문번호예요. 숫자, 영문자, 특수문자(_-:.^@)를 사용할 수 있어요.

Example: 20250422-01
payTokenstring · max: 30Required

토스페이 토큰이에요. 승인할 결제 건의 토큰값이에요.

Example: pay_9f3ac72e8d41b0
Responses
200

결제 승인 요청이 성공적으로 처리됐어요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/execute-payment
POST /api-partner/v1/apps-in-toss/pay/execute-payment HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "payToken": "pay_9f3ac72e8d41b0",
  "orderNo": "20250422-01",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountNumber": "5678********",
    "amount": 15000,
    "approvalTime": "2025-04-22 13:12:00",
    "cardAuthorizationNo": "A123456789",
    "cardBinNumber": "123456",
    "cardCompanyCode": 25,
    "cardCompanyName": "현대카드",
    "cardMethodType": "CREDIT",
    "cardNum4Print": "1234",
    "cardNumber": "654321******1234",
    "cardUserType": "PERSONAL",
    "cashReceiptMgtKey": "abc123",
    "code": 0,
    "discountedAmount": 12000,
    "errorCode": "INSUFFICIENT_BALANCE",
    "mode": "NORMAL",
    "msg": "잔액이 부족합니다.",
    "noInterest": false,
    "orderNo": "20250422-01",
    "paidAmount": 12000,
    "payMethod": "CARD",
    "payToken": "pay_9f3ac72e8d41b0",
    "salesCheckLinkUrl": "https://pay.toss.im/receipt/abc123",
    "spreadOut": 3,
    "stateMsg": "정상처리",
    "transactionId": "txn_7f3a9c2e81b4"
  }
}

결제 상태 조회하기

post

사용자가 요청한 결제 상태를 조회할 수 있어요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

결제 상태 조회 요청 파라미터예요.

isTestPaymentbooleanRequired

테스트 결제인지 나타내요.

Example: false
orderNostringOptional

주문 번호예요. 요청할 때 이 값과 payToken 둘 중 하나는 필수예요.

Example: ORDER_20250407
payTokenstringOptional

결제를 식별하는 키예요. 요청할 때 이 값과 orderNo 둘 중 하나는 필수예요.

Example: pay_9f3ac72e8d41b0
Responses
200

결제 상태 정보가 반환돼요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/get-payment-status
POST /api-partner/v1/apps-in-toss/pay/get-payment-status HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "payToken": "pay_9f3ac72e8d41b0",
  "orderNo": "ORDER_20250407",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountNumber": "5678********",
    "amount": 15000,
    "amountServiceFee": 0,
    "amountTaxFree": 0,
    "amountTaxable": 10000,
    "amountVat": 1000,
    "card": {
      "cardAuthorizationNo": "A123456789",
      "cardBinNumber": "123456",
      "cardCompanyCode": 25,
      "cardCompanyName": "현대카드",
      "cardMethodType": "SINGLE",
      "cardNum4Print": "1234",
      "cardNumber": "654321******1234",
      "cardUserType": "PERSONAL",
      "noInterest": false,
      "salesCheckLinkUrl": "https://pay.toss.im/receipt/abc123",
      "spreadOut": 3
    },
    "createdTs": "2025-04-07T13:12:00Z",
    "discountAmountV2": 3000,
    "discountedAmount": 12000,
    "disposableCupDeposit": 500,
    "mode": "NORMAL",
    "orderNo": "ORDER_20250407",
    "paidAmount": 10000,
    "paidPointV2": 2000,
    "paidTs": "2025-04-07T13:12:05Z",
    "payMethod": "CARD",
    "payStatus": "DONE",
    "payToken": "pay_9f3ac72e8d41b0",
    "refundableAmount": 8000,
    "transactions": []
  }
}

결제 환불하기

post

결제 건에 대해 환불을 요청할 수 있어요. 환불 가능 여부와 잔액 조건 등을 사전에 확인해주세요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

토스페이 환불을 위한 요청 본문이에요.

amountinteger · int64Optional

환불할 금액이에요. 미입력 시 환불할 결제 건의 남은 전액을 환불 처리해요. 부분환불 시 필수로 amount를 활용해 주세요.

Example: 1000
isTestPaymentbooleanRequired

샌드박스일 경우 false, 라이브앱일 경우 true예요. true면 실결제가 이루어져요.

Example: false
payTokenstring · max: 30Required

토스페이 토큰이에요. 승인할 결제 건의 토큰값이에요.

Example: pay_9f3ac72e8d41b0
reasonstring · max: 55Optional

환불 사유예요.

Example: 고객 단순 변심
Responses
200

환불 요청이 성공적으로 처리됐어요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/refund-payment
POST /api-partner/v1/apps-in-toss/pay/refund-payment HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "payToken": "pay_9f3ac72e8d41b0",
  "amount": 1000,
  "reason": "고객 단순 변심",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountNumber": "5678********",
    "approvalTime": "2025-04-22 13:15:00",
    "cardBinNumber": "123456",
    "cardMethodType": "CREDIT",
    "cardNum4Print": "1234",
    "cardNumber": "654321******1234",
    "cardUserType": "PERSONAL",
    "cashReceiptMgtKey": "abc123",
    "discountedAmount": 0,
    "paidAmount": 1000,
    "payToken": "pay_9f3ac72e8d41b0",
    "refundNo": "20250422-01-R1",
    "refundableAmount": 0,
    "refundedAmount": 1000,
    "refundedDiscountAmount": 0,
    "refundedPaidAmount": 1000,
    "transactionId": "txn_7f3a9c2e81b4"
  }
}

빌링키 생성하기

post

자동결제를 위한 빌링키를 생성해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

빌링키 생성 요청 본문이에요.

isTestPaymentbooleanRequired

테스트 결제 여부예요.

Example: false
productDescstringRequired

자동결제 상품명이에요.

Example: 월간 구독
returnFailureUrlstringOptional

인증 실패 시 이동할 URL이에요.

Example: https://example-partner.com/billing/failure
returnSuccessUrlstringOptional

인증 성공 후 이동할 URL이에요.

Example: https://example-partner.com/billing/success
Responses
200

요청 처리 결과예요. resultType 값으로 성공/실패를 구분하세요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/create-billing-key
POST /api-partner/v1/apps-in-toss/pay/create-billing-key HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "productDesc": "월간 구독",
  "returnSuccessUrl": "https://example-partner.com/billing/success",
  "returnFailureUrl": "https://example-partner.com/billing/failure",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "checkoutAndroidUri": "intent://billing/checkout#Intent;package=viva.republica.toss;end",
    "checkoutIosUri": "supertoss://billing/checkout?token=3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "checkoutUri": "supertoss://billing/checkout?token=3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "wrappedToken": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  }
}

빌링키 상태 조회하기

post

빌링키의 현재 상태를 조회해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

5006

빌링키를 찾을 수 없어요.

5005

비활성화된 빌링키에요.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

빌링키 상태 조회 요청 본문이에요.

isTestPaymentbooleanRequired

테스트 결제 여부예요.

Example: false
wrappedTokenstringRequired

래핑된 빌링키 토큰이에요.

Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Responses
200

요청 처리 결과예요. resultType 값으로 성공/실패를 구분하세요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/get-billing-key-status
POST /api-partner/v1/apps-in-toss/pay/get-billing-key-status HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "wrappedToken": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountImgUrl": "https://pay.toss.im/img/bank.png",
    "accountName": "홍길동",
    "accountNumber": "5678********",
    "billingKeyStatus": "ACTIVE",
    "cardCompanyName": "현대카드",
    "cardCompanyNo": 25,
    "cardImgUrl": "https://pay.toss.im/img/card.png",
    "cardName": "현대카드 the Green",
    "cardNumber": "654321******1234"
  }
}

자동결제 승인하기

post

빌링키를 이용해 결제를 승인해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

5006

빌링키를 찾을 수 없어요.

5005

비활성화된 빌링키에요.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

자동결제 승인 요청 본문이에요.

amountinteger · int64Required

결제 금액이에요.

Example: 1000
amountServiceFeeinteger · int64Optional

봉사료예요.

Example: 0
amountTaxFreeinteger · int64Required

비과세 금액이에요.

Example: 0
amountTaxableinteger · int64Optional

과세 금액이에요.

Example: 909
amountVatinteger · int64Optional

부가세예요.

Example: 91
cashReceiptbooleanOptional

현금영수증 발급 여부예요. 값이 없으면 true로 처리돼요.

Example: true
cashReceiptTradeOptionstringOptional

현금영수증 발급 타입이에요. GENERAL/CULTURE/PUBLIC_TP 중 하나이고, 값이 없으면 GENERAL로 처리돼요.

Example: GENERAL
isTestPaymentbooleanRequired

테스트 결제 여부예요.

Example: false
orderNostringRequired

주문번호예요.

Example: ORDER-20260408-001
productDescstringRequired

상품 설명이에요.

Example: 월간 구독 결제
sendFailPushbooleanOptional

결제 실패 시 푸시 발송 여부예요. 값이 없으면 true로 처리돼요.

Example: true
spreadOutinteger · int32Required

할부 개월 수예요. 0이면 일시불이에요.

Example: 0
wrappedTokenstringRequired

래핑된 빌링키 토큰이에요.

Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Responses
200

요청 처리 결과예요. resultType 값으로 성공/실패를 구분하세요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/execute-billing
POST /api-partner/v1/apps-in-toss/pay/execute-billing HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "wrappedToken": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "orderNo": "ORDER-20260408-001",
  "productDesc": "월간 구독 결제",
  "spreadOut": 0,
  "amount": 1000,
  "amountTaxFree": 0,
  "amountTaxable": 909,
  "amountVat": 91,
  "amountServiceFee": 0,
  "cashReceipt": true,
  "sendFailPush": true,
  "cashReceiptTradeOption": "GENERAL",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountNumber": "5678********",
    "amount": 50000,
    "approvalTime": "2026-05-21 10:00:00",
    "cardAuthorizationNo": "A123456789",
    "cardBinNumber": "123456",
    "cardCompanyCode": 25,
    "cardCompanyName": "현대카드",
    "cardMethodType": "CREDIT",
    "cardNum4Print": "1234",
    "cardNumber": "654321******1234",
    "cardUserType": "PERSONAL",
    "cashReceiptMgtKey": "abc123",
    "code": 0,
    "discountedAmount": 45000,
    "errorCode": "COMMON_BILLING_KEY_NOT_FOUND",
    "mode": "NORMAL",
    "msg": "등록된 빌링키를 찾을 수 없어요.",
    "noInterest": false,
    "orderNo": "ORDER-20260408-001",
    "paidAmount": 45000,
    "payMethod": "CARD",
    "payToken": "pay_9f3ac72e8d41b0",
    "salesCheckLinkUrl": "https://pay.toss.im/receipt/abc123",
    "spreadOut": 0,
    "transactionId": "txn_7f3a9c2e81b4"
  }
}

자동결제 환불하기

post

자동결제로 승인된 결제 건을 환불해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

자동결제 환불 요청 본문이에요.

isTestPaymentbooleanRequired

테스트 결제 여부예요.

Example: false
payTokenstringRequired

환불할 자동결제 건의 토스페이 토큰이에요.

Example: pay_9f3ac72e8d41b0
reasonstringOptional

환불 사유예요.

Example: 고객 단순 변심
Responses
200

요청 처리 결과예요. resultType 값으로 성공/실패를 구분하세요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/refund-billing
POST /api-partner/v1/apps-in-toss/pay/refund-billing HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "payToken": "pay_9f3ac72e8d41b0",
  "reason": "고객 단순 변심",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "accountBankCode": "88",
    "accountBankName": "신한은행",
    "accountNumber": "5678********",
    "approvalTime": "2026-05-21 10:00:00",
    "cardBinNumber": "123456",
    "cardMethodType": "CREDIT",
    "cardNum4Print": "1234",
    "cardNumber": "654321******1234",
    "cardUserType": "PERSONAL",
    "cashReceiptMgtKey": "abc123",
    "discountedAmount": 2000,
    "paidAmount": 10000,
    "payToken": "pay_9f3ac72e8d41b0",
    "refundNo": "20250422-01-R1",
    "refundableAmount": 8000,
    "refundedAmount": 5000,
    "refundedDiscountAmount": 1000,
    "refundedPaidAmount": 4000,
    "transactionId": "txn_7f3a9c2e81b4"
  }
}

빌링키 삭제하기

post

빌링키를 삭제(해지)해요.

비즈니스 오류 코드

아래 오류는 HTTP 200과 resultType: FAIL로 응답해요.

errorCode
설명

5001

토스페이 청약이 되어 있지 않습니다.

5006

빌링키를 찾을 수 없어요.

4010

인증 정보를 찾을 수 없어요.

4095

요청 한도를 초과했습니다. 잠시 후 다시 시도해주세요.

이 API는 연동된 내부 시스템의 오류 코드를 그대로 전달할 수 있어요. 문서화되지 않은 errorCode는 실패로 처리하고 reason 메시지를 참고하세요.

요청 한도: 앱당 분당 3,000회

Authorizations
mutualTLS

파트너에게 발급된 클라이언트 인증서 기반 mTLS 인증이에요. 인증서의 CN으로 미니앱을 식별해요. 인증서 발급·관리 방법은 서버 API 이용하기 문서를 참고하세요.

Header parameters
x-toss-user-keystringOptional

사용자를 인증하기 위한 키예요. 사용자 정보 받기 API를 통해 획득할 수 있어요

Example: 12345678
x-anon-keystringOptional

사용자를 인증하기 위한 키예요. 미니앱 SDK의 User.getAnonymousKey 함수로 발급받을 수 있어요

Example: kQ7pL2mZxN9wRt5vB8yD3jF6cA1
Body

빌링키 삭제 요청 본문이에요.

isTestPaymentbooleanRequired

테스트 결제 여부예요.

Example: false
wrappedTokenstringRequired

래핑된 빌링키 토큰이에요.

Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Responses
200

요청 처리 결과예요. resultType 값으로 성공/실패를 구분하세요.

application/json
or
post/api-partner/v1/apps-in-toss/pay/remove-billing-key
POST /api-partner/v1/apps-in-toss/pay/remove-billing-key HTTP/1.1
Host: pay-apps-in-toss-api.toss.im
x-toss-user-key: {userKey}
Content-Type: application/json

{
  "wrappedToken": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "isTestPayment": false
}
{
  "resultType": "SUCCESS",
  "success": {
    "code": 0,
    "msg": "등록된 빌링키를 찾을 수 없어요."
  }
}

도움이 되었나요?