> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bolta.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Document Issuance

> Issue National Tax Service certificates such as a business registration proof or tax payment certificate from Hometax, or a certified copy of corporate registry, and download the original PDF.

## What you can issue

Issue National Tax Service certificates from Hometax or a certified copy of corporate registry, and download the original PDF. The API accepts the request first and issues the document afterward. Retrieve the result with the `issuanceKey` from the accepted response.

| Path                                      | Purpose                      |
| ----------------------------------------- | ---------------------------- |
| `POST /v1/documentIssuances`              | Request a document           |
| `GET /v1/documentIssuances/{issuanceKey}` | Retrieve the issuance result |

## Requirements

* Hometax documents are issued for the business that owns the API key. Register a joint certificate in the Bolta dashboard.
* A corporate registry is issued for the corporation in `document.corporationNumber`. Supported corporation types are stock company, limited company, general partnership company, limited partnership company, limited liability company, incorporated association, incorporated foundation, medical corporation, cooperative (including social cooperative), and other corporate entity (such as a patent corporation). No joint certificate is needed.

## Pricing

Each document deducts the points below. A failed issuance deducts nothing.

| Document                                               | Price per document |
| ------------------------------------------------------ | ------------------ |
| Hometax documents (5 types)                            | 500 points         |
| Certified copy of corporate registry (view copy)       | 1,000 points       |
| Certified copy of corporate registry (submission copy) | 1,500 points       |

## Supported documents

| `document.type`                      | Document                                               | Input                                                                                                                               |
| ------------------------------------ | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `BUSINESS_REGISTRATION_PROOF`        | Business registration proof                            | `language`: `KO`, `EN`                                                                                                              |
| `BUSINESS_REGISTRATION_CERTIFICATE`  | Business registration certificate reissue              | `reason`: reissue reason, up to 10 characters                                                                                       |
| `TAX_PAYMENT_CERTIFICATE`            | Tax payment certificate                                | `purpose`: `PAYMENT_RECEIPT`, `OTHER`                                                                                               |
| `VAT_TAX_BASE_PROOF`                 | VAT tax base proof                                     | `from`, `to`: tax period `YYYY-MM`                                                                                                  |
| `STANDARD_FINANCIAL_STATEMENT_PROOF` | Standard financial statement proof                     | `fiscalYearEnd`: fiscal year end `YYYY-MM`                                                                                          |
| `CORPORATE_REGISTRY_VIEW`            | Certified copy of corporate registry (view copy)       | `corporationNumber`: 13-digit corporation registration number, `cancelledEntries`: `INCLUDE` (include cancelled entries), `EXCLUDE` |
| `CORPORATE_REGISTRY_ISSUANCE`        | Certified copy of corporate registry (submission copy) | `corporationNumber`: 13-digit corporation registration number, `cancelledEntries`: `INCLUDE` (include cancelled entries), `EXCLUDE` |

* **Business registration certificate reissue**: Bolta prints `reason` as is on the certificate. Enter the actual reason, for example `분실` (lost). The API trims leading and trailing spaces. It returns `400 INVALID_REQUEST` if the reason is empty, longer than 10 characters, or contains control characters.
* **Business registration proof**: If `language` is missing, the API returns `400 INVALID_REQUEST`. Bolta issues the English version (`EN`) with the English business information registered in Hometax. If that information is missing or malformed, the request ends as `FAILED` and deducts no points. To change the English details, update them in Hometax first.
* **Tax payment certificate**: Hometax does not issue it while national taxes are in arrears. The certificate is valid for 30 days from the issue date.
* **VAT tax base proof**: Set `from` to January or July and `to` to June or December. `from` cannot be later than `to`; otherwise the API returns `400 INVALID_REQUEST`. One request covers up to five years.
* **Standard financial statement proof**: For a corporation with a December year end, enter `2025-12` for fiscal year 2025. For a sole proprietor, only the year is used. Only fiscal years with a filed corporate or comprehensive income tax return can be issued. For a fiscal year that has not ended (a year end in or after the current month), the API returns `400 PERIOD_NOT_CLOSED` and reserves no points. If the fiscal year has ended but the return is not filed yet, the request ends as `FAILED` and deducts no points.
* **Certified copy of corporate registry**: Bolta issues it from the Internet Registry Office. Enter `corporationNumber` as digits only, such as `1101111234567`, or with a hyphen, such as `110111-1234567`. If the format is wrong, the API returns `400 INVALID_REQUEST`. Set `cancelledEntries` to choose whether cancelled entries are included. If you omit it, the API returns `400 INVALID_REQUEST`. The view copy is for checking the contents. Request the submission copy when you need to submit the document to a government office or bank. If another request is issuing the same document with the same `cancelledEntries` for the same corporation, the API returns `409 TARGET_BUSY`. Request again after that request finishes.

## Issuance hours

| Document                | Request hours                |
| ----------------------- | ---------------------------- |
| Tax payment certificate | 06:00 to 22:00 KST every day |
| Other documents         | 24 hours                     |

Outside the request hours, the API returns `409 OUTSIDE_SERVICE_HOURS` and reserves no points. Request again during the request hours.

If Hometax does not accept the request, such as during maintenance, the request ends as `FAILED` and deducts no points. Request again shortly.

## Request a document

```bash theme={"dark"}
curl -X POST https://xapi.bolta.io/v1/documentIssuances \
  -H "Authorization: Basic {apiKey}" \
  -H "Bolta-Client-Reference-Id: order-20260919-001" \
  -H "Content-Type: application/json" \
  -d '{
    "document": { "type": "BUSINESS_REGISTRATION_PROOF", "language": "KO" }
  }'
```

For a corporate registry, put the corporation registration number and the cancelled entries choice in `document`.

```json theme={"dark"}
{
  "document": { "type": "CORPORATE_REGISTRY_ISSUANCE", "corporationNumber": "110111-1234567", "cancelledEntries": "EXCLUDE" }
}
```

Set a new `Bolta-Client-Reference-Id` (1 to 255 characters) for each request. If you did not receive a response, resend the same value and body. The API returns the existing request.

The API returns `202 Accepted` with the response below.

```json theme={"dark"}
{
  "issuanceKey": "00000000-0000-4000-8000-000000000001",
  "clientReferenceId": "order-20260919-001",
  "type": "BUSINESS_REGISTRATION_PROOF",
  "language": "KO",
  "status": "ACCEPTED",
  "requestedAt": "2026-09-19T03:00:00Z",
  "issuedOn": null,
  "retentionExpiresAt": null,
  "downloadUrl": null,
  "downloadUrlExpiresAt": null
}
```

The response `language` is the language of the issued document. It is always `KO` for documents other than the business registration proof.

## Retrieve the result

```bash theme={"dark"}
curl https://xapi.bolta.io/v1/documentIssuances/{issuanceKey} \
  -H "Authorization: Basic {apiKey}"
```

Hometax documents usually finish within 30 seconds. Poll every 5 to 10 seconds. If you send several Hometax document requests for the same business, each request starts after the previous one finishes. If the wait exceeds 1 hour, the request changes to `FAILED` and deducts no points.

A corporate registry takes a few minutes, and longer when requests pile up. A corporation registration number that the Internet Registry Office cannot find, a corporation with no active registry because it was dissolved or closed, and an unsupported corporation type end as `FAILED` and deduct no points. For a corporation with branches or a changed trade name, Bolta issues the head office's current registry.

| `status`          | Meaning                                         | Next step                                                                                                                                                                                                                                                                                         |
| ----------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ACCEPTED`        | Accepted, not yet submitted to the agency       | Wait                                                                                                                                                                                                                                                                                              |
| `SUBMITTED`       | Submitted to the agency, waiting for the result | Wait                                                                                                                                                                                                                                                                                              |
| `COMPLETED`       | Issued                                          | Download from `downloadUrl`                                                                                                                                                                                                                                                                       |
| `FAILED`          | Issuance failed                                 | For Hometax documents, check the certificate, tax arrears, and filing status. For a corporate registry, check the corporation registration number and the corporation's type and status. If nothing is wrong, request again shortly. Use a new `Bolta-Client-Reference-Id` when you request again |
| `ACTION_REQUIRED` | Bolta is checking the result                    | Do not request the same document again. It changes to `COMPLETED` or `FAILED` after the check                                                                                                                                                                                                     |

A `COMPLETED` response fills in these fields.

| Field                  | Description                                                                                        |
| ---------------------- | -------------------------------------------------------------------------------------------------- |
| `issuedOn`             | Issue date printed on the original PDF (view or issue date for a corporate registry), `YYYY-MM-DD` |
| `retentionExpiresAt`   | Retention end time. 30 days after issuance                                                         |
| `downloadUrl`          | Original PDF URL. Valid for 5 minutes for Hometax documents and 1 minute for a corporate registry  |
| `downloadUrlExpiresAt` | URL expiry time                                                                                    |

When the URL expires, retrieve the result again to get a new one. After the retention period, `downloadUrl` is `null`.

The downloaded file is named `{document name}_{business registration number}_{issue date}.pdf` with the Korean document name, for example `사업자등록증명_123-45-67890_20260919.pdf`. An English proof starts with `사업자등록증명(영문)_...`. A corporate registry uses the corporation registration number instead of the business registration number: `법인등기열람_110111-1234567_20260922.pdf` for a view copy and `법인등기발급_...` for a submission copy. Clients that do not support UTF-8 file names get an ASCII name such as `business-registration-proof_1234567890_20260919.pdf`. The same document downloaded more than once on the same day gets the same file name, so store the file together with its `issuanceKey`.

## Test key

Test keys do not submit to any agency and deduct no points.

* Hometax documents always end as `COMPLETED` right away.
* A corporate registry gets its result from `corporationNumber`. Test keys accept only the numbers below. For any other number, the API returns `400 INVALID_REQUEST`.

| `corporationNumber` | Result                 |
| ------------------- | ---------------------- |
| `1100000000014`     | `COMPLETED` right away |
| `1100000000071`     | `FAILED` right away    |

The `COMPLETED` result includes a sample PDF URL. The sample is not a real document and has the same content for every document type. The sample URL is valid for 5 minutes, and its issue date is fixed at January 1, 2026. Retrieving again after expiry and the file naming rule work the same as live issuance, so use a test key to check your download integration.

## Errors

| Status code | Error code                             | Condition                                                                                                                                                                                                                                                 |
| ----------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`       | `INVALID_REQUEST`                      | Invalid request format, missing `language` for a business registration proof, invalid corporation registration number, missing `cancelledEntries` for a corporate registry, or a test key request with a corporation registration number outside the list |
| `400`       | `PERIOD_NOT_CLOSED`                    | The fiscal year of the standard financial statement proof has not ended. Request a fiscal year with a filed return                                                                                                                                        |
| `401`       | -                                      | API key authentication failed. Empty response body                                                                                                                                                                                                        |
| `402`       | `PAYMENT_REQUIRED`                     | Insufficient point balance. Top up in the Developer Center                                                                                                                                                                                                |
| `404`       | `DOCUMENT_ISSUANCE_NOT_FOUND`          | Unknown `issuanceKey`, or a request accepted under another partner or with a key of the other mode                                                                                                                                                        |
| `409`       | `CERTIFICATE_REQUIRED`                 | Joint certificate not registered or expired. Hometax documents only                                                                                                                                                                                       |
| `409`       | `IDEMPOTENCY_CONFLICT`                 | Different body for the same `Bolta-Client-Reference-Id`                                                                                                                                                                                                   |
| `409`       | `OUTSIDE_SERVICE_HOURS`                | Requested outside the document's request hours. See [Issuance hours](#issuance-hours)                                                                                                                                                                     |
| `409`       | `TARGET_BUSY`                          | Another request is issuing the same corporate registry document with the same `cancelledEntries` for the same corporation. Request again after it finishes                                                                                                |
| `409`       | `POINT_RESERVED_BY_IN_FLIGHT_REQUESTS` | Balance is short once requests in progress are counted. Top up, or request again after they finish                                                                                                                                                        |
| `429`       | `TOO_MANY_IN_FLIGHT`                   | Five requests are already in progress. Requests sent at the same time are also accepted only up to five. Request again after they finish                                                                                                                  |
| `503`       | `DOCUMENT_ISSUANCE_UNAVAILABLE`        | Bolta cannot issue the document right now. No points are reserved. Request again shortly                                                                                                                                                                  |
