API integration

Tax invoice and cash receipt APIs inside your own product

Connect your own sales, delegated issuance for your customers, and reverse issuance for purchases. Create an API key after signup with no sales call or contract, and test for free.

Tax invoice API integration

Use cases

Whose tax invoice are you issuing?

Choose based on who the supplier and the recipient are in each transaction. A single platform can connect its own sales issuance, delegated issuance for clients, and reverse issuance for purchases at the same time.

Your own sales

Issue your own sales invoices automatically

Connect it when your ERP or back office confirms a sale, or when you bill SaaS fees. Your company is the supplier and issues to the buying counterparty.

Supplier
Your company
Recipient
Buying counterparty
  1. Confirm the transaction and amount
  2. Request standard issuance from your system
  3. Apply the issuance result

A platform's own fees and commissions are your own sales too. Your integrated system owns the recurring billing schedule.

Request and issuance direction for Your own sales

API request

  1. Your system
  2. Bolta API

Tax invoice issuance

  1. SupplierYour company
  2. RecipientBuying counterparty

Delegated issuance for customer sales

Issue your customers' sales invoices for them

Connect it when you offer issuance to merchants, carriers, or other customers on your platform. The customer is the supplier and your platform calls the API on their behalf.

Supplier
Your customer
Recipient
Your customer's buyer
  1. Register the customer's certificate and confirm the sale
  2. Request standard issuance from the platform
  3. Report the result back to the customer

A merchant's sales and your platform's own commission are different transactions. Issue each against its own supplier.

Request and issuance direction for Delegated issuance for customer sales

API request

  1. Platform
  2. Bolta API

Tax invoice issuance

  1. SupplierYour customer
  2. RecipientYour customer's buyer

Purchases and settlement

Request the invoices your purchases and settlements need

Connect it when your company confirms a purchase and asks the counterparty to issue. The recipient writes the details and the supplying counterparty approves.

Supplier
Counterparty
Recipient
Your company
  1. Confirm the purchase or settlement
  2. Request reverse issuance
  3. Supplier approves
  4. Confirm the result

Not every settlement workflow is reverse issuance. Even when a platform handles a customer's purchases, choose based on who actually supplies and who receives.

Request and issuance direction for Purchases and settlement

API request

  1. Buyer-side system
  2. Bolta API

Supplier approval request

  1. Your company, the recipient
  2. Counterparty, the supplier

Tax invoice issuance

  1. SupplierCounterparty
  2. RecipientYour company

Capabilities

Pick the issuance method that fits the transaction

How does delegated issuance differ from brokered issuance?

They use different certificates and different transaction details. Calling the API from a platform does not by itself make an issuance brokered.

Integration flow

Check the integration flow for each issuance type

Check who registers the certificate and whether supplier approval is required. For reverse issuance, pick either email approval or simple approval depending on how your team works.

Delegated issuance for customer sales

See the parties and the use case

Delegated issuance

Prepare
The platform registers the customer as an issuer and shares the registration URL. The customer, who is the supplier, registers their own joint certificate.
Request
The platform sends the customer's transaction details to request standard issuance.
Approve
There is no per-invoice supplier approval step as there is in reverse issuance. Issuance proceeds with the customer's certificate.

Purchases and settlement

See the parties and the use case

Reverse issuance with email approval

Prepare
Register the supplier as an issuer. You can request without registering the supplier's certificate in advance.
Request
Include the supplier contact's email in the reverse issuance request. Bolta sends the approval email.
Approve
The supplier opens the emailed link and approves in Bolta.

Reverse issuance with simple approval

Prepare
Register the supplier as an issuer and share the registration URL. The supplier registers their own joint certificate.
Request
After the request, take the approval URL and open it in a new tab or navigate the supplier to it. The URL is valid for 10 minutes.
Approve
The supplier opens the approval URL your system surfaced and approves it.

When certificate registration is required

The certificate owner completes registration at the registration URL. Once they return to your service, query the result through the API. A certificate must be registered again once it expires.

See the certificate registration flow (opens in a new tab)

Tell acceptance, approval, and issuance results apart

An API response means the request was accepted. Reverse issuance then waits for supplier approval. Confirm the final success or failure through a webhook or the query API and reflect it in your own screens.

Issuance result guide (opens in a new tab)

Build and operate

Walk through issuance with a test key

Nothing is sent to the NTS and no points are charged. Validate the flows you need with a test key, and use a test certificate for methods that require one.

  1. 01

    Create a test key

    Sign up for Bolta, create a workspace, then create a test_ key in the Developer Center.

  2. 02

    Prepare issuance for your type

    Register your own certificate for your own sales, or the customer's for delegated issuance. For reverse issuance, prepare for email or simple approval. Use test certificates where a test needs one.

  3. 03

    Send the request and read the result

    Send the transaction details and the API returns an acceptance response. Confirm the issuance result afterwards through a webhook or the lookup API.

Standard issuance test request · cURL

POST/v1/taxInvoices/issue

Replace the values highlighted in orange with your own.

curl -X POST https://xapi.bolta.io/v1/taxInvoices/issue \
  --user 'test_YOUR_API_KEY:' \
  -H 'Bolta-Client-Reference-Id: YOUR_UNIQUE_REFERENCE_ID' \
  -H 'Content-Type: application/json' \
  -d 'request body below'
Show the request bodyHide the request bodyJSON
{
  "date": "YYYY-MM-DD",
  "purpose": "RECEIPT",
  "taxType": "TAXABLE",
  "supplier": {
    "identificationNumber": "SUPPLIER_BUSINESS_NUMBER",
    "organizationName": "공급자 상호",
    "representativeName": "홍길동",
    "manager": {
      "email": "supplier@example.com"
    }
  },
  "supplied": {
    "identificationNumber": "RECIPIENT_BUSINESS_NUMBER",
    "organizationName": "공급받는자 상호",
    "representativeName": "김철수",
    "managers": [
      {
        "email": "recipient@example.com"
      }
    ]
  },
  "items": [
    {
      "date": "YYYY-MM-DD",
      "name": "테스트 품목",
      "unitPrice": 10000,
      "quantity": 1,
      "supplyCost": 10000,
      "tax": 1000
    }
  ]
}

Acceptance response example

{
  "issuanceKey": "EXAMPLE_ISSUANCE_KEY"
}

Confirming the final result

issuanceKey is the acceptance response.

Receive the success or failure webhook, or confirm the result through the query API.

Replace the API key, both dates, and the business registration numbers of the supplier and the recipient with real values. Dates use the YYYY-MM-DD format and must fall within the issuance deadline. Use a client reference ID you have not used before. The copy button copies the request body along with the command.

You can also prepare the data in a no-code tool and request issuance from there. Setup steps and supported scope are in each tool's guide.

Results

From issuance results to delivery history

Review delivery history in the event log

The Developer Center records webhook delivery successes, failures, and details per API key. A successful delivery does not mean successful issuance, so check the issuance result too.

See how to use the event log (opens in a new tab)
Webhook delivery status and event details in the Developer Center
Event log in the Developer Center. This is the sample screen from the public guide. It shows delivery success or failure, the event type, and the details.
See error codes for failed requests (opens in a new tab)

Pricing

Pricing and what to check before going live

The API is a separate product from the web subscription. You pay only for what you use, with no paid plan and no separate contract.

API pricing by capability

Scroll the table sideways to see every column.

API pricing by capability
FeaturePriceDescription
Standard issuanceKRW 90 eachAn ordinary tax invoice the supplier writes and issues
Reverse issuanceKRW 200 eachThe recipient writes and requests it; the supplier approves
Amended issuanceKRW 90 eachCorrecting an issued invoice with a reason code
Cash receiptsFreeIncome deduction, expense evidence, and voluntary issuance
WebhooksFreeIssuance results posted to the URL you register
SandboxFreeVerify the integration with a test key and no real issuance
Minimum spendNoneNo monthly base fee, support fee, or maintenance fee

Testing is free, paid issuance runs on prepaid points

Test keys never consume points. Top up points before requesting paid issuance in live. Requests fail when the balance runs out.

See how point top-ups work (opens in a new tab)

Before you go live

Check the issuer and certificate registration and approval steps for your integration type, your live key and webhook settings, and your point balance. Test and live keys and webhooks are managed separately.

See full pricing

Manage what happens after issuance with transaction management and payment requests. Each page covers its features and subscription terms.

Customer stories

How customers connected

See more customer stories (Korean) (opens in a new tab)
오더체크 logo

Verified the integration in test

“The live test environment let us verify immediately, and we finished the integration in a day.”
오더체크
브랜더진 logo

Issuing from the back office

“Being able to issue invoices straight from our back office made the work far easier.”
브랜더진
모먼트 스튜디오 logo

Issuance wired into Notion

“We issue from Notion, which is already open all day, with no context switch. It saves 15 minutes daily.”
모먼트 스튜디오

FAQ

Questions teams ask before integrating

Look through the answers below. If you need something more specific, send us an inquiry.

Contact us
Do I need to contact sales or sign a separate contract for the API?

No. Sign up for Bolta and generate test and live API keys in Developer Center to get started.

Do I need a paid subscription to use only the API?

No. Web subscriptions and the API are separate products. Generate an API key in Developer Center without a paid subscription and pay only for what you use.

Can one platform use several integration types at once?

Yes. Choose per transaction based on who the supplier and recipient are. Issue your platform's own fees and commissions as your own sales, and issue a merchant's sales on that merchant's behalf. Use reverse issuance when you write up a purchase and ask the supplier to approve it.

How does delegated issuance differ from brokered issuance?

Delegated issuance requests issuance with the certificate of the customer who is the supplier. Brokered issuance uses the trustee's certificate and sends supplier, recipient, and trustee details together. Calling the API as a platform does not by itself make an issuance brokered.

What do the two reverse approval methods need?

Both register the supplier as an issuer. Email approval works without registering the supplier's certificate in advance; the supplier opens the link Bolta emails them and approves. Simple approval requires the supplier to register a certificate first, then your system points them at an approval URL. In both cases the supplier has to approve in person.

What do I need before issuing for real?

Standard issuance requires an issuer and a registered joint certificate. Reverse issuance needs different preparation depending on the approval method. Top up points in the Developer Center before requesting paid issuance with a live key.

Does testing send anything to the NTS?

No. Test keys (test_) verify the integration without sending to the NTS and do not deduct points. Test certificates are available too. Live keys (live_) are for real issuance.

Does an API response mean the invoice was issued?

An issuanceKey response means the request was accepted. Confirm the final result through a webhook or the lookup API. Webhook timing differs between tax invoices and cash receipts.

If I get no response, can I just send the request again?

For tax invoices, look up the acceptance status with the reference id you sent. Reusing the same reference id raises a duplicate request error. Cash receipts handle duplicates differently, so follow the per-product rules in the authentication guide.

Which languages does the API support?

Any language or environment that can send an HTTP request. The API docs include request examples per language. Per-language HTTP examples and official SDKs are not the same thing.

Can I connect with a no-code tool?

Bolta provides Zapier and Make guides. Prepare the data your issuance needs in that tool, then configure API authentication and the request. Each guide covers its own scope and setup.

How long does an integration take?

It depends on the issuance methods and on how you register and approve customers. Verify the flows you need in the free test environment first, then switch to a live key.

How is API usage billed?

Standard and amended issuance deduct KRW 90 each and reverse issuance KRW 200 each from prepaid points. There is no minimum spend, support fee, or maintenance fee. You need a remaining point balance to request paid issuance.

Sign up and start integrating

Create your own API key with no sales call or contract, and pay only for what you issue.

Create an API key