PortOne Payments API

The Payments API from PortOne — 18 operation(s) for payments.

OpenAPI Specification

portone-payments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: PortOne B2b Payments API
  version: 1.16.0
servers:
- url: https://api.portone.io
  description: 운영환경 서버
tags:
- name: Payments
paths:
  /payments/{paymentId}/billing-key:
    post:
      summary: 빌링키 결제
      description: '빌링키 결제


        빌링키로 결제를 진행합니다.'
      operationId: payWithBillingKey
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingKeyPaymentInput'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우

            * `PromotionPayMethodDoesNotMatchError`: 결제수단이 프로모션에 지정된 것과 일치하지 않는 경우

            * `DiscountAmountExceedsTotalAmountError`: 프로모션 할인 금액이 결제 시도 금액 이상인 경우

            * `MaxTransactionCountReachedError`: 결제 혹은 본인인증 시도 횟수가 최대에 도달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
        '404':
          description: '* `BillingKeyNotFoundError`: 빌링키가 존재하지 않는 경우

            * `ChannelNotFoundError`: 요청된 채널이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
        '409':
          description: '* `AlreadyPaidError`: 결제가 이미 완료된 경우

            * `SumOfPartsExceedsTotalAmountError`: 면세 금액 등 하위 항목들의 합이 전체 결제 금액을 초과한 경우

            * `BillingKeyAlreadyDeletedError`: 빌링키가 이미 삭제된 경우

            * `PaymentScheduleAlreadyExistsError`: 결제 예약건이 이미 존재하는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayWithBillingKeyError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 빌링키 결제
      x-portone-description: 빌링키로 결제를 진행합니다.
      x-portone-error:
        $ref: '#/components/schemas/PayWithBillingKeyError'
      tags:
      - Payments
  /payments/{paymentId}/cancel:
    post:
      summary: 결제 취소
      description: '결제 취소


        결제 취소를 요청합니다.'
      operationId: cancelPayment
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelPaymentBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우

            * `NegativePromotionAdjustedCancelAmountError`: 프로모션에 의해 조정된 취소 금액이 음수인 경우

            * `PromotionDiscountRetainOptionShouldNotBeChangedError`: 프로모션 혜택 유지 옵션을 이전 부분 취소와 다른 것으로 입력한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
        '409':
          description: '* `PaymentNotPaidError`: 결제가 완료되지 않은 경우

            * `PaymentAlreadyCancelledError`: 결제가 이미 취소된 경우

            * `CancellableAmountConsistencyBrokenError`: 취소 가능 잔액 검증에 실패한 경우

            * `CancelAmountExceedsCancellableAmountError`: 결제 취소 금액이 취소 가능 금액을 초과한 경우

            * `SumOfPartsExceedsCancelAmountError`: 면세 금액 등 하위 항목들의 합이 전체 취소 금액을 초과한 경우

            * `CancelTaxFreeAmountExceedsCancellableTaxFreeAmountError`: 취소 면세 금액이 취소 가능한 면세 금액을 초과한 경우

            * `CancelTaxAmountExceedsCancellableTaxAmountError`: 취소 과세 금액이 취소 가능한 과세 금액을 초과한 경우

            * `MaxCancelCountReachedError`: 취소 시도 횟수가 초과된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelPaymentError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 결제 취소
      x-portone-description: 결제 취소를 요청합니다.
      x-portone-error:
        $ref: '#/components/schemas/CancelPaymentError'
      tags:
      - Payments
  /payments/{paymentId}/cancellations/{cancellationId}/stop:
    post:
      summary: 결제 취소 요청 취소
      description: '결제 취소 요청 취소


        비동기적으로 수행되는 결제 취소 요청을 취소합니다.

        Triple-A에서만 사용됩니다.'
      operationId: stopPaymentCancellation
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      - name: cancellationId
        in: path
        description: 취소 요청 아이디
        required: true
        schema:
          type: string
        x-portone-title: 취소 요청 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StopPaymentCancellationBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
        '404':
          description: '* `PaymentCancellationNotFoundError`: 결제 취소 내역이 존재하지 않는 경우

            * `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
        '409':
          description: '* `PaymentCancellationNotPendingError`: 결제 취소 내역이 취소 요청 상태가 아닌 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StopPaymentCancellationError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 결제 취소 요청 취소
      x-portone-description: '비동기적으로 수행되는 결제 취소 요청을 취소합니다.

        Triple-A에서만 사용됩니다.'
      x-portone-error:
        $ref: '#/components/schemas/StopPaymentCancellationError'
      tags:
      - Payments
  /payments/{paymentId}/capture:
    post:
      summary: 수동 매입
      description: '수동 매입


        수동 매입을 요청합니다. PG 및 포트원과의 사전 협의가 필요합니다.'
      operationId: capturePayment
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CapturePaymentBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
        '409':
          description: '* `PaymentNotPaidError`: 결제가 완료되지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapturePaymentError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 수동 매입
      x-portone-description: 수동 매입을 요청합니다. PG 및 포트원과의 사전 협의가 필요합니다.
      x-portone-error:
        $ref: '#/components/schemas/CapturePaymentError'
      tags:
      - Payments
  /payments/{paymentId}/cash-receipt/cancel:
    post:
      summary: 현금 영수증 취소
      description: '현금 영수증 취소


        현금 영수증 취소를 요청합니다.'
      operationId: cancelCashReceiptByPaymentId
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      - name: storeId
        in: query
        description: '상점 아이디


          접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.'
        required: false
        schema:
          type: string
        x-portone-title: 상점 아이디
        x-portone-description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptError'
        '404':
          description: '* `CashReceiptNotIssuedError`: 현금영수증이 발급되지 않은 경우

            * `CashReceiptNotFoundError`: 현금영수증이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelCashReceiptError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.cashReceipt
      x-portone-title: 현금 영수증 취소
      x-portone-description: 현금 영수증 취소를 요청합니다.
      x-portone-error:
        $ref: '#/components/schemas/CancelCashReceiptError'
      tags:
      - Payments
  /payments/{paymentId}/cash-receipt:
    get:
      summary: 현금 영수증 단건 조회
      description: '현금 영수증 단건 조회


        주어진 결제 아이디에 대응되는 현금 영수증 내역을 조회합니다.'
      operationId: getCashReceiptByPaymentId
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      - name: storeId
        in: query
        description: '상점 아이디


          접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.'
        required: false
        schema:
          type: string
        x-portone-title: 상점 아이디
        x-portone-description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
      responses:
        '200':
          description: 성공 응답으로 현금 영수증 객체를 반환합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CashReceipt'
          x-portone-description: 성공 응답으로 현금 영수증 객체를 반환합니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCashReceiptError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCashReceiptError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCashReceiptError'
        '404':
          description: '* `CashReceiptNotFoundError`: 현금영수증이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCashReceiptError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.cashReceipt
      x-portone-title: 현금 영수증 단건 조회
      x-portone-description: 주어진 결제 아이디에 대응되는 현금 영수증 내역을 조회합니다.
      x-portone-error:
        $ref: '#/components/schemas/GetCashReceiptError'
      tags:
      - Payments
  /payments/{paymentId}/confirm:
    post:
      summary: 인증 결제 수동 승인
      description: '인증 결제 수동 승인


        수동 승인으로 설정된 인증 결제에 대해, 결제를 완료 처리합니다.'
      operationId: confirmPayment
      parameters:
      - name: paymentId
        in: path
        description: 결제 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 아이디
      requestBody:
        description: 결제 승인 요청 정보
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmPaymentBody'
        required: true
        x-portone-title: 결제 승인 요청 정보
      responses:
        '200':
          description: 성공 응답으로 결제 승인 결과를 반환합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmedPaymentSummary'
          x-portone-title: 성공 응답으로 결제 승인 결과를 반환합니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우

            * `InvalidPaymentTokenError`: 유효하지 않은 결제 토큰인 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
        '409':
          description: '* `AlreadyPaidError`: 결제가 이미 완료된 경우

            * `InformationMismatchError`: 정보가 일치하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmPaymentError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 인증 결제 수동 승인
      x-portone-description: 수동 승인으로 설정된 인증 결제에 대해, 결제를 완료 처리합니다.
      x-portone-error:
        $ref: '#/components/schemas/ConfirmPaymentError'
      tags:
      - Payments
  /payments/{paymentId}/escrow/complete:
    post:
      summary: 에스크로 구매 확정
      description: '에스크로 구매 확정


        에스크로 결제를 구매 확정 처리합니다'
      operationId: confirmEscrow
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmEscrowBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
        '409':
          description: '* `PaymentNotPaidError`: 결제가 완료되지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmEscrowError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 에스크로 구매 확정
      x-portone-description: 에스크로 결제를 구매 확정 처리합니다
      x-portone-error:
        $ref: '#/components/schemas/ConfirmEscrowError'
      tags:
      - Payments
  /payments/{paymentId}/escrow/logistics:
    post:
      summary: 에스크로 배송 정보 등록
      description: '에스크로 배송 정보 등록


        에스크로 배송 정보를 등록합니다.'
      operationId: applyEscrowLogistics
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterEscrowLogisticsBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
        '409':
          description: '* `PaymentNotPaidError`: 결제가 완료되지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyEscrowLogisticsError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 에스크로 배송 정보 등록
      x-portone-description: 에스크로 배송 정보를 등록합니다.
      x-portone-error:
        $ref: '#/components/schemas/ApplyEscrowLogisticsError'
      tags:
      - Payments
    patch:
      summary: 에스크로 배송 정보 수정
      description: '에스크로 배송 정보 수정


        에스크로 배송 정보를 수정합니다.'
      operationId: modifyEscrowLogistics
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyEscrowLogisticsBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
        '404':
          description: '* `PaymentNotFoundError`: 결제 건이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
        '409':
          description: '* `PaymentNotPaidError`: 결제가 완료되지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModifyEscrowLogisticsError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 에스크로 배송 정보 수정
      x-portone-description: 에스크로 배송 정보를 수정합니다.
      x-portone-error:
        $ref: '#/components/schemas/ModifyEscrowLogisticsError'
      tags:
      - Payments
  /payments/{paymentId}/instant:
    post:
      summary: 수기 결제
      description: '수기 결제


        카드 비인증 결제 또는 가상 계좌 발급을 API로 요청합니다.'
      operationId: payInstantly
      parameters:
      - name: paymentId
        in: path
        description: 결제 건 아이디
        required: true
        schema:
          type: string
        x-portone-title: 결제 건 아이디
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstantPaymentInput'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우

            * `PromotionPayMethodDoesNotMatchError`: 결제수단이 프로모션에 지정된 것과 일치하지 않는 경우

            * `DiscountAmountExceedsTotalAmountError`: 프로모션 할인 금액이 결제 시도 금액 이상인 경우

            * `MaxTransactionCountReachedError`: 결제 혹은 본인인증 시도 횟수가 최대에 도달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
        '404':
          description: '* `ChannelNotFoundError`: 요청된 채널이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
        '409':
          description: '* `AlreadyPaidError`: 결제가 이미 완료된 경우

            * `SumOfPartsExceedsTotalAmountError`: 면세 금액 등 하위 항목들의 합이 전체 결제 금액을 초과한 경우

            * `PaymentScheduleAlreadyExistsError`: 결제 예약건이 이미 존재하는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInstantlyError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment
      x-portone-title: 수기 결제
      x-portone-description: 카드 비�

# --- truncated at 32 KB (287 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/portone/refs/heads/main/openapi/portone-payments-api-openapi.yml