본문으로 건너뛰기
페이싱크 개발자센터
Esc
↑↓이동↵열기⌘J미리보기
이 페이지에서

현금영수증 취소

POST /v2/cash-receipts/{id}/cancel 로 발급된 현금영수증의 전체나 일부 금액을 취소해요.

POST /v2/cash-receipts/{id}/cancel

국세청 발급이 끝난(ISSUED) 원본 현금영수증을 취소해요. 페이싱크가 취소 금액만큼 취소 영수증(kind: CANCELLATION)을 발급하고, 응답으로 그 취소 영수증을 돌려줘요. 금액 일부만 취소할 수 있고, 남은 금액은 다시 나눠서 취소할 수 있어요.

원본 금액 전체가 취소되면 원본의 status가 CANCELED로 바뀌어요. 일부만 취소하면 원본은 ISSUED로 남고 canceledAmount, remainingAmount가 바뀌어요.

원본 상태 취소 가능 여부
PENDING 국세청 처리가 끝난 뒤에 취소할 수 있어요. 보통 다음 날 오전 10시 이후예요.
ISSUED 취소할 수 있어요.
FAILED 발급되지 않아서 취소할 수 없어요.
CANCELED 이미 전액 취소했어요.

취소 영수증은 다시 취소할 수 없어요.

경로 파라미터

파라미터 타입 설명
id string 취소할 원본 현금영수증 ID예요. crt_로 시작해요.

요청 본문

필드 타입 필수 설명
reason string 예 취소 사유예요. 1~100자예요. 거래 취소, 오류 발급, 그 밖의 사유로 나눠서 국세청에 신고해요.
amount integer 취소할 금액(원)이에요. 빼면 남은 금액 전체를 취소해요. 남은 금액보다 클 수 없어요.

부분 취소의 공급가액과 부가세는 취소 금액으로 다시 계산해요. 마지막 취소는 남은 공급가액과 부가세를 모두 가져가서, 원본과 취소 영수증의 합계가 맞아요.

요청 예시

curl -X POST https://api.paysync.kr/v2/cash-receipts/crt_a1b2c3d4e5f6g7h8i9j0k1l2/cancel \
  -H "Authorization: Bearer $PAYSYNC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "amount": 20000, "reason": "거래 취소" }'
const res = await fetch(`https://api.paysync.kr/v2/cash-receipts/${cashReceiptId}/cancel`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PAYSYNC_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ amount: 20000, reason: "거래 취소" }),
});
const { code, data } = await res.json();
import os
import requests

res = requests.post(
    f"https://api.paysync.kr/v2/cash-receipts/{cash_receipt_id}/cancel",
    headers={"Authorization": f"Bearer {os.environ['PAYSYNC_API_KEY']}"},
    json={"amount": 20000, "reason": "거래 취소"},
)
print(res.json())

응답

새로 만든 취소 영수증이 현금영수증 객체로 와요.

{
  "code": "10001",
  "data": {
    "id": "crt_c3d4e5f6g7h8i9j0k1l2m3n4",
    "kind": "CANCELLATION",
    "status": "PENDING",
    "amount": 20000,
    "supplyCost": 18182,
    "tax": 1818,
    "originalId": "crt_a1b2c3d4e5f6g7h8i9j0k1l2",
    "partial": true,
    "cancelReason": "거래 취소",
    "...": "..."
  }
}

오류

HTTP code 발생 조건
401 290006 API 키가 올바르지 않아요.
403 290007 읽기 전용 API 키예요.
404 20015 현금영수증이 없어요.
409 240006 취소할 수 없는 상태예요. data.reason은 NTS_PENDING, NOT_ISSUED, FULLY_CANCELED, CANCELLATION_RECEIPT 중 하나이고, data.message에 안내 문구가 와요.
422 30007 JSON 본문을 읽을 수 없거나 reason이 없어요.
422 240001 현금영수증 ID 형식이 틀렸어요.
422 240004 amount가 0 이하이거나 남은 금액보다 커요.
422 240008 팝빌이 취소를 거절했어요. data에 status가 FAILED인 취소 영수증이 와요. 원본은 그대로예요.
422 240010 reason이 비었거나 100자를 넘어요.

이 페이지가 도움이 되었나요?