{
"code": "validation_error",
"message": "서버 내부 오류입니다",
"errors": [
{
"field": "event_type",
"message": "공백일 수 없습니다"
}
]
}
{
"code": "validation_error",
"message": "서버 내부 오류입니다",
"errors": [
{
"field": "event_type",
"message": "공백일 수 없습니다"
}
]
}
{
"code": "validation_error",
"message": "서버 내부 오류입니다",
"errors": [
{
"field": "event_type",
"message": "공백일 수 없습니다"
}
]
}
{
"code": "validation_error",
"message": "서버 내부 오류입니다",
"errors": [
{
"field": "event_type",
"message": "공백일 수 없습니다"
}
]
}
{
"code": "validation_error",
"message": "서버 내부 오류입니다",
"errors": [
{
"field": "event_type",
"message": "공백일 수 없습니다"
}
]
}
인보이스
인보이스 목록 조회
확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다.
customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다.
달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.
supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다.
lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다.
cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다.
cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MeterEngine","description":"MeterEngine 도입사를 위한 연동 가이드와 API 참조","colors":{"primary":"#5746ad"},"api":{"playground":{"display":"interactive","proxy":true},"examples":{"languages":["bash","node"]}},"navbar":{"primary":{"type":"button","label":"콘솔 열기","href":"https://meterengine.com"}},"search":{"prompt":"가이드와 API 검색"},"seo":{"metatags":{"canonical":"https://docs.meterengine.com"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"ko","default":true,"href":""}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meterengine","hasAudioNarration":false,"actualSubdomain":"meterengine","customDomains":[],"gitSource":{"type":"github","owner":"asm17-ms2","repo":"meterengine","deployBranch":"main","contentDirectory":"guide","isPrivate":false,"mountPath":"","label":"","_id":"6af407799a58d6755c1f99cb"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af41107e02ab65c314d17b4","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"ko","tag":"API 참조","count":84},{"language":"ko","tag":"엔드포인트","count":83},{"language":"ko","tag":"가이드","count":44},{"language":"ko","tag":"검색과 내보내기","count":15},{"language":"ko","tag":"웹훅","count":13},{"language":"ko","tag":"결제 연동","count":9},{"language":"ko","tag":"미터","count":7},{"language":"ko","tag":"고객","count":7},{"language":"ko","tag":"가격 설계","count":6},{"language":"ko","tag":"이벤트","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/invoice-controller/인보이스-목록-조회","slug":"/api-reference/invoice-controller/인보이스-목록-조회","pageMetadata":{"title":"인보이스 목록 조회","description":"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다.\ncustomer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다.\n달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.\nsupply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다.\nlines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다.\ncutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다.\ncutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices","href":"/api-reference/invoice-controller/인보이스-목록-조회","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다.\\ncustomer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다.\\n달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.\\nsupply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다.\\nlines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다.\\ncutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다.\\ncutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"인보이스 목록 조회","description":"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다.\ncustomer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다.\n달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.\nsupply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다.\nlines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다.\ncutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다.\ncutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices","href":"/api-reference/invoice-controller/인보이스-목록-조회","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다.\ncustomer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다.\n달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.\nsupply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다.\nlines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다.\ncutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다.\ncutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\n","operationId":"listInvoices","parameters":["5ae238a3-7c55-44db-bc58-bae638bbd5e6","6bd57730-c873-4bf7-bb1e-12a56c03d660"],"responses":{"200":"c4d662d1-f112-4062-b051-1a54efbb3aa0","400":"10683d02-ca75-412b-95e8-51821107aa23","401":"b4c76147-290f-48f9-a281-244ae4ff47f4","403":"a7a2f3c3-0e2e-4ce9-9dcf-064e6c41e4bc","404":"b395376c-4b24-40c3-91a0-a7d9e401ae61","429":"21d1a2cf-50d6-4d01-aa79-c959794b2f6b"},"summary":"인보이스 목록 조회","tags":["invoice-controller"],"method":"get","type":"path","servers":["0cef6632-74ea-4650-a4d5-583aade483b9"],"security":["3fd7dd2d-a237-4414-93a2-e2f7671b6e98"],"path":"/v1/invoices","baseUrlOptions":["https://meterengine.com"],"title":"인보이스 목록 조회","codeSamples":[],"requestExampleLanguages":["bash","node"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5ae238a3-7c55-44db-bc58-bae638bbd5e6":{"description":"고객을 좁힌다. 생략하면 모든 고객이 대상이다.","in":"query","name":"customer_id","required":false,"schema":{"type":"string","format":"uuid","isRequired":false,"description":"고객을 좁힌다. 생략하면 모든 고객이 대상이다.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"6bd57730-c873-4bf7-bb1e-12a56c03d660":{"description":"인보이스의 달(yyyy-MM, KST). 생략하면 모든 달이다.","example":"2026-08","in":"query","name":"month","required":false,"schema":{"type":"string","isRequired":false,"description":"인보이스의 달(yyyy-MM, KST). 생략하면 모든 달이다.","uniqueKey":"","typeLabel":"string"}}},"responses":{"c4d662d1-f112-4062-b051-1a54efbb3aa0":{"content":{"*/*":{"schema":{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"object","properties":{"customer_id":{"type":"string","format":"uuid","uniqueKey":"invoices.items.[INDEX].customer_id","typeLabel":"string\u003cuuid>"},"customer_name":{"type":"string","uniqueKey":"invoices.items.[INDEX].customer_name","typeLabel":"string"},"cutoff_at":{"type":"string","format":"date-time","description":"확정이 읽은 이벤트의 받은 시각 상한. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. KST(+09:00)","uniqueKey":"invoices.items.[INDEX].cutoff_at","typeLabel":"string\u003cdate-time>"},"finalized_at":{"type":"string","format":"date-time","uniqueKey":"invoices.items.[INDEX].finalized_at","typeLabel":"string\u003cdate-time>"},"id":{"type":"string","format":"uuid","uniqueKey":"invoices.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"invoice_number":{"type":"string","description":"고객에게 표시하는 안정적인 인보이스 번호. 세금계산서나 영수증 번호가 아니다","uniqueKey":"invoices.items.[INDEX].invoice_number","typeLabel":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"integer","format":"int64","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].amount","typeLabel":"integer\u003cint64>"},"billable_metric_code":{"type":"string","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].billable_metric_code","typeLabel":"string"},"billable_metric_name":{"oneOf":[{"type":"string","description":"확정할 때의 미터 이름. 미터 이름을 나중에 바꿔도 그대로다. 기본료와 최소 사용료 조정 줄, 이 값을 저장하기 전에 확정한 줄은 null이다","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].billable_metric_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"확정할 때의 미터 이름. 미터 이름을 나중에 바꿔도 그대로다. 기본료와 최소 사용료 조정 줄, 이 값을 저장하기 전에 확정한 줄은 null이다","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].billable_metric_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].billable_metric_name","typeLabel":"string | null"},"dimension_values":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].dimension_values.additionalProperties","typeLabel":"any"},"description":"확정할 때 저장한 조합. 이 조합의 단가를 수량에 곱했다. 미터에 dimension_properties가 없었으면 빈 객체다","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].dimension_values","typeLabel":"object"},"line_type":{"type":"string","enum":["per_unit","volume","graduated_tier","base_fee","minimum_adjustment"],"uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].line_type","typeLabel":"enum\u003cstring>"},"quantity":{"type":"number","description":"표시용 수량. 금액 계산에는 quantity_numerator/quantity_denominator를 사용한다","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].quantity","typeLabel":"number"},"quantity_denominator":{"type":"number","description":"정확 청구 수량의 양수 분모. 분자/분모에 단가를 곱해 라인별 10원 미만을 버린다","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].quantity_denominator","typeLabel":"number"},"quantity_numerator":{"type":"number","description":"금액과 구간 판정에 사용한 정확 청구 수량의 분자","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].quantity_numerator","typeLabel":"number"},"target_property":{"type":"string","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].target_property","typeLabel":"string"},"tier_index":{"type":"integer","format":"int32","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].tier_index","typeLabel":"integer\u003cint32>"},"unit_price":{"type":"number","uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX].unit_price","typeLabel":"number"}},"uniqueKey":"invoices.items.[INDEX].lines.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invoices.items.[INDEX].lines","typeLabel":"object[]"},"month":{"type":"string","uniqueKey":"invoices.items.[INDEX].month","typeLabel":"string"},"supply_amount":{"type":"integer","format":"int64","uniqueKey":"invoices.items.[INDEX].supply_amount","typeLabel":"integer\u003cint64>"},"tax_amount":{"type":"integer","format":"int64","uniqueKey":"invoices.items.[INDEX].tax_amount","typeLabel":"integer\u003cint64>"},"total_amount":{"type":"integer","format":"int64","uniqueKey":"invoices.items.[INDEX].total_amount","typeLabel":"integer\u003cint64>"}},"uniqueKey":"invoices.items.[INDEX]","typeLabel":"object"},"uniqueKey":"invoices","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"invoices":[{"customer_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","customer_name":"\u003cstring>","cutoff_at":"2023-11-07T05:31:56Z","finalized_at":"2023-11-07T05:31:56Z","id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invoice_number":"\u003cstring>","lines":[{"amount":123,"billable_metric_code":"\u003cstring>","billable_metric_name":"\u003cstring>","dimension_values":{},"line_type":"per_unit","quantity":123,"quantity_denominator":123,"quantity_numerator":123,"target_property":"\u003cstring>","tier_index":123,"unit_price":123}],"month":"\u003cstring>","supply_amount":123,"tax_amount":123,"total_amount":123}]}}},"exampleType":"generated"}},"description":"인보이스 목록. 조건에 맞는 것이 없으면 invoices가 빈 배열이다","exampleType":"generated"},"10683d02-ca75-412b-95e8-51821107aa23":{"content":{"application/json":{"schema":{"type":"object","description":"오류 응답. code로 오류 종류를 구분하고, message는 code마다 하나인 한국어 문구다.","properties":{"code":{"type":"string","description":"오류 종류. 오류별 처리는 이 값으로 분기한다.","enum":["validation_error","malformed_request_body","invalid_billable_metric","invalid_price_rate","event_too_old","invalid_toss_payments_credential","payment_method_rejected","toss_payments_test_code_in_live_mode","invalid_webhook_url","invalid_webhook_event_type","authentication_required","invalid_credentials","permission_denied","organization_not_active","environment_mismatch","consent_required","customer_not_found","event_not_found","billable_metric_not_found","price_rate_not_found","invoice_not_found","invoice_view_link_not_found","endpoint_not_found","api_key_not_found","organization_not_found","user_account_not_found","payment_method_not_found","payment_method_registration_not_found","payment_attempt_not_found","toss_payments_credential_not_found","price_plan_not_found","webhook_endpoint_not_found","webhook_delivery_not_found","invitation_not_found","method_not_allowed","response_type_not_acceptable","resource_version_conflict","idempotency_conflict","customer_archived","resource_archived","environment_not_ready","archive_restoration_conflict","customer_has_events","customer_has_payment_attempts","billable_metric_has_events","billable_metric_has_price_rate","billable_metric_already_exists","billable_metric_event_type_target_property_already_exists","invoice_already_paid","payment_result_unconfirmed","payment_retry_unavailable","payment_retry_stale","invoice_amount_zero","email_already_exists","organization_status_transition_invalid","organization_member_already_exists","toss_payments_credential_missing","payment_method_missing","payment_mode_mismatch","payment_attempt_not_cancelable","payment_attempt_fully_canceled","payment_cancellation_amount_exceeded","payment_cancellation_in_progress","payment_cancellation_idempotency_conflict","webhook_delivery_not_retryable","price_rate_history_immutable","price_plan_history_immutable","webhook_endpoint_disabled","webhook_endpoint_limit_exceeded","invitation_unavailable","last_owner_required","owner_scopes_required","last_operator_required","api_key_unavailable","upload_size_exceeded","request_type_not_supported","rate_limit_exceeded","internal_server_error","request_timed_out","toss_payments_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"code마다 하나인 한국어 문구. 예고 없이 바뀔 수 있으니 분기에 쓰지 않는다.","example":"서버 내부 오류입니다","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"틀린 필드 목록. 400 응답에만 실린다.","items":{"type":"object","description":"틀린 필드 하나","properties":{"field":{"type":"string","description":"틀린 값을 보낸 자리의 이름. 요청에 쓴 이름과 같다.","example":"event_type","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","description":"이 자리의 값이 거절된 이유.","example":"공백일 수 없습니다","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"validation_error","message":"서버 내부 오류입니다","errors":[{"field":"event_type","message":"공백일 수 없습니다"}]}}},"exampleType":"generated"}},"description":"code=validation_error: customer_id가 UUID가 아니거나, month가 yyyy-MM이 아니거나 0001-01부터 9999-12까지의 범위 밖이다","exampleType":"generated"},"b4c76147-290f-48f9-a281-244ae4ff47f4":{"content":{"application/json":{"schema":{"type":"object","description":"오류 응답. code로 오류 종류를 구분하고, message는 code마다 하나인 한국어 문구다.","properties":{"code":{"type":"string","description":"오류 종류. 오류별 처리는 이 값으로 분기한다.","enum":["validation_error","malformed_request_body","invalid_billable_metric","invalid_price_rate","event_too_old","invalid_toss_payments_credential","payment_method_rejected","toss_payments_test_code_in_live_mode","invalid_webhook_url","invalid_webhook_event_type","authentication_required","invalid_credentials","permission_denied","organization_not_active","environment_mismatch","consent_required","customer_not_found","event_not_found","billable_metric_not_found","price_rate_not_found","invoice_not_found","invoice_view_link_not_found","endpoint_not_found","api_key_not_found","organization_not_found","user_account_not_found","payment_method_not_found","payment_method_registration_not_found","payment_attempt_not_found","toss_payments_credential_not_found","price_plan_not_found","webhook_endpoint_not_found","webhook_delivery_not_found","invitation_not_found","method_not_allowed","response_type_not_acceptable","resource_version_conflict","idempotency_conflict","customer_archived","resource_archived","environment_not_ready","archive_restoration_conflict","customer_has_events","customer_has_payment_attempts","billable_metric_has_events","billable_metric_has_price_rate","billable_metric_already_exists","billable_metric_event_type_target_property_already_exists","invoice_already_paid","payment_result_unconfirmed","payment_retry_unavailable","payment_retry_stale","invoice_amount_zero","email_already_exists","organization_status_transition_invalid","organization_member_already_exists","toss_payments_credential_missing","payment_method_missing","payment_mode_mismatch","payment_attempt_not_cancelable","payment_attempt_fully_canceled","payment_cancellation_amount_exceeded","payment_cancellation_in_progress","payment_cancellation_idempotency_conflict","webhook_delivery_not_retryable","price_rate_history_immutable","price_plan_history_immutable","webhook_endpoint_disabled","webhook_endpoint_limit_exceeded","invitation_unavailable","last_owner_required","owner_scopes_required","last_operator_required","api_key_unavailable","upload_size_exceeded","request_type_not_supported","rate_limit_exceeded","internal_server_error","request_timed_out","toss_payments_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"code마다 하나인 한국어 문구. 예고 없이 바뀔 수 있으니 분기에 쓰지 않는다.","example":"서버 내부 오류입니다","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"틀린 필드 목록. 400 응답에만 실린다.","items":{"type":"object","description":"틀린 필드 하나","properties":{"field":{"type":"string","description":"틀린 값을 보낸 자리의 이름. 요청에 쓴 이름과 같다.","example":"event_type","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","description":"이 자리의 값이 거절된 이유.","example":"공백일 수 없습니다","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"validation_error","message":"서버 내부 오류입니다","errors":[{"field":"event_type","message":"공백일 수 없습니다"}]}}},"exampleType":"generated"}},"description":"code=authentication_required: Authorization 헤더가 없다.\ncode=invalid_credentials: 키나 토큰의 형식이 틀렸거나, 모르는 값이거나, 폐기 또는 만료됐다.\n","exampleType":"generated"},"a7a2f3c3-0e2e-4ce9-9dcf-064e6c41e4bc":{"content":{"application/json":{"schema":{"type":"object","description":"오류 응답. code로 오류 종류를 구분하고, message는 code마다 하나인 한국어 문구다.","properties":{"code":{"type":"string","description":"오류 종류. 오류별 처리는 이 값으로 분기한다.","enum":["validation_error","malformed_request_body","invalid_billable_metric","invalid_price_rate","event_too_old","invalid_toss_payments_credential","payment_method_rejected","toss_payments_test_code_in_live_mode","invalid_webhook_url","invalid_webhook_event_type","authentication_required","invalid_credentials","permission_denied","organization_not_active","environment_mismatch","consent_required","customer_not_found","event_not_found","billable_metric_not_found","price_rate_not_found","invoice_not_found","invoice_view_link_not_found","endpoint_not_found","api_key_not_found","organization_not_found","user_account_not_found","payment_method_not_found","payment_method_registration_not_found","payment_attempt_not_found","toss_payments_credential_not_found","price_plan_not_found","webhook_endpoint_not_found","webhook_delivery_not_found","invitation_not_found","method_not_allowed","response_type_not_acceptable","resource_version_conflict","idempotency_conflict","customer_archived","resource_archived","environment_not_ready","archive_restoration_conflict","customer_has_events","customer_has_payment_attempts","billable_metric_has_events","billable_metric_has_price_rate","billable_metric_already_exists","billable_metric_event_type_target_property_already_exists","invoice_already_paid","payment_result_unconfirmed","payment_retry_unavailable","payment_retry_stale","invoice_amount_zero","email_already_exists","organization_status_transition_invalid","organization_member_already_exists","toss_payments_credential_missing","payment_method_missing","payment_mode_mismatch","payment_attempt_not_cancelable","payment_attempt_fully_canceled","payment_cancellation_amount_exceeded","payment_cancellation_in_progress","payment_cancellation_idempotency_conflict","webhook_delivery_not_retryable","price_rate_history_immutable","price_plan_history_immutable","webhook_endpoint_disabled","webhook_endpoint_limit_exceeded","invitation_unavailable","last_owner_required","owner_scopes_required","last_operator_required","api_key_unavailable","upload_size_exceeded","request_type_not_supported","rate_limit_exceeded","internal_server_error","request_timed_out","toss_payments_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"code마다 하나인 한국어 문구. 예고 없이 바뀔 수 있으니 분기에 쓰지 않는다.","example":"서버 내부 오류입니다","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"틀린 필드 목록. 400 응답에만 실린다.","items":{"type":"object","description":"틀린 필드 하나","properties":{"field":{"type":"string","description":"틀린 값을 보낸 자리의 이름. 요청에 쓴 이름과 같다.","example":"event_type","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","description":"이 자리의 값이 거절된 이유.","example":"공백일 수 없습니다","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"validation_error","message":"서버 내부 오류입니다","errors":[{"field":"event_type","message":"공백일 수 없습니다"}]}}},"exampleType":"generated"}},"description":"code=permission_denied: 키의 스코프나 계정의 역할로는 할 수 없는 요청이거나, 도입사가 정해지지 않은 로그인 세션이다.\ncode=organization_not_active: 도입사가 활성 상태가 아니다.\ncode=consent_required: 로그인 세션의 사용자가 필수 안내에 아직 동의하지 않았다. POST /v1/sessions/current/consents로 동의한다.\n","exampleType":"generated"},"b395376c-4b24-40c3-91a0-a7d9e401ae61":{"content":{"application/json":{"schema":{"type":"object","description":"오류 응답. code로 오류 종류를 구분하고, message는 code마다 하나인 한국어 문구다.","properties":{"code":{"type":"string","description":"오류 종류. 오류별 처리는 이 값으로 분기한다.","enum":["validation_error","malformed_request_body","invalid_billable_metric","invalid_price_rate","event_too_old","invalid_toss_payments_credential","payment_method_rejected","toss_payments_test_code_in_live_mode","invalid_webhook_url","invalid_webhook_event_type","authentication_required","invalid_credentials","permission_denied","organization_not_active","environment_mismatch","consent_required","customer_not_found","event_not_found","billable_metric_not_found","price_rate_not_found","invoice_not_found","invoice_view_link_not_found","endpoint_not_found","api_key_not_found","organization_not_found","user_account_not_found","payment_method_not_found","payment_method_registration_not_found","payment_attempt_not_found","toss_payments_credential_not_found","price_plan_not_found","webhook_endpoint_not_found","webhook_delivery_not_found","invitation_not_found","method_not_allowed","response_type_not_acceptable","resource_version_conflict","idempotency_conflict","customer_archived","resource_archived","environment_not_ready","archive_restoration_conflict","customer_has_events","customer_has_payment_attempts","billable_metric_has_events","billable_metric_has_price_rate","billable_metric_already_exists","billable_metric_event_type_target_property_already_exists","invoice_already_paid","payment_result_unconfirmed","payment_retry_unavailable","payment_retry_stale","invoice_amount_zero","email_already_exists","organization_status_transition_invalid","organization_member_already_exists","toss_payments_credential_missing","payment_method_missing","payment_mode_mismatch","payment_attempt_not_cancelable","payment_attempt_fully_canceled","payment_cancellation_amount_exceeded","payment_cancellation_in_progress","payment_cancellation_idempotency_conflict","webhook_delivery_not_retryable","price_rate_history_immutable","price_plan_history_immutable","webhook_endpoint_disabled","webhook_endpoint_limit_exceeded","invitation_unavailable","last_owner_required","owner_scopes_required","last_operator_required","api_key_unavailable","upload_size_exceeded","request_type_not_supported","rate_limit_exceeded","internal_server_error","request_timed_out","toss_payments_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"code마다 하나인 한국어 문구. 예고 없이 바뀔 수 있으니 분기에 쓰지 않는다.","example":"서버 내부 오류입니다","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"틀린 필드 목록. 400 응답에만 실린다.","items":{"type":"object","description":"틀린 필드 하나","properties":{"field":{"type":"string","description":"틀린 값을 보낸 자리의 이름. 요청에 쓴 이름과 같다.","example":"event_type","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","description":"이 자리의 값이 거절된 이유.","example":"공백일 수 없습니다","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"validation_error","message":"서버 내부 오류입니다","errors":[{"field":"event_type","message":"공백일 수 없습니다"}]}}},"exampleType":"generated"}},"description":"code=customer_not_found: customer_id가 가리키는 고객이 없다","exampleType":"generated"},"21d1a2cf-50d6-4d01-aa79-c959794b2f6b":{"content":{"application/json":{"schema":{"type":"object","description":"오류 응답. code로 오류 종류를 구분하고, message는 code마다 하나인 한국어 문구다.","properties":{"code":{"type":"string","description":"오류 종류. 오류별 처리는 이 값으로 분기한다.","enum":["validation_error","malformed_request_body","invalid_billable_metric","invalid_price_rate","event_too_old","invalid_toss_payments_credential","payment_method_rejected","toss_payments_test_code_in_live_mode","invalid_webhook_url","invalid_webhook_event_type","authentication_required","invalid_credentials","permission_denied","organization_not_active","environment_mismatch","consent_required","customer_not_found","event_not_found","billable_metric_not_found","price_rate_not_found","invoice_not_found","invoice_view_link_not_found","endpoint_not_found","api_key_not_found","organization_not_found","user_account_not_found","payment_method_not_found","payment_method_registration_not_found","payment_attempt_not_found","toss_payments_credential_not_found","price_plan_not_found","webhook_endpoint_not_found","webhook_delivery_not_found","invitation_not_found","method_not_allowed","response_type_not_acceptable","resource_version_conflict","idempotency_conflict","customer_archived","resource_archived","environment_not_ready","archive_restoration_conflict","customer_has_events","customer_has_payment_attempts","billable_metric_has_events","billable_metric_has_price_rate","billable_metric_already_exists","billable_metric_event_type_target_property_already_exists","invoice_already_paid","payment_result_unconfirmed","payment_retry_unavailable","payment_retry_stale","invoice_amount_zero","email_already_exists","organization_status_transition_invalid","organization_member_already_exists","toss_payments_credential_missing","payment_method_missing","payment_mode_mismatch","payment_attempt_not_cancelable","payment_attempt_fully_canceled","payment_cancellation_amount_exceeded","payment_cancellation_in_progress","payment_cancellation_idempotency_conflict","webhook_delivery_not_retryable","price_rate_history_immutable","price_plan_history_immutable","webhook_endpoint_disabled","webhook_endpoint_limit_exceeded","invitation_unavailable","last_owner_required","owner_scopes_required","last_operator_required","api_key_unavailable","upload_size_exceeded","request_type_not_supported","rate_limit_exceeded","internal_server_error","request_timed_out","toss_payments_unavailable"],"isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"code마다 하나인 한국어 문구. 예고 없이 바뀔 수 있으니 분기에 쓰지 않는다.","example":"서버 내부 오류입니다","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"array","description":"틀린 필드 목록. 400 응답에만 실린다.","items":{"type":"object","description":"틀린 필드 하나","properties":{"field":{"type":"string","description":"틀린 값을 보낸 자리의 이름. 요청에 쓴 이름과 같다.","example":"event_type","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","description":"이 자리의 값이 거절된 이유.","example":"공백일 수 없습니다","uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors","typeLabel":"object[]"}},"required":["code","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"validation_error","message":"서버 내부 오류입니다","errors":[{"field":"event_type","message":"공백일 수 없습니다"}]}}},"exampleType":"generated"}},"description":"code=rate_limit_exceeded: 키의 분당 요청 한도를 넘었다. Retry-After 헤더의 초만큼 기다린 뒤 다시 보낸다.","headers":{"Retry-After":{"description":"다시 보내기 전에 기다릴 초","required":true,"schema":{"type":"integer","format":"int32"}}},"exampleType":"generated"}},"security":{"3fd7dd2d-a237-4414-93a2-e2f7671b6e98":{"bearerAuth":{"scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0cef6632-74ea-4650-a4d5-583aade483b9":{"description":"MeterEngine API","url":"https://meterengine.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"scheme":"bearer","type":"http","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml"},"subdomain":"meterengine","siteName":"MeterEngine","title":"인보이스 목록 조회 - MeterEngine","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"ko":{"href":"/api-reference/invoice-controller/인보이스-목록-조회","matchLevel":0}}},"lastModified":"2026-11-11T06:13:34.739Z","originalFileLocation":"api-reference/invoice-controller/인보이스-목록-조회.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다. customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다. supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다. lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다. cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MeterEngine\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/meterengine/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/meterengine/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/meterengine/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/meterengine/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"인보이스 목록 조회 - MeterEngine\">\u003cmeta data-mint-head property=\"og:description\" content=\"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다. customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다. supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다. lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다. cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MeterEngine\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meterengine.com/api-reference/invoice-controller/인보이스-목록-조회\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meterengine.mintlify.site/_mintlify/api/og/v2?division=%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4\u0026amp;title=%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4+%EB%AA%A9%EB%A1%9D+%EC%A1%B0%ED%9A%8C\u0026amp;description=%ED%99%95%EC%A0%95%EB%90%9C+%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4%EB%A5%BC+%28%EA%B3%A0%EA%B0%9D%2C+%EB%8B%AC%29%EB%A7%88%EB%8B%A4+%ED%95%9C+%EC%A4%84%EC%94%A9+%EB%8F%8C%EB%A0%A4%EC%A4%80%EB%8B%A4.+%ED%99%95%EC%A0%95+%EC%A0%84%EC%9D%98+%EA%B8%88%EC%95%A1%EC%9D%80+%EC%B2%AD%EA%B5%AC+%EC%98%88%EC%A0%95%EC%95%A1+%EC%A1%B0%ED%9A%8C%EB%A1%9C+%EB%B3%B8%EB%8B%A4.%0Acustomer_id%EC%99%80+month%EB%A5%BC+%ED%95%A8%EA%BB%98+%EC%A3%BC%EB%A9%B4+%EB%91%98+%EB%8B%A4+%EB%A7%8C%EC%A1%B1%ED%95%98%EB%8A%94+%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4%EB%A7%8C+%EB%82%98%EC%98%A8%EB%8B%A4.+month%EB%A5%BC+%EC%83%9D%EB%9E%B5%ED%95%98%EB%A9%B4+%EB%AA%A8%EB%93%A0+%EB%8B%AC%EC%9D%B4%EB%8B%A4.%0A%EB%8B%AC+%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9D%B4%EA%B3%A0%2C+%EA%B0%99%EC%9D%80+%EB%8B%AC%EC%9D%80+%EA%B3%A0%EA%B0%9D+%EC%9D%B4%EB%A6%84+%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C%2C+%EC%9D%B4%EB%A6%84%EC%9D%B4+%EA%B0%99%EC%9C%BC%EB%A9%B4+%EA%B3%A0%EA%B0%9D\u0026amp;theme=23a62b0b000949226daf3b66\u0026amp;signature=ecb28127f6650c3f984b2d2bb83732ce12b81bb70169a11487b85e404f1d4cf5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"인보이스 목록 조회 - MeterEngine\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다. customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다. supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다. lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다. cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meterengine.mintlify.site/_mintlify/api/og/v2?division=%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4\u0026amp;title=%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4+%EB%AA%A9%EB%A1%9D+%EC%A1%B0%ED%9A%8C\u0026amp;description=%ED%99%95%EC%A0%95%EB%90%9C+%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4%EB%A5%BC+%28%EA%B3%A0%EA%B0%9D%2C+%EB%8B%AC%29%EB%A7%88%EB%8B%A4+%ED%95%9C+%EC%A4%84%EC%94%A9+%EB%8F%8C%EB%A0%A4%EC%A4%80%EB%8B%A4.+%ED%99%95%EC%A0%95+%EC%A0%84%EC%9D%98+%EA%B8%88%EC%95%A1%EC%9D%80+%EC%B2%AD%EA%B5%AC+%EC%98%88%EC%A0%95%EC%95%A1+%EC%A1%B0%ED%9A%8C%EB%A1%9C+%EB%B3%B8%EB%8B%A4.%0Acustomer_id%EC%99%80+month%EB%A5%BC+%ED%95%A8%EA%BB%98+%EC%A3%BC%EB%A9%B4+%EB%91%98+%EB%8B%A4+%EB%A7%8C%EC%A1%B1%ED%95%98%EB%8A%94+%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4%EB%A7%8C+%EB%82%98%EC%98%A8%EB%8B%A4.+month%EB%A5%BC+%EC%83%9D%EB%9E%B5%ED%95%98%EB%A9%B4+%EB%AA%A8%EB%93%A0+%EB%8B%AC%EC%9D%B4%EB%8B%A4.%0A%EB%8B%AC+%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C%EC%9D%B4%EA%B3%A0%2C+%EA%B0%99%EC%9D%80+%EB%8B%AC%EC%9D%80+%EA%B3%A0%EA%B0%9D+%EC%9D%B4%EB%A6%84+%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C%2C+%EC%9D%B4%EB%A6%84%EC%9D%B4+%EA%B0%99%EC%9C%BC%EB%A9%B4+%EA%B3%A0%EA%B0%9D\u0026amp;theme=23a62b0b000949226daf3b66\u0026amp;signature=ecb28127f6650c3f984b2d2bb83732ce12b81bb70169a11487b85e404f1d4cf5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/meterengine/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MeterEngine\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5746ad\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meterengine.com/api-reference/invoice-controller/인보이스-목록-조회\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meterengine.com/#organization\",\"name\":\"MeterEngine\",\"url\":\"https://docs.meterengine.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meterengine.com#website\",\"name\":\"MeterEngine\",\"url\":\"https://docs.meterengine.com\",\"publisher\":{\"@id\":\"https://docs.meterengine.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C#webpage\",\"url\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C\",\"name\":\"인보이스 목록 조회\",\"description\":\"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다. customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다. supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다. lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다. cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\",\"dateModified\":\"2026-11-11T06:13:34.739Z\",\"isPartOf\":{\"@id\":\"https://docs.meterengine.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"엔드포인트\",\"item\":\"https://docs.meterengine.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"인보이스 목록 조회\",\"item\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C#apireference\",\"headline\":\"인보이스 목록 조회\",\"name\":\"인보이스 목록 조회\",\"description\":\"확정된 인보이스를 (고객, 달)마다 한 줄씩 돌려준다. 확정 전의 금액은 청구 예정액 조회로 본다. customer_id와 month를 함께 주면 둘 다 만족하는 인보이스만 나온다. month를 생략하면 모든 달이다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다. supply_amount, tax_amount, total_amount는 확정할 때 저장한 공급가액, 세액, 합계(공급가액 + 세액)이고 원 단위 정수다. lines는 확정할 때 저장한 조합별 수량, 단가, 금액이고 미터 code 오름차순, 같은 미터 안에서는 dimension_values 오름차순이다. 조회할 때 다시 계산하지 않아 뒤에 단가를 고쳐도 바뀌지 않는다. 라인 금액의 합이 supply_amount다. cutoff_at은 확정이 읽은 이벤트의 받은 시각 상한이다. 그 달에 발생했고 이 시각 전에 받은 이벤트만 금액에 들었다. cutoff_at과 finalized_at은 KST(+09:00)로 나온다. customer_name은 확정할 때 저장한 고객 이름이라 뒤에 이름을 고쳐도 바뀌지 않는다. 페이지를 나누지 않는다.\",\"url\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meterengine.com/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C#webpage\"},\"dateModified\":\"2026-11-11T06:13:34.739Z\",\"publisher\":{\"@id\":\"https://docs.meterengine.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meterengine.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MeterEngine\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"MeterEngine\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/invoice-controller/%EC%9D%B8%EB%B3%B4%EC%9D%B4%EC%8A%A4-%EB%AA%A9%EB%A1%9D-%EC%A1%B0%ED%9A%8C.md","siteName":"MeterEngine","nav":{"global":null,"languages":[{"language":"ko","default":true,"tabs":[{"tab":"가이드","pages":[{"title":"가이드","href":""}]},{"tab":"API 참조","groups":[{"group":"소개","pages":[{"title":"API 참조 읽는 법","href":"/api-reference/introduction"}]},{"group":"엔드포인트","pages":[{"group":"API 키 (콘솔 전용)","pages":[]},{"group":"감사 기록 (콘솔 전용)","pages":[]},{"group":"미터별 단가 조회","pages":[{"title":"미터별 가격 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metric-prices","href":"/api-reference/billable-metric-price-controller/미터별-가격-목록-조회"}]},{"group":"검색과 내보내기","pages":[{"title":"미터별 가격 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metric-prices/export","href":"/api-reference/workspace-query-controller/미터별-가격-검색-결과-csv"},{"title":"단가 버전이 시작된 월 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metric-prices/months","href":"/api-reference/workspace-query-controller/단가-버전이-시작된-월-목록"},{"title":"월별 가격 검색과 서버 페이지 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metric-prices/search","href":"/api-reference/workspace-query-controller/월별-가격-검색과-서버-페이지-조회"},{"title":"미터 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metrics/export","href":"/api-reference/workspace-query-controller/미터-검색-결과-csv"},{"title":"미터 검색과 서버 페이지 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metrics/search","href":"/api-reference/workspace-query-controller/미터-검색과-서버-페이지-조회"},{"title":"고객 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/customers/export","href":"/api-reference/workspace-query-controller/고객-검색-결과-csv"},{"title":"고객 검색과 서버 페이지 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/customers/search","href":"/api-reference/workspace-query-controller/고객-검색과-서버-페이지-조회"},{"title":"청구 예정액 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/draft/export","href":"/api-reference/workspace-query-controller/청구-예정액-검색-결과-csv"},{"title":"청구 예정액 검색과 페이지 독립 요약","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/draft/search","href":"/api-reference/workspace-query-controller/청구-예정액-검색과-페이지-독립-요약"},{"title":"인보이스 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/export","href":"/api-reference/workspace-query-controller/인보이스-검색-결과-csv"},{"title":"확정 인보이스가 있는 월 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/months","href":"/api-reference/workspace-query-controller/확정-인보이스가-있는-월-목록"},{"title":"인보이스와 결제 상태 검색","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/search","href":"/api-reference/workspace-query-controller/인보이스와-결제-상태-검색"},{"title":"고객별 사용량 검색 결과 CSV","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/usage/export","href":"/api-reference/workspace-query-controller/고객별-사용량-검색-결과-csv"},{"title":"이벤트가 있는 월 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/usage/months","href":"/api-reference/workspace-query-controller/이벤트가-있는-월-목록"},{"title":"고객 단위 사용량 검색과 서버 페이지 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/usage/search","href":"/api-reference/workspace-query-controller/고객-단위-사용량-검색과-서버-페이지-조회"}]},{"group":"미터","pages":[{"title":"미터 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metrics","href":"/api-reference/billable-metric-controller/미터-목록-조회"},{"title":"집계 미터 등록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/billable-metrics","href":"/api-reference/billable-metric-controller/집계-미터-등록"},{"title":"미터 상세 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metrics/{code}","href":"/api-reference/billable-metric-controller/미터-상세-조회"},{"title":"집계 미터 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml put /v1/billable-metrics/{code}","href":"/api-reference/billable-metric-controller/집계-미터-수정"},{"title":"미터 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/billable-metrics/{code}","href":"/api-reference/billable-metric-controller/미터-보관"},{"title":"버전을 확인한 미터 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml patch /v1/billable-metrics/{code}","href":"/api-reference/billable-metric-controller/버전을-확인한-미터-수정"},{"title":"미터 복원","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/billable-metrics/{code}/restorations","href":"/api-reference/billable-metric-controller/미터-복원"}]},{"group":"단가","pages":[{"title":"미터 단가 이력 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/billable-metrics/{code}/price-rates","href":"/api-reference/price-rate-controller/미터-단가-이력-조회"},{"title":"단가 등록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/billable-metrics/{code}/price-rates","href":"/api-reference/price-rate-controller/단가-등록"},{"title":"단가 조합 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/billable-metrics/{code}/price-rates","href":"/api-reference/price-rate-controller/단가-조합-보관"},{"title":"단가 버전 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/billable-metrics/{code}/price-rates/{id}","href":"/api-reference/price-rate-controller/단가-버전-보관"},{"title":"단가 버전 복원","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/billable-metrics/{code}/price-rates/{id}/restorations","href":"/api-reference/price-rate-controller/단가-버전-복원"}]},{"group":"고객","pages":[{"title":"고객 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/customers","href":"/api-reference/customer-controller/고객-목록-조회"},{"title":"고객 등록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/customers","href":"/api-reference/customer-controller/고객-등록"},{"title":"고객 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/customers/{id}","href":"/api-reference/customer-controller/고객-조회"},{"title":"고객 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml put /v1/customers/{id}","href":"/api-reference/customer-controller/고객-수정"},{"title":"고객 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/customers/{id}","href":"/api-reference/customer-controller/고객-보관"},{"title":"버전을 확인한 고객 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml patch /v1/customers/{id}","href":"/api-reference/customer-controller/버전을-확인한-고객-수정"},{"title":"고객 복원","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/customers/{id}/restorations","href":"/api-reference/customer-controller/고객-복원"}]},{"group":"결제 수단","pages":[{"title":"고객 카드 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/customers/{id}/payment-method","href":"/api-reference/payment-method-controller/고객-카드-조회"},{"title":"고객 카드 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/customers/{id}/payment-method","href":"/api-reference/payment-method-controller/고객-카드-보관"},{"title":"고객 카드 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/payment-methods","href":"/api-reference/payment-method-controller/고객-카드-목록-조회"}]},{"group":"카드 등록 링크","pages":[{"title":"카드 등록 링크 생성","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/customers/{id}/payment-method-registrations","href":"/api-reference/payment-method-registration-controller/카드-등록-링크-생성"}]},{"group":"개요","pages":[{"title":"월별 과금과 수납 현황 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/dashboard","href":"/api-reference/dashboard-controller/월별-과금과-수납-현황-조회"}]},{"group":"이벤트 일괄 전송","pages":[{"title":"사용량 이벤트 일괄 수집","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/event-batches","href":"/api-reference/event-batch-controller/사용량-이벤트-일괄-수집"}]},{"group":"이벤트 매핑 진단","pages":[{"title":"수집된 이벤트의 매핑 문제 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/event-issues/search","href":"/api-reference/event-issue-controller/수집된-이벤트의-매핑-문제-조회"}]},{"group":"수집 거절","pages":[{"title":"수집 업무 거절 메타데이터 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/event-rejections/search","href":"/api-reference/event-rejection-controller/수집-업무-거절-메타데이터-조회"}]},{"group":"이벤트","pages":[{"title":"사용량 이벤트 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/events","href":"/api-reference/event-controller/사용량-이벤트-조회"},{"title":"사용량 이벤트 수집","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/events","href":"/api-reference/event-controller/사용량-이벤트-수집"},{"title":"이벤트 단건 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/events/lookup","href":"/api-reference/event-controller/이벤트-단건-조회"},{"title":"이벤트가 있는 월 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/events/months","href":"/api-reference/event-controller/이벤트가-있는-월-조회"},{"title":"수집된 이벤트 유형 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/events/types","href":"/api-reference/event-controller/수집된-이벤트-유형-조회"}]},{"group":"이벤트 내보내기","pages":[{"title":"사용량 이벤트 CSV 내보내기","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/events/export","href":"/api-reference/event-export-controller/사용량-이벤트-csv-내보내기"}]},{"group":"수납 상태","pages":[{"title":"인보이스별 결제 상태 목록","description":"인보이스마다 도입사의 현재 결제 모드(test 또는 live)로 본 결제 상태를 한 줄씩 돌려준다. 다른 결제 모드의 시도는 보지 않는다.\n상태는 그 모드에서 가장 늦게 요청한 시도로 정한다. total_amount가 0원이면 not_required, 시도가 없으면 unpaid, 시도가 pending이면 pending, failed면 failed다.\n시도가 done이면 그 시도에서 취소를 마친 금액의 합이 0원이면 paid, 결제 금액보다 적으면 partially_canceled, 결제 금액과 같으면 canceled다.\n순서와 거르는 조건은 인보이스 목록 조회와 같다. 달 내림차순이고, 같은 달은 고객 이름 오름차순, 이름이 같으면 고객 id 순이다.\nnext_retry_at과 completed_at은 KST(+09:00)로 나온다. 페이지를 나누지 않는다.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoice-payments","href":"/api-reference/invoice-payment-controller/인보이스별-결제-상태-목록"}]},{"group":"인보이스","pages":[{"title":"인보이스 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices","href":"/api-reference/invoice-controller/인보이스-목록-조회"},{"title":"인보이스 일괄 확정","description":"그 달 청구 예정액이 0원이 아닌 고객을 한 번에 확정한다. 세액은 공급가액의 10%다.\n그 달에 발생했고 집계 마감 시각(다음 달 1일 13:00 KST) 전에 받은 이벤트로 확정해서, 마감이 지난 달의 확정 금액과 라인은 그 시점의 청구 예정액과 같다.\n마감 시각 전에 확정하면 확정 시각까지 받은 이벤트로 확정하고 그 시각을 인보이스의 cutoff_at에 남긴다.\n수량이 0인 라인은 인보이스에 싣지 않는다. 확정한 고객은 그 달 청구 예정액에서 빠진다.\n확정한 고객마다 같은 트랜잭션에서 보낼 청구 메일을 남긴다. 고객에 청구 이메일이 없으면 받는 주소 없이 남긴다.\n그 달이 이미 확정된 고객은 건너뛴다. 그래서 같은 달로 다시 부르거나 동시에 불러도 인보이스가 겹치지 않는다.\n고객마다 따로 커밋한다. 한 고객의 확정이 실패해도 다른 고객의 확정은 남고, 실패한 고객은 failed_count에 세며 다시 부르면 다시 시도한다.\n확정은 되돌릴 수 없고, 확정한 뒤 그 달에 들어온 그 고객의 이벤트는 청구되지 않는다.\nfinalized_count는 이번 호출로 새로 확정한 인보이스 수다. 확정된 내용은 인보이스 목록 조회로 본다.\n","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/invoices","href":"/api-reference/invoice-controller/인보이스-일괄-확정"},{"title":"인보이스 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/{id}","href":"/api-reference/invoice-controller/인보이스-조회"}]},{"group":"청구 예정액","pages":[{"title":"청구 예정액 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/draft","href":"/api-reference/draft-invoice-controller/청구-예정액-조회"}]},{"group":"결제 요청","pages":[{"title":"인보이스 결제 시도 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/{id}/payment-attempts","href":"/api-reference/payment-attempt-controller/인보이스-결제-시도-목록"},{"title":"인보이스 결제 요청","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/invoices/{id}/payment-attempts","href":"/api-reference/payment-attempt-controller/인보이스-결제-요청"}]},{"group":"인보이스 조회 링크","pages":[{"title":"고객 인보이스 조회 링크 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/invoices/{id}/view-links","href":"/api-reference/invoice-view-link-controller/고객-인보이스-조회-링크-목록"},{"title":"고객 인보이스 조회 링크 발급","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/invoices/{id}/view-links","href":"/api-reference/invoice-view-link-controller/고객-인보이스-조회-링크-발급"},{"title":"고객 인보이스 조회 링크 폐기","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/invoices/{id}/view-links/{view_link_id}/revoke","href":"/api-reference/invoice-view-link-controller/고객-인보이스-조회-링크-폐기"}]},{"group":"도입사 정보","pages":[{"title":"현재 도입사 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/organization","href":"/api-reference/current-organization-controller/현재-도입사-조회"},{"title":"공급자 정보 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/organization/supplier","href":"/api-reference/current-organization-controller/공급자-정보-조회"},{"title":"공급자 정보 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml put /v1/organization/supplier","href":"/api-reference/current-organization-controller/공급자-정보-수정"}]},{"group":"업무 환경","pages":[{"title":"도입사의 테스트와 실제 환경 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/organization/environments","href":"/api-reference/organization-environment-controller/도입사의-테스트와-실제-환경-조회"}]},{"group":"구성원과 초대 (콘솔 전용)","pages":[]},{"group":"결제 취소","pages":[{"title":"결제 취소 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/payment-attempts/{id}/cancellations","href":"/api-reference/payment-cancellation-controller/결제-취소-목록"},{"title":"결제 취소 요청","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/payment-attempts/{id}/cancellations","href":"/api-reference/payment-cancellation-controller/결제-취소-요청"}]},{"group":"대사 불일치","pages":[{"title":"결제 대사 불일치 목록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/payment-reconciliation-mismatches","href":"/api-reference/payment-reconciliation-mismatch-controller/결제-대사-불일치-목록"}]},{"group":"결제 설정","pages":[{"title":"결제 모드 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/payment-setting","href":"/api-reference/payment-setting-controller/결제-모드-조회"}]},{"group":"요금제","pages":[{"title":"요금제 이력 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/price-plans","href":"/api-reference/price-plan-controller/요금제-이력-조회"},{"title":"기본료와 최소 과금 요금제 등록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/price-plans","href":"/api-reference/price-plan-controller/기본료와-최소-과금-요금제-등록"},{"title":"요금제 버전 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/price-plans/{id}","href":"/api-reference/price-plan-controller/요금제-버전-보관"},{"title":"요금제 버전 복원","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/price-plans/{id}/restorations","href":"/api-reference/price-plan-controller/요금제-버전-복원"}]},{"group":"토스페이먼츠 키","pages":[{"title":"토스페이먼츠 키 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/toss-payments-credentials","href":"/api-reference/toss-payments-credential-controller/토스페이먼츠-키-목록-조회"}]},{"group":"토스페이먼츠 웹훅 수신","pages":[]},{"group":"청구 제외 사용량","pages":[{"title":"청구 제외와 정정 이벤트 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/unbilled-events","href":"/api-reference/unbilled-event-controller/청구-제외와-정정-이벤트-조회"}]},{"group":"사용량 집계","pages":[{"title":"고객별 월 사용량 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/usage","href":"/api-reference/billable-metric-usage-controller/고객별-월-사용량-조회"}]},{"group":"웹훅","pages":[{"title":"웹훅 엔드포인트 목록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/webhook-endpoints","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-목록-조회"},{"title":"웹훅 엔드포인트 등록","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/webhook-endpoints","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-등록"},{"title":"웹훅 엔드포인트 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/webhook-endpoints/{id}","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-조회"},{"title":"웹훅 엔드포인트 수정","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml put /v1/webhook-endpoints/{id}","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-수정"},{"title":"웹훅 엔드포인트 보관","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml delete /v1/webhook-endpoints/{id}","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-보관"},{"title":"웹훅 전송 기록 조회","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml get /v1/webhook-endpoints/{id}/deliveries","href":"/api-reference/webhook-endpoint-controller/웹훅-전송-기록-조회"},{"title":"실패한 웹훅 전송 재시도","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/webhook-endpoints/{id}/deliveries/{delivery_id}/retries","href":"/api-reference/webhook-endpoint-controller/실패한-웹훅-전송-재시도"},{"title":"웹훅 엔드포인트 복원","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/webhook-endpoints/{id}/restorations","href":"/api-reference/webhook-endpoint-controller/웹훅-엔드포인트-복원"},{"title":"웹훅 시험 이벤트 발행","deprecated":null,"version":null,"openapi":"https://raw.githubusercontent.com/asm17-ms2/meterengine/main/backend/openapi.yaml post /v1/webhook-endpoints/{id}/test-events","href":"/api-reference/webhook-endpoint-controller/웹훅-시험-이벤트-발행"}]}]}]}]}]},"basePath":"","title":"인보이스 목록 조회 - MeterEngine","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}