현금영수증 발급
POST /v1/cash-receipts 로 주문과 관계없이 현금영수증 발급을 요청해요.
POST /v1/cash-receipts
현금영수증 발급을 요청해요. 주문이 결제 완료될 때 자동으로 발급하려면 이 API 대신 주문 생성에서 cashReceipt를 넣으세요.
발급은 현금영수증 발급 대행사(팝빌)를 거쳐 국세청으로 전달돼요. 요청 직후 status는 PENDING이고, 국세청 처리 결과가 오면 ISSUED나 FAILED로 바뀌어요. 결과는 현금영수증 단건 조회로 확인하세요.
요청 본문
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
type |
string | 예 | PERSONAL(소득공제용) 또는 CORPORATE(지출증빙용)예요. |
identifier |
string | 예 | PERSONAL이면 휴대폰 번호나 현금영수증 카드 번호 숫자 10~18자리, CORPORATE이면 사업자등록번호 숫자 10자리예요. 하이픈과 공백은 빼고 검사해요. |
amount |
integer | 예 | 부가세를 포함한 거래 금액(원)이에요. 1원부터 999,999,999원까지예요. |
과세 유형과 품목명은 대시보드 현금영수증 > 발급 설정을 따라요. 과세로 설정했다면 amount를 공급가액과 부가세로 나눠서 신고해요. 부가세는 amount의 11분의 1을 반올림한 값이에요.
팝빌이 발급 요청을 거절하면 POPBILL_API_FAILED가 와요. 거절된 현금영수증은 v1 API에서 보이지 않고, 대시보드 현금영수증에 실패 사유와 함께 남아요. 대시보드나 v2 재발급 API로 다시 발급할 수 있어요.
요청 예시
curl -X POST https://api.paysync.kr/v1/cash-receipts \
-H "Authorization: Bearer $PAYSYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "PERSONAL",
"identifier": "01012345678",
"amount": 50000
}'const res = await fetch("https://api.paysync.kr/v1/cash-receipts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PAYSYNC_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ type: "PERSONAL", identifier: "01012345678", amount: 50000 }),
});
const { code, data } = await res.json();import os
import requests
res = requests.post(
"https://api.paysync.kr/v1/cash-receipts",
headers={"Authorization": f"Bearer {os.environ['PAYSYNC_API_KEY']}"},
json={"type": "PERSONAL", "identifier": "01012345678", "amount": 50000},
)
print(res.json())응답
201 CREATED와 함께 현금영수증 객체가 와요.
{
"code": "CREATED",
"data": {
"id": "crt_a1b2c3d4e5f6g7h8i9j0k1l2",
"status": "PENDING",
"issuerId": "acc_x9y8z7w6v5u4t3s2r1q0p9o8",
"corpNum": "1234567890",
"type": "PERSONAL",
"identifier": "01012345678",
"amount": 50000,
"relatedInvoiceId": null,
"ntsConfirmNum": "TB0000123",
"ntsResultCode": null,
"issuedAt": "2026-04-28T03:14:15.000+00:00",
"revokedAt": null,
"deletedAt": null
}
}
오류
| HTTP | code |
발생 조건 |
|---|---|---|
| 400 | BAD_REQUEST |
JSON 본문을 읽을 수 없거나, 필수 필드가 없거나, type이 PERSONAL, CORPORATE가 아니에요. |
| 401 | NOT_AUTHORIZED |
API 키가 없거나 올바르지 않아요. |
| 403 | INSUFFICIENT_PERMISSIONS |
읽기 전용 API 키예요. |
| 404 | BUSINESS_INFO_NOT_REGISTERED |
사업자 정보를 등록하지 않았어요. |
| 422 | INVALID_CASH_RECEIPT_IDENTIFIER |
identifier가 type에 맞는 형식이 아니에요. |
| 422 | INVALID_CASH_RECEIPT_AMOUNT |
amount가 1원부터 999,999,999원 사이가 아니에요. |
| 500 | POPBILL_API_FAILED |
팝빌이 발급 요청을 거절했거나 팝빌 호출이 실패했어요. 대시보드에서 실패 사유를 확인하세요. |