License Submission
Submit the property's licenses (the license document and the business registration certificate) to ONDA for review. You can submit as soon as the property is created. For the overall order of steps, see the Initial Setup overview.
A Plus channel can be opened only for a property whose license document (permit) and business registration (business) are both approved (confirm). Approval of only one is not enough, so check both before requesting a channel opening.
A property holds one permit and one business document. Submitting the same type several times does not register several documents; only the most recently confirmed request is the current document. To replace a document, submit a new one. While the new one is pending or after it is rejected, the previously approved document remains current; it is replaced only when the new one reaches confirm.
| Method | Path | Description |
|---|---|---|
POST | .../{vendor_property_id}/licenses | Submit a document (one request per document) |
GET | .../{vendor_property_id}/licenses | List submissions (newest first) |
GET | .../{vendor_property_id}/licenses/{request_id} | Get a submission (including status history) |
The list skips offset requests (default 0) and returns up to limit (default 100, max 500). count holds the property's total number of requests.
Document types
Set the document type with type, and put the document fields and file in data.
type | Document | Required data fields |
|---|---|---|
permit | License document (business report certificate, tourism business registration, rural homestay registration, etc.) | type (license type code), number (report/registration number), date (report/registration date), file |
business | Business registration certificate | type (corporation / personal), number (10-digit business registration number), owner_name (representative), open_date (business opening date), file |
- For a corporation (
corporation),name(business name),address(business address),industry(industry), andcategory(business category) are also required. They are optional for a sole proprietor. - Maximum lengths:
permitnumber254 /businessowner_name128,nameandaddress254,industryandcategory64 /comment(both) 16,000 characters - Dates use
YYYY-MM-DD; future dates are rejected (Korea time). - The business registration number is accepted with or without hyphens.
- Use
comment(optional) for notes to the reviewer.
License type codes (data.type for permit)
| Code | License type |
|---|---|
general_lodging | General lodging business |
residential_lodging | Residential lodging business |
foreign_tourist_urban_homestay | Urban homestay for foreign tourists |
hanok_experience | Hanok experience |
rural_homestay | Rural homestay |
tourist_hotel | Tourist hotel |
floating_tourist_hotel | Floating tourist hotel |
korean_traditional_hotel | Korean traditional hotel |
family_hotel | Family hotel |
hostel | Hostel |
small_hotel | Small hotel |
medical_tourism_hotel | Medical tourism hotel |
youth_hostel | Youth hostel |
resort_condominium | Resort condominium |
tourist_pension | Tourist pension |
resort_pension | Resort pension business |
general_campground | General campground business |
auto_campground | Auto campground business |
forest_lodge | Forest lodge / forest recreation lodge |
gosiwon | Gosiwon |
shared_homestay | Shared homestay business |
specialized_resort | Specialized resort business |
File rules
| Item | Rule |
|---|---|
| Transfer | Base64-encoded string in data.file (file names are not accepted) |
| Supported formats | jpeg, png, gif, webp, pdf (detected from the file content) |
| Unsupported formats | HEIC, AVIF, etc. |
| Image size | At least 450px wide and 200px tall |
| File size | Up to 10MB per file (base64 encoding makes the request body about 1.33 times larger) |
Request examples
License document (permit)
{
"type": "permit",
"data": {
"type": "general_lodging",
"number": "No. 2026-00123",
"date": "2026-03-02",
"file": "JVBERi0xLjQKJeLjz9MK..."
},
"comment": "Document reissued in March 2026."
}
Business registration (business) — corporation
{
"type": "business",
"data": {
"type": "corporation",
"number": "123-45-67891",
"owner_name": "Hong Gil-dong",
"open_date": "2020-05-01",
"name": "Example Hotel Co., Ltd.",
"address": "1 Teheran-ro, Gangnam-gu, Seoul",
"industry": "Lodging",
"category": "Hotel",
"file": "JVBERi0xLjQKJeLjz9MK..."
}
}
For a sole proprietor (personal), name, address, industry, and category can be omitted.
The file values above are shortened for brevity. Send the whole file encoded as base64; a truncated value returns 400.
Error responses
| Code | When |
|---|---|
400 | A required field is missing or malformed: an unsupported type, a data.type not in the code list, a business registration number with an invalid length or checksum, a future date, a file that cannot be read as base64, or a corporation missing name, address, industry, or category. Also returned for an out-of-range offset or limit in the list, and a request_id that is not a positive integer in the detail lookup |
404 | vendor_property_id is not a property of this vendor. In the detail lookup, also when request_id is not a request for that property |
413 | The request body is too large |
422 | Unsupported file format (unsupported formats such as HEIC and AVIF), Image must be at least 450x200 pixels (image too small), Image conversion failed (the image could not be converted to JPG) |
Review status
- Resubmitting while a
pendingrequest of the same type exists changes the earlier request torejectwithSuperseded by request {new request ID}inreason. If the new request is rejected with400or422, the earlier request stays as it is. - Check the rejection reason in
reasonfrom the list or detail lookup, then fix the document and submit again. histories(status history) in the detail lookup is newest first. The file is not returned (has_fileonly shows whether one is stored), and the last 5 digits of the business registration number are masked.- A
commentor optional field that was not submitted, and areasonwith no status change reason, are returned asnull. A license type not in the code list comes back asdata.type: null.