토스페이 연동가이드
시작하기

5. 결제 승인과 콜백 처리하기

이 단계에서는 결제를 최종 완료 처리해요. 2단계에서 설정한 autoExecute 값에 따라 가맹점이 할 일이 달라져요.

  • autoExecute: true로 생성했다면 토스가 자동으로 승인하니, 가맹점은 콜백을 받아서 결제 완료를 확인해요.
  • autoExecute: false로 생성했다면 가맹점이 승인 API를 직접 호출해서 결제를 완료해요.

자동 승인이면 콜백으로 완료 확인하기

autoExecute: true로 결제를 생성했다면, 토스는 출금을 완료한 뒤 결제 생성 시 전달받은 resultCallback URL로 결제 결과를 POST 요청해요. 가맹점 서버는 이 콜백을 받았을 때 주문을 결제 완료 상태로 변경하고 재고 차감 같은 후속 로직을 처리하면 돼요.

콜백 V2 기준으로 다음과 같은 본문이 전달돼요. 카드 결제라면 카드 승인 정보가 함께 포함돼요.

{
  "status": "PAY_COMPLETE",
  "payToken": "example-payToken",
  "orderNo": "2026-0712-000001",
  "payMethod": "CARD",
  "amount": 35000,
  "discountedAmount": 0,
  "paidAmount": 35000,
  "paidTs": "2026-07-12 14:22:37",
  "transactionId": "dc3b951a-9781-462e-ab5a-b8a0bea0222a"
}
  • status에는 결제 완료 시 PAY_COMPLETE가 전달돼요. 결제 완료 이외의 상태는 콜백으로 전달되지 않아요.
  • paidAmount는 할인 금액을 제외하고 실제 지불 수단으로 승인된 금액이에요.

카드 승인 정보를 포함한 전체 필드는 결제 결과 callback 레퍼런스에서 확인할 수 있어요.

콜백을 받으려면 방화벽을 먼저 확인하세요. 가맹점 서버가 자체 방화벽을 사용한다면 토스페이의 IP를 허용해야 콜백이 도착해요. 방화벽 정보를 확인하세요.

수동 승인이면 승인 API 호출하기

autoExecute: false로 결제를 생성했다면, 4단계에서 PAY_APPROVED 상태를 확인한 뒤 재고 확인 같은 검증을 마치고 승인 API를 호출해요. 승인이 완료되어야 실제 출금이 일어나요.

결제 승인 API Endpoint
POST https://pay.toss.im/api/v2/execute

결제를 생성한 상점의 apiKey와 승인할 결제 건의 payToken 두 가지만 있으면 돼요.

curl https://pay.toss.im/api/v2/execute \
-H "Content-Type: application/json" \
-d '{
  "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq",
  "payToken": "example-payToken"
}'

결제 금액 검증 같은 선택 파라미터는 가맹점 결제 승인 레퍼런스에서 확인할 수 있어요.

응답을 못 받았다면 결제 상태 확인하기

네트워크 문제로 승인 응답이나 콜백을 받지 못할 수도 있어요. 이럴 때는 결제 상태 확인 API로 해당 결제 건의 현재 상태를 직접 조회할 수 있어요. apiKeypayToken(또는 orderNo)으로 조회해요.

결제 상태 확인 API Endpoint
POST https://pay.toss.im/api/v2/status

curl https://pay.toss.im/api/v2/status \
-H "Content-Type: application/json" \
-d '{
  "apiKey": "sk_test_w5lNQylNqa5lNQe013Nq",
  "payToken": "example-payToken"
}'

응답의 payStatusPAY_COMPLETE면 결제가 완료된 거예요. retUrl 파라미터와 콜백 본문에서는 필드명이 status였지만, 상태 확인 API 응답에서는 payStatus라는 이름으로 같은 상태 값을 전달해요. 상태 값 전체 목록은 결제 상태 레퍼런스를 참고하세요.

다음 단계

첫 결제를 완주했어요. 이제 실제 오픈 전에 점검할 것들이 남았어요. 6. 테스트와 라이브 전환하기로 이동하세요.