가이드/결제 깊이 이해하기/세금 처리
목차

을 설정해서 결제하거나 취소하는 방법을 이해할 수 있어요.

계산 등 세금 처리와 관련한 내용을 살펴봅세요.

세금 용어 이해하기

면세 상품, 과세 상품, 또는 면세와 과세 상품이 섞여있는 복합 과세 결제에서는 아래 파라미터를 확인하세요.

금액계산식설명
면세 상품 가격taxFreeAmount면세 상품 공급가액(부가가치세 면제)
과세 상품 가격suppliedAmount + vat과세 상품 공급가액 + 부가가치세
복합 과세 상품 가격taxFreeAmount + suppliedAmount + vat면세 상품 가격 + 과세 상품 가격
부가가치세(vat)(totalAmount - taxFreeAmount) / 11 후 반올림(결제 금액 - 면세 금액) / 11 후 반올림
과세 상품 공급가액
(suppliedAmount)
totalAmount - taxFreeAmount - vat결제 금액 - 면세 금액 - 부가가치세
결제 취소 후 남은 면세 금액balanceAmount - suppliedAmount - vat결제 취소 후 남은 금액 - 공급가액 - 부가가치세

상점 타입

토스페이먼츠에서는 아래와 같이 과세 상점과 면세 상점, 복합 과세 상점을 구분하고 있습니다. 상점 타입은 계약할 때 설정할 수 있어요. 복합 과세 상점은 결제, 결제 취소, 현금영수증 발급을 요청할 때 면세 금액 taxFreeAmount 파라미터를 설정해야 돼요. 복합 과세 결제만 면세 금액이 변동되기 때문입니다.

상점 타입설명taxFreeAmount 설정
면세 상점면세 상품만 판매합니다. 총 결제 금액과 면세 금액이 항상 같습니다.
totalAmount = taxFreeAmount

면세 금액이 항상 결제 금액과 같기 때문에 설정 필요 없음
과세 상점과세 상품(면세 상품 외 모든 상품)만 판매합니다. 면세 금액이 항상 항상 0입니다.
taxFreeAmount = 0

면세 금액이 항상 0이기 때문에 설정 필요 없음
복합 과세 상점과세, 면세 상품을 모두 판매합니다. 계약 시 기본적으로 설정되는 값입니다. 구매한 상품 종류에 따라 총 면세 금액이 바뀝니다.
totalAmount = taxFreeAmount+suppliedAmount+vat

면세 금액이 변동하기 때문에 설정 필요
영세율 상점수출, 외화 획득을 위한 상품을 판매합니다. 총 결제 금액과 면세 금액이 항상 같습니다.
totalAmount = taxFreeAmount

면세 금액이 항상 결제 금액과 같기 때문에 설정 필요 없음

상점 설정은 복합 과세 상점이 기본입니다. 상점 타입을 변경하고 싶다면 토스페이먼츠 고객센터(1544-7772, support@tosspayments.com)로 문의해주세요.

면세 금액 설정한 뒤 결제하기

면세 상품과 일반 과세 상품을 함께 결제하는 복합 과세 상점은 아래와 같이 결제를 요청하세요.

1. 결제 요청에 면세 금액 파라미터 taxFreeAmount를 추가하세요.

결제위젯을 사용하고 있다면 requestPayment() 메서드에 taxFreeAmount 파라미터를 추가하세요. 결제 요청을 마치고 결제 승인까지 완료하세요. 자세한 내용은 결제위젯 연동 가이드를 참고하세요.

결제 요청
JavaScript
paymentWidget.requestPayment({
orderId: '',
orderName: '토스 티셔츠 외 2건',
taxFreeAmount: 3000,
successUrl: 'http://localhost:8080/success',
failUrl: 'http://localhost:8080/fail',
customerEmail: 'customer123@gmail.com',
customerName: '김토스'
})

2. 응답으로 돌아온 공급가액(suppliedAmount), 부가가치세(vat), 면세 금액(taxFreeAmount)을 확인하세요.

응답
JSON
{
"mId": "tvivarepublica4",
"version": "2022-11-16",
"lastTransactionKey": "",
"paymentKey": "",
"status": "DONE",
"transactionKey": "",
"lastTransactionKey": "",
"orderId": "",
"orderName": "토스 티셔츠 외 2건",
//...
"currency": "KRW",
"totalAmount": 10000,
"balanceAmount": 10000,
"suppliedAmount": 6364,
"vat": 636,
"taxFreeAmount": 3000,
"method": "카드"
}

면세 금액을 포함한 상품의 결제에서

  • 공급가액은 총 결제 금액에서 면세 금액과 부가가치세를 빼서 계산한 결과인 6,364원입니다.

    • 전체 금액 10,000원 - 면세 금액 3,000원 - 부가가치세 636원 = 6,364원
  • 부가가치세는 총 결제 금액에서 면세 금액을 뺀 값을 11로 나눈 후 소수점 첫째 자리를 반올림해서 계산한 결과인 636원입니다.

    • (전체 금액 10,000원 - 면세 금액 3,000원) / 11 후 소수점 첫째 자리 반올림 = 636원

부분 취소하기

면세 금액이 포함된 결제를 부분 취소하는 방법을 알아봅니다.

Case 1. 면세 금액에서만 부분 취소를 하고 싶을 때

면세 금액에서만 부분 취소를 하려면 결제 취소 API 파라미터에 취소할 면세 금액(taxFreeAmount)을 추가하세요. 취소할 면세 금액을 추가하지 않으면 공급가액(suppliedAmount)에서만 취소가 발생합니다.

전체 결제 금액 10,000원 중 면세 금액 3,000원에서만 결제를 취소하려면 아래와 같이 취소할 금액과 취소할 면세 금액을 똑같이 설정합니다.

면세 금액에서만 취소가 발생했기 때문에 suppliedAmountvat가 처음 결제가 일어났을 때와 동일합니다.

응답
JSON
{
"mId": "tosspayments",
"version": "2022-11-16",
"lastTransactionKey": "",
"paymentKey": "",
"status": "CANCELED",
"transactionKey": "",
"lastTransactionKey": "",
"orderId": "",
"orderName": "책, 북마크",
"requestedAt": "2021-01-01T10:01:30+09:00",
"approvedAt": "2021-01-01T10:05:40+09:00",
"useEscrow": false,
"cultureExpense": false,
"checkout": {
"url": "https://api.tosspayments.com/v1/payments//checkout"
},
"card": {
"issuerCode": "33",
"acquirerCode": "31",
"number": "12341234****123*",
"installmentPlanMonths": 0,
"isInterestFree": false,
"interestPayer": null,
"approveNo": "00000000",
"useCardPoint": false,
"cardType": "신용",
"ownerType": "개인",
"acquireStatus": "READY"
},
"virtualAccount": null,
"transfer": null,
"mobilePhone": null,
"giftCertificate": null,
"cashReceipt": null,
"cashReceipts": null,
"discount": null,
"cancels": [
{
"cancelReason": "테스트",
"canceledAt": "2022-04-12T21:00:30+09:00",
"cancelAmount": 3000,
"taxFreeAmount": 3000,
"refundableAmount": 0,
"easyPayDiscountAmount": 0,
"transactionKey": "45330506F30C4B3FF3249C3EAC1523FA",
"receiptKey": "DQVp20NDNgiBC0W3kS2Mb375FCroMjMTH2R8B6O5FP3HHU6Q",
"cancelStatus": "DONE",
"cancelRequestId": null
}
],
"secret": null,
"type": "NORMAL",
"easyPay": null,
"country": "KR",
"failure": null,
"isPartialCancelable": true,
"currency": "KRW",
"totalAmount": 10000,
"balanceAmount": 7000,
"suppliedAmount": 6364,
"vat": 636,
"taxFreeAmount": 3000,
"method": "CARD"
}

Case 2. 취소할 금액의 일부만 면세 금액일 때

취소하려는 금액 중 일부 금액이 면세 금액인 예시를 알아봅니다.

Case 1과 동일하게 전체 결제 금액 10,000원 중 면세 금액이 3,000원이고 취소하려는 금액은 4,000원 입니다. 취소하려는 금액 중 면세 금액은 1,000원 일 때 아래와 같이 취소 금액과 취소할 면세 금액을 설정합니다.

공급가액에서도 취소가 발생했기 때문에 suppliedAmountvat가 다시 계산된 값으로 응답이 내려갑니다.

응답
JSON
{
"mId": "tosspayments",
"version": "2022-11-16",
"lastTransactionKey": "",
"paymentKey": "",
"status": "CANCELED",
"transactionKey": "",
"lastTransactionKey": "",
"orderId": "",
"orderName": "책, 북마크",
"requestedAt": "2021-01-01T10:01:30+09:00",
"approvedAt": "2021-01-01T10:05:40+09:00",
"useEscrow": false,
"cultureExpense": false,
"checkout": {
"url": "https://api.tosspayments.com/v1/payments//checkout"
},
"card": {
"issuerCode": "33",
"acquirerCode": "31",
"number": "12341234****123*",
"installmentPlanMonths": 0,
"isInterestFree": false,
"interestPayer": null,
"approveNo": "00000000",
"useCardPoint": false,
"cardType": "신용",
"ownerType": "개인",
"acquireStatus": "READY"
},
"virtualAccount": null,
"transfer": null,
"mobilePhone": null,
"giftCertificate": null,
"cashReceipt": null,
"cashReceipts": null,
"discount": null,
"cancels": [
{
"cancelReason": "테스트",
"canceledAt": "2022-04-12T21:32:35+09:00",
"cancelAmount": 4000,
"taxFreeAmount": 1000,
"refundableAmount": 6000,
"easyPayDiscountAmount": 0,
"transactionKey": "98A6382330TF43F3EFBA333EAC152C24",
"receiptKey": "bxZg2oCEo70wRYxIShU6LxHA4nHwazfoPJWri09s1iIjOOb1",
"cancelStatus": "DONE",
"cancelRequestId": null
}
],
"secret": null,
"type": "NORMAL",
"easyPay": null,
"country": "KR",
"failure": null,
"isPartialCancelable": true,
"currency": "KRW",
"totalAmount": 10000,
"balanceAmount": 6000,
"suppliedAmount": 3636,
"vat": 364,
"taxFreeAmount": 3000,
"method": "CARD"
}

부분 취소 후 부가가치세는 최초 결제 시 부가가치세에서 취소 금액의 부가가치세를 뺀 364원이 됩니다.

  • [(총 결제 금액 10,000원 - 총 면세 금액 3,000원) / 11] - [(총 취소 금액 4,000원 - 취소 금액 중 면세 금액 1,000) / 11]

공급가액은 최초의 공급가액에서 부분 취소 후 남은 공급가액을 뺀 3,636원이 됩니다.

  • (총 결제 금액 10,000원 - 총 면세 금액 3,000원 - 총 부가가치세 636원) - (남은 전체 금액 6,000원 - 남은 면세 금액 2,000원 - 남은 부가가치세 364원)

부분 취소 후 남은 면세 금액을 계산하고 싶을 때

Payment.taxFreeAmount는 항상 최초 결제의 면세 금액으로 유지됩니다.

만약 결제 취소 후 남은 면세 금액을 알고 싶다면, 결제 취소 후 남은 금액(balanceAmount)에서 남은 공급가액(suppliedAmount)과 부가가치세(vat)를 빼면 됩니다.

위 예시에서는 남은 전체 금액 6,000원 - 공급가액 3,636원 - 부가가치세 364원의 결과인 2,000원이 남은 면세 금액입니다.

Case 3. 전체 취소 할 때

전체 취소를 할 때는 총 결제 금액에 포함된 공급가액이 함께 취소되므로 다른 처리를 하지 않아도 됩니다.

  • 더 궁금한 내용이 있나요?
  • 코드 샘플을 참고하세요
  • 기술지원이 필요한가요?
    실시간 문의|이메일 보내기