Processing flow
Cash receipt issuance and cancellation are asynchronous. The API first returns202 Accepted and an issuanceKey. Check the final result via webhook or the status API.
- Webhook - the API sends a result event to your registered URL. Register a webhook to receive results without polling.
- Status API - query the current status with
Bolta-Client-Reference-Id.
202 means that the API accepted the request. It does not confirm issuance or cancellation. Always check the final result via webhook or the status API.- Test key - You can retrieve the final status as soon as the request is processed. The automatic webhook is sent no sooner than 10 seconds after the API accepts the request.
- Live key - Some results are finalized quickly. A request that remains in progress or needs its issuance result confirmed can be finalized after 17:00 KST on the following day.
Issuance
To issue a cash receipt, callPOST /v1/cashReceipts.
Register the supplier with the Register Issuer API, then register its certificate. See Certificate Registration Integration.
If the same API key retries with the same client reference ID, request content, and request type, the API returns
202 Accepted with the existing request’s issuanceKey. If the request content or type differs, the API returns 409 Conflict with IDEMPOTENCY_CONFLICT. This rule applies to both issuance and cancellation requests.issuanceKey). Store it for cancellation requests.
Recipient types
Setrecipient.value based on recipient.type.
Supplier information
Amount
Set each field inamount to no more than 9,999,999,999. The total (supplyAmount + vatAmount + taxFreeAmount) must also be no greater than 9,999,999,999 and greater than 0. If you omit taxFreeAmount, the API treats it as 0.
Status
Query the processing status with theBolta-Client-Reference-Id used in the issuance or cancellation request.
status to determine success or failure. If the request failed, check failure for details. With a test key, the status can become final after the request is processed before the automatic webhook arrives at least 10 seconds later.
After successful issuance, the API also returns the cash receipt approval number in
cashReceiptApprovalNumber.
Do not resubmit a live-key request just because it remains PENDING or REQUEST_SUCCESS. A request that remains in progress or needs its issuance result confirmed can be finalized after 17:00 KST on the following day. Check the final result via the status API or webhook.
Cancellation
You can fully cancel a cash receipt whose issuance processing was accepted. You can cancel it before its Hometax issuance is final, but not while the original request isPENDING. Partial cancellation is not supported. Set {issuanceKey} in the path to the issuanceKey from the issuance response.
Set the cancellation request’s
Bolta-Client-Reference-Id to a different value from the issuance request. Check the final result via webhook or the status API.Reproducing a failure webhook (testing)
When calling the issuance or cancellation API with a test key, set theBolta-Webhook-Test-Code header to a failure code. The API sends the corresponding failure webhook. Do not use this header in production (live).
Related documents
- Cash receipt webhooks - cash receipt result event payloads
- Error codes - cash receipt failure codes
- Authentication guide -
Authorization,Bolta-Client-Reference-Id - API Reference - request/response schemas
