# 소득 통합 조회



본인 간편인증 후 국세청의 소득 통합 조회 자료를 확인합니다. 조회연도: 실제로 조회한 전체 귀속연도 목록(4자리 문자열). 금융소득이 없는 연도도 포함한다. 연도별: 귀속연도별 소득 집계. 합계 건수가 0인 연도는 담기지 않아 조회연도보다 적을 수 있다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/req_income_bundle 응답 필드

- `data` (object): 인증 요청 결과

- `data.schemaVersion` (string): 결과 스키마 버전 (고정값: "1.0")

- `data.transactionId` (string): 결과 조회에 사용하는 트랜잭션 ID

- `data.product` (string): 조회 항목 코드. 결과조회에도 같은 값이 오므로 어느 항목의 결과인지 대조할 수 있습니다.

- `data.status` (string): 처리 상태 (AUTH_REQUESTED: 인증 요청 완료)

- `data.resultAvailable` (boolean): 결과 데이터 포함 여부. 인증 요청 응답은 항상 false 입니다.

- `data.charged` (boolean): 이번 호출의 과금 발생 여부. 실제 발송에 성공하면 true 입니다.

- `data.sources` (array): 아래 하위 항목을 확인하세요.

- `data.message` (string): 상태 메시지 (고정값: "인증 대기중입니다.")

- `data.expiresAt` (string): 인증 유효 기한(ISO 8601). 이 시각까지 승인하지 못하면 인증 실패 처리됩니다.

- `data.success` (integer): 과금 여부0: 실패 또는 재사용(무과금)1: 발송 성공(과금)

- `data.approvals` (integer): 필요한 간편인증 승인 횟수. 조회 항목 하나당 1회입니다.

- `api` (object): API 호출 공통 데이터

- `api.success` (boolean): API 서버 정상 응답 여부

- `api.cost` (integer): API 호출 요금

- `api.ms` (integer): API 응답 시간

- `api.pl_id` (integer): API 결제 로그 ID

## 인증 요청: POST /rest/req_income_bundle



### 입력

- `name` (string, 필수): 이름

- `birthDate` (string, 필수): 생년월일 8자리(YYYYMMDD)

- `phone` (string, 필수): 휴대전화 번호 (본인 명의, 숫자만)

- `authProvider` (string, 필수): 간편인증 방식 (아래 지원 목록 참고)

- `incomeYears` (integer, 선택): 소득 조회 연수(1~5). 기본 1



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "schemaVersion": {
          "type": "string",
          "description": "결과 스키마 버전 (고정값: \"1.0\")"
        },
        "transactionId": {
          "type": "string",
          "description": "결과 조회에 사용하는 트랜잭션 ID"
        },
        "product": {
          "type": "string",
          "description": "조회 항목 코드. 결과조회에도 같은 값이 오므로 어느 항목의 결과인지 대조할 수 있습니다."
        },
        "status": {
          "type": "string",
          "description": "처리 상태 (AUTH_REQUESTED: 인증 요청 완료)"
        },
        "resultAvailable": {
          "type": "boolean",
          "description": "결과 데이터 포함 여부. 인증 요청 응답은 항상 false 입니다."
        },
        "charged": {
          "type": "boolean",
          "description": "이번 호출의 과금 발생 여부. 실제 발송에 성공하면 true 입니다."
        },
        "sources": {
          "type": "array",
          "items": {}
        },
        "message": {
          "type": "string",
          "description": "상태 메시지 (고정값: \"인증 대기중입니다.\")"
        },
        "expiresAt": {
          "type": "string",
          "description": "인증 유효 기한(ISO 8601). 이 시각까지 승인하지 못하면 인증 실패 처리됩니다."
        },
        "success": {
          "type": "integer",
          "description": "과금 여부0: 실패 또는 재사용(무과금)1: 발송 성공(과금)"
        },
        "approvals": {
          "type": "integer",
          "description": "필요한 간편인증 승인 횟수. 조회 항목 하나당 1회입니다."
        }
      },
      "description": "인증 요청 결과"
    },
    "api": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "API 서버 정상 응답 여부"
        },
        "cost": {
          "type": "integer",
          "description": "API 호출 요금"
        },
        "ms": {
          "type": "integer",
          "description": "API 응답 시간"
        },
        "pl_id": {
          "type": "integer",
          "description": "API 결제 로그 ID"
        }
      },
      "description": "API 호출 공통 데이터"
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "schemaVersion": "1.0",
    "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
    "product": "income_bundle",
    "status": "AUTH_REQUESTED",
    "resultAvailable": false,
    "charged": true,
    "sources": [],
    "message": "인증 대기중입니다.",
    "expiresAt": "2026-09-20T05:24:07+09:00",
    "success": 1
  },
  "api": {
    "success": true,
    "cost": 20,
    "ms": 1284,
    "pl_id": 4902
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/req_income_bundle' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'name=홍길동' \
  --form-string 'birthDate=19900101' \
  --form-string 'phone=01011112222' \
  --form-string 'authProvider=kakao' \
  --form-string 'incomeYears=3'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("name", "홍길동");
form.append("birthDate", "19900101");
form.append("phone", "01011112222");
form.append("authProvider", "kakao");
form.append("incomeYears", "3");
const response = await fetch("https://apick.app/rest/req_income_bundle", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("name", (None, "홍길동")),
    ("birthDate", (None, "19900101")),
    ("phone", (None, "01011112222")),
    ("authProvider", (None, "kakao")),
    ("incomeYears", (None, "3")),
]
response = requests.request("POST", "https://apick.app/rest/req_income_bundle",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'name' => '홍길동',
    'birthDate' => '19900101',
    'phone' => '01011112222',
    'authProvider' => 'kakao',
    'incomeYears' => '3',
];
$curl = curl_init('https://apick.app/rest/req_income_bundle');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## POST /rest/get_income_bundle 응답 필드

- `data` (object): 상태·결과

- `data.schemaVersion` (string): 결과 스키마 버전 (고정값: "1.0")

- `data.transactionId` (string): 트랜잭션 ID

- `data.product` (string): 조회 항목 코드. 인증요청 응답과 같은 값입니다.

- `data.status` (string): 처리 상태 (위 표 참고)

- `data.resultAvailable` (boolean): 실제 결과 포함 여부. 과금 여부도 이 값으로 결정됩니다.

- `data.charged` (boolean): 이번 호출의 과금 발생 여부. 최초 결과 반환에서만 true 입니다.

- `data.sources` (array): 항상 포함됩니다. 값이 없으면 빈 배열 [] 입니다. 항목이 여러 개인 상품에서 어느 것이 성공·실패했는지 알려줍니다. 각 항목은 source(제공 기관명), type(데이터 종류), status(SUCCESS/FAILED). 수집이 끝나기 전에는 아직 확정되지 않은 기관이 FAILED 로 보일 수 있습니다.

- `data.sources[].source` (string): 아래 하위 항목을 확인하세요.

- `data.sources[].type` (string): 아래 하위 항목을 확인하세요.

- `data.sources[].status` (string): 아래 하위 항목을 확인하세요.

- `data.message` (string): 상태 메시지

- `data.expiresAt` (string): 아래 하위 항목을 확인하세요.

- `data.success` (integer): 과금 여부0: 결과 없음 또는 재조회(무과금)1: 최초 결과 반환(과금)

- `data.progress` (object): 진행률(COLLECTING 일 때). total(전체 항목), completed(완료 항목)

- `data.progress.total` (integer): 아래 하위 항목을 확인하세요.

- `data.progress.completed` (integer): 아래 하위 항목을 확인하세요.

- `data.checkedAt` (string): 실제 정보를 확인한 시각. 한국시간(UTC+09:00) ISO 8601 이며 재조회 유효기간의 기준입니다.

- `data.resultExpiresAt` (string): 결과 재조회 만료 시각. 한국시간(UTC+09:00) ISO 8601 입니다.

- `data.result` (object): 조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다.

- `data.result.personalIncome` (object): 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요.

- `data.result.personalIncome.조회연도` (array): 실제로 조회한 전체 귀속연도 목록(4자리 문자열). 금융소득이 없는 연도도 포함한다.

- `data.result.personalIncome.연도별` (array): 귀속연도별 소득 집계. 합계 건수가 0인 연도는 담기지 않아 조회연도보다 적을 수 있다.

- `data.result.personalIncome.연도별[].귀속연도` (string): 귀속연도 4자리

- `data.result.personalIncome.연도별[].소득종류별` (object): 확인된 이자소득·배당소득별 집계. 근로·사업소득은 포함하지 않는다. 확인되지 않은 종류의 키는 생략된다.

- `data.result.personalIncome.연도별[].소득종류별.이자소득` (object): 이자소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 값이 없으면 생략되거나 빈 값입니다.

- `data.result.personalIncome.연도별[].소득종류별.이자소득.건수` (integer): 소득 건수

- `data.result.personalIncome.연도별[].소득종류별.이자소득.소득금액` (integer): 소득금액 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.이자소득.소득세` (integer): 소득세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.이자소득.지방소득세` (integer): 지방소득세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.이자소득.농어촌특별세` (integer): 농어촌특별세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.이자소득.세액합계` (integer): 소득세 + 지방소득세 + 농어촌특별세(원)

- `data.result.personalIncome.연도별[].소득종류별.배당소득` (object): 배당소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 값이 없으면 생략되거나 빈 값입니다.

- `data.result.personalIncome.연도별[].소득종류별.배당소득.건수` (integer): 소득 건수

- `data.result.personalIncome.연도별[].소득종류별.배당소득.소득금액` (integer): 소득금액 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.배당소득.소득세` (integer): 소득세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.배당소득.지방소득세` (integer): 지방소득세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.배당소득.농어촌특별세` (integer): 농어촌특별세 합계(원)

- `data.result.personalIncome.연도별[].소득종류별.배당소득.세액합계` (integer): 소득세 + 지방소득세 + 농어촌특별세(원)

- `data.result.personalIncome.연도별[].합계` (object): 그 연도의 전체 합계

- `data.result.personalIncome.연도별[].합계.건수` (integer): 소득 건수

- `data.result.personalIncome.연도별[].합계.소득금액` (integer): 소득금액 합계(원)

- `data.result.personalIncome.연도별[].합계.소득세` (integer): 소득세 합계(원)

- `data.result.personalIncome.연도별[].합계.지방소득세` (integer): 지방소득세 합계(원)

- `data.result.personalIncome.연도별[].합계.농어촌특별세` (integer): 농어촌특별세 합계(원)

- `data.result.personalIncome.연도별[].합계.세액합계` (integer): 소득세 + 지방소득세 + 농어촌특별세(원)

- `data.result.cashReceiptDeduction` (object): 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요.

- `data.result.cashReceiptDeduction.조회연도` (array): 실제로 조회된 귀속연도 목록(4자리 문자열).

- `data.result.cashReceiptDeduction.전체합계` (object): 조회한 전체 연도의 합계.

- `data.result.cashReceiptDeduction.전체합계.건수` (integer): 현금영수증 사용 건수

- `data.result.cashReceiptDeduction.전체합계.사용금액` (integer): 사용금액 합계(원)

- `data.result.cashReceiptDeduction.전체합계.소득공제건수` (integer): 소득공제에 반영된 건수

- `data.result.cashReceiptDeduction.전체합계.소득공제금액` (integer): 소득공제에 반영된 금액(원)

- `data.result.cashReceiptDeduction.연도별` (object): 귀속연도별 합계와 사용내역.

- `data.result.cashReceiptDeduction.연도별.귀속연도` (string): 귀속연도 4자리

- `data.result.cashReceiptDeduction.연도별.합계` (object): 그 연도의 합계

- `data.result.cashReceiptDeduction.연도별.합계.건수` (integer): 현금영수증 사용 건수

- `data.result.cashReceiptDeduction.연도별.합계.사용금액` (integer): 사용금액 합계(원)

- `data.result.cashReceiptDeduction.연도별.합계.소득공제건수` (integer): 소득공제에 반영된 건수

- `data.result.cashReceiptDeduction.연도별.합계.소득공제금액` (integer): 소득공제에 반영된 금액(원)

- `data.result.cashReceiptDeduction.연도별.사용내역` (array): 건별 사용내역. 사용이 없으면 빈 배열이다.

- `data.result.cashReceiptDeduction.연도별.사용내역[].거래일시` (string): 승인 일시

- `data.result.cashReceiptDeduction.연도별.사용내역[].가맹점` (string): 가맹점명

- `data.result.cashReceiptDeduction.연도별.사용내역[].금액` (integer): 승인 금액(원)

- `data.result.cashReceiptDeduction.연도별.사용내역[].승인번호` (string): 현금영수증 승인번호

- `data.result.cashReceiptDeduction.연도별.사용내역[].거래구분` (string): 승인·취소 구분

- `data.result.cashReceiptDeduction.연도별.사용내역[].거래상태` (string): 거래 상태

- `data.result.cashReceiptDeduction.연도별.사용내역[].소득공제대상` (boolean): 소득공제 대상이면 true, 아니면 false.

- `data.result.cashReceiptDeduction.연도별.사용내역[].소득공제반영` (boolean): 소득공제가 반영됐으면 true, 아니면 false.

- `data.result.incomeByPayer` (object): 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요.

- `data.result.incomeByPayer.조회연도` (array): 실제로 조회한 귀속연도 목록(4자리 문자열).

- `data.result.incomeByPayer.전체합계` (object): 조회한 전체 유형·연도의 합계. 지급명세서가 하나도 없으면 건수가 0이다.

- `data.result.incomeByPayer.전체합계.건수` (integer): 지급명세서 건수

- `data.result.incomeByPayer.전체합계.지급액` (integer): 그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등).

- `data.result.incomeByPayer.전체합계.소득세` (integer): 소득세 합계(원)

- `data.result.incomeByPayer.전체합계.지방소득세` (integer): 지방소득세 합계(원)

- `data.result.incomeByPayer.유형별` (object): 지급명세서 자료종류별 소득내역. 내역이 있는 유형만 담긴다.

- `data.result.incomeByPayer.유형별.유형` (string): 자료종류. 사업장제공자·간이기타·간이사업·간이근로·일용 중 하나다.

- `data.result.incomeByPayer.유형별.합계` (object): 그 유형의 합계

- `data.result.incomeByPayer.유형별.합계.건수` (integer): 지급명세서 건수

- `data.result.incomeByPayer.유형별.합계.지급액` (integer): 그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등).

- `data.result.incomeByPayer.유형별.합계.소득세` (integer): 소득세 합계(원)

- `data.result.incomeByPayer.유형별.합계.지방소득세` (integer): 지방소득세 합계(원)

- `data.result.incomeByPayer.유형별.내역` (array): 지급자별 소득 한 건씩. 자료종류와 값 존재 여부에 따라 하위 필드가 생략된다.

- `data.result.incomeByPayer.유형별.내역[].지급명세서종류` (string): 지급명세서 종류 표기

- `data.result.incomeByPayer.유형별.내역[].지급자` (string): 지급자(징수의무자)명

- `data.result.incomeByPayer.유형별.내역[].사업자등록번호` (string): 지급자 사업자등록번호 10자리(하이픈 포함)

- `data.result.incomeByPayer.유형별.내역[].귀속연도` (string): 귀속연도 4자리

- `data.result.incomeByPayer.유형별.내역[].지급연도` (string): 지급연도 4자리. 간이기타·간이사업에만 온다.

- `data.result.incomeByPayer.유형별.내역[].소득구분` (string): 소득구분 표기. 간이기타에만 온다.

- `data.result.incomeByPayer.유형별.내역[].업종구분` (string): 업종구분 표기. 간이사업에만 온다.

- `data.result.incomeByPayer.유형별.내역[].용역구분` (string): 용역구분 표기. 사업장제공자에만 온다.

- `data.result.incomeByPayer.유형별.내역[].총지급액` (integer): 총지급액(원). 간이기타·간이사업에 온다.

- `data.result.incomeByPayer.유형별.내역[].과세소득` (integer): 과세소득(원). 일용에 온다.

- `data.result.incomeByPayer.유형별.내역[].용역제공대가` (integer): 용역제공대가(원). 사업장제공자에 온다.

- `data.result.incomeByPayer.유형별.내역[].급여 등` (integer): 급여 등(원). 간이근로에 온다.

- `data.result.incomeByPayer.유형별.내역[].인정상여금액` (integer): 인정상여금액(원). 간이근로에 온다.

- `data.result.incomeByPayer.유형별.내역[].비과세소득` (integer): 비과세소득(원). 일용에 온다.

- `data.result.incomeByPayer.유형별.내역[].필요경비` (integer): 필요경비(원). 간이기타에 온다.

- `data.result.incomeByPayer.유형별.내역[].소득금액` (integer): 소득금액(원). 간이기타에 온다.

- `data.result.incomeByPayer.유형별.내역[].소득세` (integer): 소득세(원)

- `data.result.incomeByPayer.유형별.내역[].지방소득세` (integer): 지방소득세(원)

- `data.result.incomeDataCheck` (object): 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요.

- `data.result.incomeDataCheck.조회연도` (array): 실제로 조회된 귀속연도 목록(4자리 문자열).

- `data.result.incomeDataCheck.연도별` (object): 귀속연도별 소득자료 합계. 자료가 없는 연도는 담기지 않으며 확인되지 않은 금액 필드는 생략될 수 있다.

- `data.result.incomeDataCheck.연도별.귀속연도` (string): 귀속연도 4자리

- `data.result.incomeDataCheck.연도별.연간소득총액` (integer): 연간 소득 총액(원)

- `data.result.incomeDataCheck.연도별.근로소득` (integer): 상용·일용 근로소득 합계(원)

- `data.result.incomeDataCheck.연도별.근로소득(간이)` (integer): 간이지급명세서로 제출된 근로소득(원)

- `data.result.incomeDataCheck.연도별.사업소득(간이)` (integer): 간이지급명세서로 제출된 사업소득(원)

- `data.result.incomeDataCheck.연도별.원천징수 사업소득` (integer): 원천징수된 사업소득(원)

- `data.result.incomeDataCheck.연도별.사업장 사업소득` (integer): 사업장에서 발생한 사업소득(원)

- `data.result.incomeDataCheck.연도별.금융소득` (integer): 이자·배당 등 금융소득(원)

- `data.result.incomeDataCheck.연도별.연금소득` (integer): 연금소득(원)

- `data.result.incomeDataCheck.연도별.기타소득` (integer): 기타소득(원)

- `data.result.incomeDataCheck.연도별.종교인소득` (integer): 종교인소득(원)

- `data.result.incomeDataCheck.근로소득상세` (object): 조회 시점의 반기 기준 근로소득 상세. 키는 항상 존재하며 조회 기간이 아니면 null이다. null 허용.

- `data.result.incomeDataCheck.근로소득상세.귀속연도` (string): 귀속연도 4자리

- `data.result.incomeDataCheck.근로소득상세.신청 구분` (string): 상반기분 또는 하반기분

- `data.result.incomeDataCheck.근로소득상세.근로소득 합계` (integer): 상용·일용 근로소득 합계(원)

- `data.result.incomeDataCheck.근로소득상세.상반기 근로소득` (integer): 상반기 근로소득(원)

- `data.result.incomeDataCheck.근로소득상세.하반기 근로소득` (integer): 하반기 근로소득(원)

- `data.result.incomeDataCheck.근로소득상세.상용근로소득` (integer): 상용근로소득 합계(원)

- `data.result.incomeDataCheck.근로소득상세.상반기 상용근로소득` (integer): 상반기 상용근로소득(원)

- `data.result.incomeDataCheck.근로소득상세.하반기 상용근로소득` (integer): 하반기 상용근로소득(원)

- `data.result.incomeDataCheck.근로소득상세.일용근로소득` (integer): 일용근로소득 합계(원)

- `data.result.incomeDataCheck.근로소득상세.상반기 일용근로소득` (integer): 상반기 일용근로소득(원)

- `data.result.incomeDataCheck.근로소득상세.하반기 일용근로소득` (integer): 하반기 일용근로소득(원)

- `data.result.incomeDataCheck.지급자별` (object): 지급자별 소득자료. 자료가 없으면 빈 배열이며 하위 필드는 값이 있을 때만 포함된다.

- `data.result.incomeDataCheck.지급자별.자료출처` (string): 소득자료 종류 표기

- `data.result.incomeDataCheck.지급자별.지급자 상호(법인명)` (string): 지급자 상호 또는 법인명

- `data.result.incomeDataCheck.지급자별.지급자 사업자등록번호` (string): 지급자 사업자등록번호. 하이픈 없이 10자리로 온다.

- `data.result.incomeDataCheck.지급자별.수입금액` (integer): 수입금액(원)

- `data.result.incomeDataCheck.지급자별.업종` (string): 업종 표기

- `data.result.incomeDataCheck.지급자별.업종코드` (string): 업종코드

- `data.errorCode` (string): 오류 구분. RESULT_EXPIRED(재조회 기간 만료) / AUTH_EXPIRED / AUTH_REJECTED / COLLECT_FAILED

- `api` (object): API 호출 공통 데이터

- `api.success` (boolean): API 서버 정상 응답 여부

- `api.cost` (integer): API 호출 요금

- `api.ms` (integer): API 응답 시간

- `api.pl_id` (integer): API 결제 로그 ID

## 결과 조회: POST /rest/get_income_bundle



### 입력

- `transactionId` (string, 필수): /rest/req_income_bundle 가 반환한 트랜잭션 ID



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "schemaVersion": {
          "type": "string",
          "description": "결과 스키마 버전 (고정값: \"1.0\")"
        },
        "transactionId": {
          "type": "string",
          "description": "트랜잭션 ID"
        },
        "product": {
          "type": "string",
          "description": "조회 항목 코드. 인증요청 응답과 같은 값입니다."
        },
        "status": {
          "type": "string",
          "description": "처리 상태 (위 표 참고)"
        },
        "resultAvailable": {
          "type": "boolean",
          "description": "실제 결과 포함 여부. 과금 여부도 이 값으로 결정됩니다."
        },
        "charged": {
          "type": "boolean",
          "description": "이번 호출의 과금 발생 여부. 최초 결과 반환에서만 true 입니다."
        },
        "sources": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "source": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            }
          },
          "description": "항상 포함됩니다. 값이 없으면 빈 배열 [] 입니다. 항목이 여러 개인 상품에서 어느 것이 성공·실패했는지 알려줍니다. 각 항목은 source(제공 기관명), type(데이터 종류), status(SUCCESS/FAILED). 수집이 끝나기 전에는 아직 확정되지 않은 기관이 FAILED 로 보일 수 있습니다."
        },
        "message": {
          "type": "string",
          "description": "상태 메시지"
        },
        "expiresAt": {
          "type": "string"
        },
        "success": {
          "type": "integer",
          "description": "과금 여부0: 결과 없음 또는 재조회(무과금)1: 최초 결과 반환(과금)"
        },
        "progress": {
          "type": "object",
          "properties": {
            "total": {
              "type": "integer"
            },
            "completed": {
              "type": "integer"
            }
          },
          "description": "진행률(COLLECTING 일 때). total(전체 항목), completed(완료 항목)"
        },
        "checkedAt": {
          "type": "string",
          "description": "실제 정보를 확인한 시각. 한국시간(UTC+09:00) ISO 8601 이며 재조회 유효기간의 기준입니다."
        },
        "resultExpiresAt": {
          "type": "string",
          "description": "결과 재조회 만료 시각. 한국시간(UTC+09:00) ISO 8601 입니다."
        },
        "result": {
          "type": "object",
          "properties": {
            "personalIncome": {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "조회연도": {
                  "type": "array",
                  "description": "실제로 조회한 전체 귀속연도 목록(4자리 문자열). 금융소득이 없는 연도도 포함한다.",
                  "items": {
                    "type": "string"
                  }
                },
                "연도별": {
                  "type": "array",
                  "description": "귀속연도별 소득 집계. 합계 건수가 0인 연도는 담기지 않아 조회연도보다 적을 수 있다.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "귀속연도": {
                        "type": "string",
                        "description": "귀속연도 4자리"
                      },
                      "소득종류별": {
                        "type": "object",
                        "description": "확인된 이자소득·배당소득별 집계. 근로·사업소득은 포함하지 않는다. 확인되지 않은 종류의 키는 생략된다.",
                        "properties": {
                          "이자소득": {
                            "type": "object",
                            "description": "이자소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 값이 없으면 생략되거나 빈 값입니다.",
                            "properties": {
                              "건수": {
                                "type": "integer",
                                "description": "소득 건수"
                              },
                              "소득금액": {
                                "type": "integer",
                                "description": "소득금액 합계(원)"
                              },
                              "소득세": {
                                "type": "integer",
                                "description": "소득세 합계(원)"
                              },
                              "지방소득세": {
                                "type": "integer",
                                "description": "지방소득세 합계(원)"
                              },
                              "농어촌특별세": {
                                "type": "integer",
                                "description": "농어촌특별세 합계(원)"
                              },
                              "세액합계": {
                                "type": "integer",
                                "description": "소득세 + 지방소득세 + 농어촌특별세(원)"
                              }
                            }
                          },
                          "배당소득": {
                            "type": "object",
                            "description": "배당소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 값이 없으면 생략되거나 빈 값입니다.",
                            "properties": {
                              "건수": {
                                "type": "integer",
                                "description": "소득 건수"
                              },
                              "소득금액": {
                                "type": "integer",
                                "description": "소득금액 합계(원)"
                              },
                              "소득세": {
                                "type": "integer",
                                "description": "소득세 합계(원)"
                              },
                              "지방소득세": {
                                "type": "integer",
                                "description": "지방소득세 합계(원)"
                              },
                              "농어촌특별세": {
                                "type": "integer",
                                "description": "농어촌특별세 합계(원)"
                              },
                              "세액합계": {
                                "type": "integer",
                                "description": "소득세 + 지방소득세 + 농어촌특별세(원)"
                              }
                            }
                          }
                        }
                      },
                      "합계": {
                        "type": "object",
                        "description": "그 연도의 전체 합계",
                        "properties": {
                          "건수": {
                            "type": "integer",
                            "description": "소득 건수"
                          },
                          "소득금액": {
                            "type": "integer",
                            "description": "소득금액 합계(원)"
                          },
                          "소득세": {
                            "type": "integer",
                            "description": "소득세 합계(원)"
                          },
                          "지방소득세": {
                            "type": "integer",
                            "description": "지방소득세 합계(원)"
                          },
                          "농어촌특별세": {
                            "type": "integer",
                            "description": "농어촌특별세 합계(원)"
                          },
                          "세액합계": {
                            "type": "integer",
                            "description": "소득세 + 지방소득세 + 농어촌특별세(원)"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "description": "이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요."
            },
            "cashReceiptDeduction": {
              "type": "object",
              "properties": {
                "조회연도": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "실제로 조회된 귀속연도 목록(4자리 문자열)."
                },
                "전체합계": {
                  "type": "object",
                  "properties": {
                    "건수": {
                      "type": "integer",
                      "description": "현금영수증 사용 건수"
                    },
                    "사용금액": {
                      "type": "integer",
                      "description": "사용금액 합계(원)"
                    },
                    "소득공제건수": {
                      "type": "integer",
                      "description": "소득공제에 반영된 건수"
                    },
                    "소득공제금액": {
                      "type": "integer",
                      "description": "소득공제에 반영된 금액(원)"
                    }
                  },
                  "description": "조회한 전체 연도의 합계."
                },
                "연도별": {
                  "type": "object",
                  "items": {
                    "type": "object",
                    "properties": {
                      "귀속연도": {
                        "type": "string"
                      },
                      "합계": {
                        "type": "object",
                        "properties": {
                          "건수": {
                            "type": "integer"
                          },
                          "사용금액": {
                            "type": "integer"
                          },
                          "소득공제건수": {
                            "type": "integer"
                          },
                          "소득공제금액": {
                            "type": "integer"
                          }
                        }
                      },
                      "사용내역": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "거래일시": {
                              "type": "string"
                            },
                            "가맹점": {
                              "type": "string"
                            },
                            "금액": {
                              "type": "integer"
                            },
                            "승인번호": {
                              "type": "string"
                            },
                            "거래구분": {
                              "type": "string"
                            },
                            "거래상태": {
                              "type": "string"
                            },
                            "소득공제대상": {
                              "type": "boolean"
                            },
                            "소득공제반영": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  },
                  "description": "귀속연도별 합계와 사용내역.",
                  "properties": {
                    "귀속연도": {
                      "type": "string",
                      "description": "귀속연도 4자리"
                    },
                    "합계": {
                      "type": "object",
                      "description": "그 연도의 합계",
                      "properties": {
                        "건수": {
                          "type": "integer",
                          "description": "현금영수증 사용 건수"
                        },
                        "사용금액": {
                          "type": "integer",
                          "description": "사용금액 합계(원)"
                        },
                        "소득공제건수": {
                          "type": "integer",
                          "description": "소득공제에 반영된 건수"
                        },
                        "소득공제금액": {
                          "type": "integer",
                          "description": "소득공제에 반영된 금액(원)"
                        }
                      }
                    },
                    "사용내역": {
                      "type": "array",
                      "description": "건별 사용내역. 사용이 없으면 빈 배열이다.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "거래일시": {
                            "type": "string",
                            "description": "승인 일시"
                          },
                          "가맹점": {
                            "type": "string",
                            "description": "가맹점명"
                          },
                          "금액": {
                            "type": "integer",
                            "description": "승인 금액(원)"
                          },
                          "승인번호": {
                            "type": "string",
                            "description": "현금영수증 승인번호"
                          },
                          "거래구분": {
                            "type": "string",
                            "description": "승인·취소 구분"
                          },
                          "거래상태": {
                            "type": "string",
                            "description": "거래 상태"
                          },
                          "소득공제대상": {
                            "type": "boolean",
                            "description": "소득공제 대상이면 true, 아니면 false."
                          },
                          "소득공제반영": {
                            "type": "boolean",
                            "description": "소득공제가 반영됐으면 true, 아니면 false."
                          }
                        }
                      }
                    }
                  }
                }
              },
              "description": "이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요."
            },
            "incomeByPayer": {
              "type": "object",
              "properties": {
                "조회연도": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "실제로 조회한 귀속연도 목록(4자리 문자열)."
                },
                "전체합계": {
                  "type": "object",
                  "properties": {
                    "건수": {
                      "type": "integer",
                      "description": "지급명세서 건수"
                    },
                    "지급액": {
                      "type": "integer",
                      "description": "그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등)."
                    },
                    "소득세": {
                      "type": "integer",
                      "description": "소득세 합계(원)"
                    },
                    "지방소득세": {
                      "type": "integer",
                      "description": "지방소득세 합계(원)"
                    }
                  },
                  "description": "조회한 전체 유형·연도의 합계. 지급명세서가 하나도 없으면 건수가 0이다."
                },
                "유형별": {
                  "type": "object",
                  "items": {
                    "type": "object",
                    "properties": {
                      "유형": {
                        "type": "string"
                      },
                      "합계": {
                        "type": "object",
                        "properties": {
                          "건수": {
                            "type": "integer"
                          },
                          "지급액": {
                            "type": "integer"
                          },
                          "소득세": {
                            "type": "integer"
                          },
                          "지방소득세": {
                            "type": "integer"
                          }
                        }
                      },
                      "내역": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "지급명세서종류": {
                              "type": "string"
                            },
                            "지급자": {
                              "type": "string"
                            },
                            "사업자등록번호": {
                              "type": "string"
                            },
                            "귀속연도": {
                              "type": "string"
                            },
                            "지급연도": {
                              "type": "string"
                            },
                            "소득구분": {
                              "type": "string"
                            },
                            "업종구분": {
                              "type": "string"
                            },
                            "용역구분": {
                              "type": "string"
                            },
                            "총지급액": {
                              "type": "integer"
                            },
                            "과세소득": {
                              "type": "integer"
                            },
                            "용역제공대가": {
                              "type": "integer"
                            },
                            "급여 등": {
                              "type": "integer"
                            },
                            "인정상여금액": {
                              "type": "integer"
                            },
                            "비과세소득": {
                              "type": "integer"
                            },
                            "필요경비": {
                              "type": "integer"
                            },
                            "소득금액": {
                              "type": "integer"
                            },
                            "소득세": {
                              "type": "integer"
                            },
                            "지방소득세": {
                              "type": "integer"
                            }
                          }
                        }
                      }
                    }
                  },
                  "description": "지급명세서 자료종류별 소득내역. 내역이 있는 유형만 담긴다.",
                  "properties": {
                    "유형": {
                      "type": "string",
                      "description": "자료종류. 사업장제공자·간이기타·간이사업·간이근로·일용 중 하나다."
                    },
                    "합계": {
                      "type": "object",
                      "description": "그 유형의 합계",
                      "properties": {
                        "건수": {
                          "type": "integer",
                          "description": "지급명세서 건수"
                        },
                        "지급액": {
                          "type": "integer",
                          "description": "그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등)."
                        },
                        "소득세": {
                          "type": "integer",
                          "description": "소득세 합계(원)"
                        },
                        "지방소득세": {
                          "type": "integer",
                          "description": "지방소득세 합계(원)"
                        }
                      }
                    },
                    "내역": {
                      "type": "array",
                      "description": "지급자별 소득 한 건씩. 자료종류와 값 존재 여부에 따라 하위 필드가 생략된다.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "지급명세서종류": {
                            "type": "string",
                            "description": "지급명세서 종류 표기"
                          },
                          "지급자": {
                            "type": "string",
                            "description": "지급자(징수의무자)명"
                          },
                          "사업자등록번호": {
                            "type": "string",
                            "description": "지급자 사업자등록번호 10자리(하이픈 포함)"
                          },
                          "귀속연도": {
                            "type": "string",
                            "description": "귀속연도 4자리"
                          },
                          "지급연도": {
                            "type": "string",
                            "description": "지급연도 4자리. 간이기타·간이사업에만 온다."
                          },
                          "소득구분": {
                            "type": "string",
                            "description": "소득구분 표기. 간이기타에만 온다."
                          },
                          "업종구분": {
                            "type": "string",
                            "description": "업종구분 표기. 간이사업에만 온다."
                          },
                          "용역구분": {
                            "type": "string",
                            "description": "용역구분 표기. 사업장제공자에만 온다."
                          },
                          "총지급액": {
                            "type": "integer",
                            "description": "총지급액(원). 간이기타·간이사업에 온다."
                          },
                          "과세소득": {
                            "type": "integer",
                            "description": "과세소득(원). 일용에 온다."
                          },
                          "용역제공대가": {
                            "type": "integer",
                            "description": "용역제공대가(원). 사업장제공자에 온다."
                          },
                          "급여 등": {
                            "type": "integer",
                            "description": "급여 등(원). 간이근로에 온다."
                          },
                          "인정상여금액": {
                            "type": "integer",
                            "description": "인정상여금액(원). 간이근로에 온다."
                          },
                          "비과세소득": {
                            "type": "integer",
                            "description": "비과세소득(원). 일용에 온다."
                          },
                          "필요경비": {
                            "type": "integer",
                            "description": "필요경비(원). 간이기타에 온다."
                          },
                          "소득금액": {
                            "type": "integer",
                            "description": "소득금액(원). 간이기타에 온다."
                          },
                          "소득세": {
                            "type": "integer",
                            "description": "소득세(원)"
                          },
                          "지방소득세": {
                            "type": "integer",
                            "description": "지방소득세(원)"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "description": "이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요."
            },
            "incomeDataCheck": {
              "type": "object",
              "properties": {
                "조회연도": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "실제로 조회된 귀속연도 목록(4자리 문자열)."
                },
                "연도별": {
                  "type": "object",
                  "items": {
                    "type": "object",
                    "properties": {
                      "귀속연도": {
                        "type": "string"
                      },
                      "연간소득총액": {
                        "type": "integer"
                      },
                      "근로소득": {
                        "type": "integer"
                      },
                      "근로소득(간이)": {
                        "type": "integer"
                      },
                      "사업소득(간이)": {
                        "type": "integer"
                      },
                      "원천징수 사업소득": {
                        "type": "integer"
                      },
                      "사업장 사업소득": {
                        "type": "integer"
                      },
                      "금융소득": {
                        "type": "integer"
                      },
                      "연금소득": {
                        "type": "integer"
                      },
                      "기타소득": {
                        "type": "integer"
                      },
                      "종교인소득": {
                        "type": "integer"
                      }
                    }
                  },
                  "description": "귀속연도별 소득자료 합계. 자료가 없는 연도는 담기지 않으며 확인되지 않은 금액 필드는 생략될 수 있다.",
                  "properties": {
                    "귀속연도": {
                      "type": "string",
                      "description": "귀속연도 4자리"
                    },
                    "연간소득총액": {
                      "type": "integer",
                      "description": "연간 소득 총액(원)"
                    },
                    "근로소득": {
                      "type": "integer",
                      "description": "상용·일용 근로소득 합계(원)"
                    },
                    "근로소득(간이)": {
                      "type": "integer",
                      "description": "간이지급명세서로 제출된 근로소득(원)"
                    },
                    "사업소득(간이)": {
                      "type": "integer",
                      "description": "간이지급명세서로 제출된 사업소득(원)"
                    },
                    "원천징수 사업소득": {
                      "type": "integer",
                      "description": "원천징수된 사업소득(원)"
                    },
                    "사업장 사업소득": {
                      "type": "integer",
                      "description": "사업장에서 발생한 사업소득(원)"
                    },
                    "금융소득": {
                      "type": "integer",
                      "description": "이자·배당 등 금융소득(원)"
                    },
                    "연금소득": {
                      "type": "integer",
                      "description": "연금소득(원)"
                    },
                    "기타소득": {
                      "type": "integer",
                      "description": "기타소득(원)"
                    },
                    "종교인소득": {
                      "type": "integer",
                      "description": "종교인소득(원)"
                    }
                  }
                },
                "근로소득상세": {
                  "type": "object",
                  "properties": {
                    "귀속연도": {
                      "type": "string",
                      "description": "귀속연도 4자리"
                    },
                    "신청 구분": {
                      "type": "string",
                      "description": "상반기분 또는 하반기분"
                    },
                    "근로소득 합계": {
                      "type": "integer",
                      "description": "상용·일용 근로소득 합계(원)"
                    },
                    "상반기 근로소득": {
                      "type": "integer",
                      "description": "상반기 근로소득(원)"
                    },
                    "하반기 근로소득": {
                      "type": "integer",
                      "description": "하반기 근로소득(원)"
                    },
                    "상용근로소득": {
                      "type": "integer",
                      "description": "상용근로소득 합계(원)"
                    },
                    "상반기 상용근로소득": {
                      "type": "integer",
                      "description": "상반기 상용근로소득(원)"
                    },
                    "하반기 상용근로소득": {
                      "type": "integer",
                      "description": "하반기 상용근로소득(원)"
                    },
                    "일용근로소득": {
                      "type": "integer",
                      "description": "일용근로소득 합계(원)"
                    },
                    "상반기 일용근로소득": {
                      "type": "integer",
                      "description": "상반기 일용근로소득(원)"
                    },
                    "하반기 일용근로소득": {
                      "type": "integer",
                      "description": "하반기 일용근로소득(원)"
                    }
                  },
                  "description": "조회 시점의 반기 기준 근로소득 상세. 키는 항상 존재하며 조회 기간이 아니면 null이다.",
                  "nullable": true
                },
                "지급자별": {
                  "type": "object",
                  "items": {
                    "type": "object",
                    "properties": {
                      "자료출처": {
                        "type": "string"
                      },
                      "지급자 상호(법인명)": {
                        "type": "string"
                      },
                      "지급자 사업자등록번호": {
                        "type": "string"
                      },
                      "수입금액": {
                        "type": "integer"
                      },
                      "업종": {
                        "type": "string"
                      },
                      "업종코드": {
                        "type": "string"
                      }
                    }
                  },
                  "description": "지급자별 소득자료. 자료가 없으면 빈 배열이며 하위 필드는 값이 있을 때만 포함된다.",
                  "properties": {
                    "자료출처": {
                      "type": "string",
                      "description": "소득자료 종류 표기"
                    },
                    "지급자 상호(법인명)": {
                      "type": "string",
                      "description": "지급자 상호 또는 법인명"
                    },
                    "지급자 사업자등록번호": {
                      "type": "string",
                      "description": "지급자 사업자등록번호. 하이픈 없이 10자리로 온다."
                    },
                    "수입금액": {
                      "type": "integer",
                      "description": "수입금액(원)"
                    },
                    "업종": {
                      "type": "string",
                      "description": "업종 표기"
                    },
                    "업종코드": {
                      "type": "string",
                      "description": "업종코드"
                    }
                  }
                }
              },
              "description": "이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요."
            }
          },
          "description": "조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다."
        },
        "errorCode": {
          "type": "string",
          "description": "오류 구분. RESULT_EXPIRED(재조회 기간 만료) / AUTH_EXPIRED / AUTH_REJECTED / COLLECT_FAILED"
        }
      },
      "description": "상태·결과"
    },
    "api": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "API 서버 정상 응답 여부"
        },
        "cost": {
          "type": "integer",
          "description": "API 호출 요금"
        },
        "ms": {
          "type": "integer",
          "description": "API 응답 시간"
        },
        "pl_id": {
          "type": "integer",
          "description": "API 결제 로그 ID"
        }
      },
      "description": "API 호출 공통 데이터"
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "schemaVersion": "1.0",
    "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
    "product": "income_bundle",
    "status": "AUTH_WAITING",
    "resultAvailable": false,
    "charged": false,
    "sources": [],
    "message": "인증 대기중입니다.",
    "expiresAt": "2026-09-20T05:24:07+09:00",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 42,
    "pl_id": -1
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "schemaVersion": "1.0",
    "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
    "product": "income_bundle",
    "status": "COLLECTING",
    "resultAvailable": false,
    "charged": false,
    "sources": [],
    "progress": {
      "total": 4,
      "completed": 0
    },
    "message": "정보를 조회하고 있습니다.",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 38,
    "pl_id": -1
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "schemaVersion": "1.0",
    "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
    "product": "income_bundle",
    "status": "SUCCESS",
    "resultAvailable": true,
    "charged": true,
    "sources": [
      {
        "source": "국세청",
        "type": "PERSONAL_INCOME",
        "status": "SUCCESS"
      },
      {
        "source": "국세청",
        "type": "CASH_RECEIPT_DEDUCTION",
        "status": "SUCCESS"
      },
      {
        "source": "국세청",
        "type": "INCOME_BY_PAYER",
        "status": "SUCCESS"
      },
      {
        "source": "국세청",
        "type": "INCOME_DATA_CHECK",
        "status": "SUCCESS"
      }
    ],
    "checkedAt": "2026-09-20T04:47:33+09:00",
    "resultExpiresAt": "2026-09-21T04:47:33+09:00",
    "result": {
      "personalIncome": {
        "조회연도": [
          "2025"
        ],
        "연도별": [
          {
            "귀속연도": "2025",
            "소득종류별": {
              "이자소득": {
                "건수": 12,
                "소득금액": 1280000,
                "소득세": 154000,
                "지방소득세": 15400,
                "농어촌특별세": 0,
                "세액합계": 169400
              },
              "배당소득": {
                "건수": 12,
                "소득금액": 1280000,
                "소득세": 154000,
                "지방소득세": 15400,
                "농어촌특별세": 0,
                "세액합계": 169400
              }
            },
            "합계": {
              "건수": 12,
              "소득금액": 1280000,
              "소득세": 154000,
              "지방소득세": 15400,
              "농어촌특별세": 0,
              "세액합계": 169400
            }
          }
        ]
      },
      "cashReceiptDeduction": {
        "조회연도": [
          "2025"
        ],
        "전체합계": {
          "건수": 12,
          "사용금액": 1280000,
          "소득공제건수": 10,
          "소득공제금액": 1080000
        },
        "연도별": [
          {
            "귀속연도": "2025",
            "합계": {
              "건수": 12,
              "사용금액": 1280000,
              "소득공제건수": 10,
              "소득공제금액": 1080000
            },
            "사용내역": [
              {
                "거래일시": "2025-03-14 15:22:31",
                "가맹점": "예시가맹점",
                "금액": 1280000,
                "승인번호": "2025-0001234",
                "거래구분": "승인",
                "거래상태": "정상",
                "소득공제대상": true,
                "소득공제반영": true
              }
            ]
          }
        ]
      },
      "incomeByPayer": {
        "조회연도": [
          "2025"
        ],
        "전체합계": {
          "건수": 3,
          "지급액": 1280000,
          "소득세": 154000,
          "지방소득세": 15400
        },
        "유형별": [
          {
            "유형": "일용",
            "합계": {
              "건수": 3,
              "지급액": 1280000,
              "소득세": 154000,
              "지방소득세": 15400
            },
            "내역": [
              {
                "지급명세서종류": "간이지급명세서(근로소득)",
                "지급자": "예시주식회사",
                "사업자등록번호": "123-45-67890",
                "귀속연도": "2026",
                "지급연도": "2026",
                "소득구분": "기타소득",
                "업종구분": "서비스업",
                "용역구분": "인적용역",
                "총지급액": 1280000,
                "과세소득": 1280000,
                "용역제공대가": 1280000,
                "급여 등": 40666665,
                "인정상여금액": 0,
                "비과세소득": 0,
                "필요경비": 0,
                "소득금액": 1280000,
                "소득세": 154000,
                "지방소득세": 15400
              }
            ]
          }
        ]
      },
      "incomeDataCheck": {
        "조회연도": [
          "2025"
        ],
        "연도별": [
          {
            "귀속연도": "2025",
            "연간소득총액": 242634500,
            "근로소득": 104469506,
            "근로소득(간이)": 0,
            "사업소득(간이)": 0,
            "원천징수 사업소득": 0,
            "사업장 사업소득": 0,
            "금융소득": 33695488,
            "연금소득": 0,
            "기타소득": 0,
            "종교인소득": 0
          }
        ],
        "근로소득상세": {
          "귀속연도": "2026",
          "신청 구분": "상반기분",
          "근로소득 합계": 40666665,
          "상반기 근로소득": 40666665,
          "하반기 근로소득": 0,
          "상용근로소득": 40666665,
          "상반기 상용근로소득": 40666665,
          "하반기 상용근로소득": 0,
          "일용근로소득": 0,
          "상반기 일용근로소득": 0,
          "하반기 일용근로소득": 0
        },
        "지급자별": [
          {
            "자료출처": "지급명세서(사업소득)",
            "지급자 상호(법인명)": "예시주식회사",
            "지급자 사업자등록번호": "1234567890",
            "수입금액": 1280000,
            "업종": "서비스업",
            "업종코드": "940909"
          }
        ]
      }
    },
    "message": "인증이 완료되었습니다.",
    "success": 1
  },
  "api": {
    "success": true,
    "cost": 168,
    "ms": 318,
    "pl_id": 4903
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/get_income_bundle' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'transactionId=9f2c4a7b1d8e35c60a4f7b2d1e9c803a'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("transactionId", "9f2c4a7b1d8e35c60a4f7b2d1e9c803a");
const response = await fetch("https://apick.app/rest/get_income_bundle", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("transactionId", (None, "9f2c4a7b1d8e35c60a4f7b2d1e9c803a")),
]
response = requests.request("POST", "https://apick.app/rest/get_income_bundle",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'transactionId' => '9f2c4a7b1d8e35c60a4f7b2d1e9c803a',
];
$curl = curl_init('https://apick.app/rest/get_income_bundle');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## 코드·오류

## 상세 기능·요금

조회 자료 제공 기관은 국세청 입니다. 본인 인증은 한 번만 하면 되고, 담당 기관은 엔드포인트로 자동 선택됩니다. 이 묶음에 포함된 조회 4종 아래 조회를 따로 호출하면 합계 240P, 묶음으로 한 번에 받으면 168P입니다. 인증은 어느 쪽이든 1회이고, 묶음은 결과를 한 응답에 모아 줍니다. 금융소득(이자·배당) 조회 60P 현금영수증 소득공제 내역 60P 일용·간이·용역 소득내역 60P 소득자료 확인 60P 인증요청 → 사용자 승인 → 정보조회 → 정보제공 4단계이며, 과금은 인증요청 발송 성공과 결과 최초 제공 두 번만 발생합니다. 그 사이 반복 조회는 무과금입니다. 1단계 · 조회 인증 요청 /rest/req_income_bundle20P · 인증요청 5분 유효 2단계 · 결과조회 /rest/get_income_bundle168P × 데이터셋 4 × 기간 배수 · 결과 24시간 보관 요금과 포인트 상태와 성공 판정 호출 제한과 재시도 공통 오류 응답 자주 묻는 질문 공통 가이드 전체 보기 이름·생년월일·휴대전화번호와 간편인증 방식을 입력하면 사용자에게 간편인증 요청을 보내고, 결과 조회에 사용할 transactionId 를 즉시 반환합니다. 인증요청과 결과조회는 완전히 분리되어 있습니다. 이 호출은 인증요청만 보내고 transactionId 를 즉시 반환합니다. 결과는 사용자가 승인한 뒤 /rest/get_income_bundle 에 transactionId 를 넣어 확인합니다. 조회 항목마다 담당 기관이 다르지만, 인증기관은 엔드포인트로 자동 선택되므로 기관을 지정하는 파라미터는 없습니다. 이 응답의 expiresAt 까지만 승인할 수 있습니다. 남은 시간을 화면에 표시하고, 만료되면 사용자가 다시 요청할 수 있게 해 주세요. 2단계 · 결과조회 엔드포인트 Method URL POST https://apick.app/rest/get_income_bundle 이 API 는 polling 용도입니다. 호출 자체는 언제든 무료이며, 실제 결과가 최초로 반환되는 1회에만 과금됩니다. 같은 transactionId 로 다시 조회하면 charged=false 로 추가 과금이 없습니다. 인증 대기(AUTH_WAITING)·조회 중(COLLECTING)·실패(FAILED)·만료(AUTH_EXPIRED) 응답은 과금되지 않습니다. 결과를 받을 때까지 안심하고 반복 조회하세요. 결과가 준비된 뒤에는 조회 시각 기준 24시간 동안 재조회할 수 있습니다. 이 기간의 재조회는 무과금입니다. 응답에는 실제 정보를 확인한 시각이 checkedAt 으로 포함됩니다. 저장해 둔 값을 돌려주는 것이 아니라 그 시점에 확인한 값입니다. 폴링은 resultAvailable=true 를 받는 순간 멈추세요. 최대 시간은 expiresAt(인증 대기)까지이고, 그 뒤로는 결과가 나올 때까지입니다. 자세한 값은 호출 제한과 재시도를 참고하세요. 조회 항목이 여러 개인 상품은 일부만 성공하면 PARTIAL_SUCCESS 로 반환하며, 이때도 실제 조회된 데이터가 있으면 최초 1회 과금됩니다. 어느 항목이 성공·실패했는지는 sources 에 표시됩니다. 결과 단가는 60P × 데이터셋 수(4) × 기간 배수입니다 (기간 incomeYears, 기본 1년). 기간 배수는 상품의 기간 입력 조건에 따라 적용됩니다.

## 상세 요청

1단계 · 조회 인증 요청 Method URL POST https://apick.app/rest/req_income_bundle Header 이름 필수 설명 Authorization O Bearer 인증키 모든 입력은 하위 객체 없이 최상위 이름 그대로 보냅니다. user·requestData·options 같은 묶음은 쓰지 않습니다. 형식별 예시는 요청 본문 형식을 참고하세요. 조회 항목마다 필요한 추가 입력 이 다릅니다. 값이 비어 있으면 인증을 보내지 않고 무과금으로 거절하며, 이때는 결과 단가도 발생하지 않습니다. incomeYears 는 선택 입력입니다. 넣지 않으면 기본값(1)으로 조회하며, 이 값이 결과 단가를 좌우합니다. 간편인증 방식(authProvider) 값 인증 방식 kakao 카카오톡 naver 네이버 toss 토스 pass 통신사 PASS samsung 삼성패스 kb KB국민은행 shinhan 신한은행 hana 하나은행 woori 우리은행 ibk IBK기업은행 nh NH농협은행 kakaobank 카카오뱅크 banksalad 뱅크샐러드 Header 이름 필수 설명 Authorization O Bearer 인증키 본문은 transactionId 하나입니다. 결과조회 엔드포인트는 인증요청과 짝이 되는 /rest/get_income_bundle 이며, 다른 항목의 엔드포인트로 조회하면 실패합니다. 조회 시각 기준 24시간이 지나면 RESULT_EXPIRED 가 반환됩니다. 이때는 인증요청부터 다시 시작해야 하며, 인증요청 단가(20P)가 다시 발생합니다. 요청 예시 form-data 전체 예제 보기

## 상세 응답

Body 이름 타입 설명 data Object 인증 요청 결과 schemaVersion String 결과 스키마 버전 (고정값: "1.0") transactionId String 결과 조회에 사용하는 트랜잭션 ID product String 조회 항목 코드. 결과조회에도 같은 값이 오므로 어느 항목의 결과인지 대조할 수 있습니다. status String 처리 상태 (AUTH_REQUESTED: 인증 요청 완료) message String 상태 메시지 (고정값: "인증 대기중입니다.") approvals Integer 필요한 간편인증 승인 횟수. 조회 항목 하나당 1회입니다. resultAvailable Boolean 결과 데이터 포함 여부. 인증 요청 응답은 항상 false 입니다. charged Boolean 이번 호출의 과금 발생 여부. 실제 발송에 성공하면 true 입니다. expiresAt String 인증 유효 기한(ISO 8601). 이 시각까지 승인하지 못하면 인증 실패 처리됩니다. success Integer 과금 여부0: 실패 또는 재사용(무과금)1: 발송 성공(과금) api Object API 호출 공통 데이터 success Boolean API 서버 정상 응답 여부 cost Integer API 호출 요금 ms Integer API 응답 시간 pl_id Integer API 결제 로그 ID 처리 상태(status) 값 의미 과금 AUTH_REQUESTED 조회 인증 요청 (/rest/req_income_bundle 응답) 인증요청 시 과금 AUTH_WAITING 사용자 인증 대기중 무과금 AUTH_COMPLETED 승인 완료, 조회 시작 전 무과금 COLLECTING 조회 결과를 준비하는 중 무과금 SUCCESS 모든 항목 조회 완료 최초 1회만 PARTIAL_SUCCESS 일부 항목만 조회 완료 (sources 참고) 최초 1회만 AUTH_REJECTED 사용자가 인증을 거부 무과금 AUTH_EXPIRED 제한 시간 안에 승인하지 않음 무과금 FAILED 조회 실패 무과금 Body 이름 타입 설명 data Object 상태·결과 schemaVersion String 결과 스키마 버전 (고정값: "1.0") transactionId String 트랜잭션 ID product String 조회 항목 코드. 인증요청 응답과 같은 값입니다. status String 처리 상태 (위 표 참고) resultAvailable Boolean 실제 결과 포함 여부. 과금 여부도 이 값으로 결정됩니다. charged Boolean 이번 호출의 과금 발생 여부. 최초 결과 반환에서만 true 입니다. sources Array 항상 포함됩니다. 값이 없으면 빈 배열 [] 입니다. 항목이 여러 개인 상품에서 어느 것이 성공·실패했는지 알려줍니다. 각 항목은 source(제공 기관명), type(데이터 종류), status(SUCCESS/FAILED). 수집이 끝나기 전에는 아직 확정되지 않은 기관이 FAILED 로 보일 수 있습니다. progress Object 진행률(COLLECTING 일 때). total(전체 항목), completed(완료 항목) checkedAt String 실제 정보를 확인한 시각. 한국시간(UTC+09:00) ISO 8601 이며 재조회 유효기간의 기준입니다. resultExpiresAt String 결과 재조회 만료 시각. 한국시간(UTC+09:00) ISO 8601 입니다. errorCode String 오류 구분. RESULT_EXPIRED(재조회 기간 만료) / AUTH_EXPIRED / AUTH_REJECTED / COLLECT_FAILED result Object 조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다. personalIncome Object 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요. cashReceiptDeduction Object 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요. incomeByPayer Object 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요. incomeDataCheck Object 이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요. message String 상태 메시지 success Integer 과금 여부0: 결과 없음 또는 재조회(무과금)1: 최초 결과 반환(과금) api Object API 호출 공통 데이터 success Boolean API 서버 정상 응답 여부 cost Integer API 호출 요금 ms Integer API 응답 시간 pl_id Integer API 결제 로그 ID 결과 규격 이 묶음은 한 번 인증으로 4개 조회를 받으므로 result 안에 아래 4개 항목이 함께 옵니다. 항목마다 표를 따로 두었습니다. result.personalIncome — 금융소득(이자·배당) 조회 (국세청) 경로 타입 값 존재 설명 예시 조회연도 Array<String> O 실제로 조회한 전체 귀속연도 목록(4자리 문자열). 금융소득이 없는 연도도 포함한다. ["2025"] 연도별 Array<Object> O 귀속연도별 소득 집계. 합계 건수가 0인 연도는 담기지 않아 조회연도보다 적을 수 있다. 귀속연도 String O 귀속연도 4자리 2025 소득종류별 Object O 확인된 이자소득·배당소득별 집계. 근로·사업소득은 포함하지 않는다. 확인되지 않은 종류의 키는 생략된다. 이자소득 Object 조건부 이자소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 건수 Integer O 소득 건수 12 소득금액 Integer O 소득금액 합계(원) 1280000 소득세 Integer O 소득세 합계(원) 154000 지방소득세 Integer O 지방소득세 합계(원) 15400 농어촌특별세 Integer O 농어촌특별세 합계(원) 0 세액합계 Integer O 소득세 + 지방소득세 + 농어촌특별세(원) 169400 배당소득 Object 조건부 배당소득이 확인된 경우의 집계(금액 단위 원). 없으면 키 생략. 건수 Integer O 소득 건수 12 소득금액 Integer O 소득금액 합계(원) 1280000 소득세 Integer O 소득세 합계(원) 154000 지방소득세 Integer O 지방소득세 합계(원) 15400 농어촌특별세 Integer O 농어촌특별세 합계(원) 0 세액합계 Integer O 소득세 + 지방소득세 + 농어촌특별세(원) 169400 합계 Object O 그 연도의 전체 합계 건수 Integer O 소득 건수 12 소득금액 Integer O 소득금액 합계(원) 1280000 소득세 Integer O 소득세 합계(원) 154000 지방소득세 Integer O 지방소득세 합계(원) 15400 농어촌특별세 Integer O 농어촌특별세 합계(원) 0 세액합계 Integer O 소득세 + 지방소득세 + 농어촌특별세(원) 169400 result.cashReceiptDeduction — 현금영수증 소득공제 내역 (국세청) 경로 타입 값 존재 설명 예시 조회연도 Array<String> O 실제로 조회된 귀속연도 목록(4자리 문자열). ["2025"] 전체합계 Object O 조회한 전체 연도의 합계. 건수 Integer O 현금영수증 사용 건수 12 사용금액 Integer O 사용금액 합계(원) 1280000 소득공제건수 Integer O 소득공제에 반영된 건수 10 소득공제금액 Integer O 소득공제에 반영된 금액(원) 1080000 연도별 Array<Object> O 귀속연도별 합계와 사용내역. 귀속연도 String O 귀속연도 4자리 2025 합계 Object O 그 연도의 합계 건수 Integer O 현금영수증 사용 건수 12 사용금액 Integer O 사용금액 합계(원) 1280000 소득공제건수 Integer O 소득공제에 반영된 건수 10 소득공제금액 Integer O 소득공제에 반영된 금액(원) 1080000 사용내역 Array<Object> O 건별 사용내역. 사용이 없으면 빈 배열이다. 거래일시 String(YYYY-MM-DD HH:mm:ss) O 승인 일시 2025-03-14 15:22:31 가맹점 String O 가맹점명 예시가맹점 금액 Integer O 승인 금액(원) 1280000 승인번호 String O 현금영수증 승인번호 2025-0001234 거래구분 String O 승인·취소 구분 승인 거래상태 String O 거래 상태 정상 소득공제대상 Boolean O 소득공제 대상이면 true, 아니면 false. true 소득공제반영 Boolean O 소득공제가 반영됐으면 true, 아니면 false. true result.incomeByPayer — 일용·간이·용역 소득내역 (국세청) 경로 타입 값 존재 설명 예시 조회연도 Array<String> O 실제로 조회한 귀속연도 목록(4자리 문자열). ["2025"] 전체합계 Object O 조회한 전체 유형·연도의 합계. 지급명세서가 하나도 없으면 건수가 0이다. 건수 Integer O 지급명세서 건수 3 지급액 Integer O 그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등). 1280000 소득세 Integer O 소득세 합계(원) 154000 지방소득세 Integer O 지방소득세 합계(원) 15400 유형별 Array<Object> O 지급명세서 자료종류별 소득내역. 내역이 있는 유형만 담긴다. 유형 String O 자료종류. 사업장제공자·간이기타·간이사업·간이근로·일용 중 하나다. 일용 합계 Object O 그 유형의 합계 건수 Integer O 지급명세서 건수 3 지급액 Integer O 그 유형 기준 금액의 합계(원). 유형마다 기준 항목이 다르다(총지급액·과세소득·용역제공대가·급여 등). 1280000 소득세 Integer O 소득세 합계(원) 154000 지방소득세 Integer O 지방소득세 합계(원) 15400 내역 Array<Object> O 지급자별 소득 한 건씩. 자료종류와 값 존재 여부에 따라 하위 필드가 생략된다. 지급명세서종류 String 조건부 지급명세서 종류 표기 간이지급명세서(근로소득) 지급자 String 조건부 지급자(징수의무자)명 예시주식회사 사업자등록번호 String 조건부 지급자 사업자등록번호 10자리(하이픈 포함) 123-45-67890 귀속연도 String 조건부 귀속연도 4자리 2026 지급연도 String 조건부 지급연도 4자리. 간이기타·간이사업에만 온다. 2026 소득구분 String 조건부 소득구분 표기. 간이기타에만 온다. 기타소득 업종구분 String 조건부 업종구분 표기. 간이사업에만 온다. 서비스업 용역구분 String 조건부 용역구분 표기. 사업장제공자에만 온다. 인적용역 총지급액 Integer 조건부 총지급액(원). 간이기타·간이사업에 온다. 1280000 과세소득 Integer 조건부 과세소득(원). 일용에 온다. 1280000 용역제공대가 Integer 조건부 용역제공대가(원). 사업장제공자에 온다. 1280000 급여 등 Integer 조건부 급여 등(원). 간이근로에 온다. 40666665 인정상여금액 Integer 조건부 인정상여금액(원). 간이근로에 온다. 0 비과세소득 Integer 조건부 비과세소득(원). 일용에 온다. 0 필요경비 Integer 조건부 필요경비(원). 간이기타에 온다. 0 소득금액 Integer 조건부 소득금액(원). 간이기타에 온다. 1280000 소득세 Integer 조건부 소득세(원) 154000 지방소득세 Integer 조건부 지방소득세(원) 15400 result.incomeDataCheck — 소득자료 확인 (국세청) 경로 타입 값 존재 설명 예시 조회연도 Array<String> O 실제로 조회된 귀속연도 목록(4자리 문자열). ["2025"] 연도별 Array<Object> O 귀속연도별 소득자료 합계. 자료가 없는 연도는 담기지 않으며 확인되지 않은 금액 필드는 생략될 수 있다. 귀속연도 String O 귀속연도 4자리 2025 연간소득총액 Integer 조건부 연간 소득 총액(원) 242634500 근로소득 Integer O 상용·일용 근로소득 합계(원) 104469506 근로소득(간이) Integer 조건부 간이지급명세서로 제출된 근로소득(원) 0 사업소득(간이) Integer 조건부 간이지급명세서로 제출된 사업소득(원) 0 원천징수 사업소득 Integer 조건부 원천징수된 사업소득(원) 0 사업장 사업소득 Integer 조건부 사업장에서 발생한 사업소득(원) 0 금융소득 Integer 조건부 이자·배당 등 금융소득(원) 33695488 연금소득 Integer 조건부 연금소득(원) 0 기타소득 Integer 조건부 기타소득(원) 0 종교인소득 Integer 조건부 종교인소득(원) 0 근로소득상세 Object | null O 조회 시점의 반기 기준 근로소득 상세. 키는 항상 존재하며 조회 기간이 아니면 null이다. 귀속연도 String O 귀속연도 4자리 2026 신청 구분 String O 상반기분 또는 하반기분 상반기분 근로소득 합계 Integer 조건부 상용·일용 근로소득 합계(원) 40666665 상반기 근로소득 Integer 조건부 상반기 근로소득(원) 40666665 하반기 근로소득 Integer 조건부 하반기 근로소득(원) 0 상용근로소득 Integer 조건부 상용근로소득 합계(원) 40666665 상반기 상용근로소득 Integer 조건부 상반기 상용근로소득(원) 40666665 하반기 상용근로소득 Integer 조건부 하반기 상용근로소득(원) 0 일용근로소득 Integer 조건부 일용근로소득 합계(원) 0 상반기 일용근로소득 Integer 조건부 상반기 일용근로소득(원) 0 하반기 일용근로소득 Integer 조건부 하반기 일용근로소득(원) 0 지급자별 Array<Object> O 지급자별 소득자료. 자료가 없으면 빈 배열이며 하위 필드는 값이 있을 때만 포함된다. 자료출처 String 조건부 소득자료 종류 표기 지급명세서(사업소득) 지급자 상호(법인명) String 조건부 지급자 상호 또는 법인명 예시주식회사 지급자 사업자등록번호 String 조건부 지급자 사업자등록번호. 하이픈 없이 10자리로 온다. 1234567890 수입금액 Integer 조건부 수입금액(원) 1280000 업종 String 조건부 업종 표기 서비스업 업종코드 String 조건부 업종코드 940909 타입 읽는 법 — String 은 문자열, Integer 는 소수점 없는 정수(원 단위 금액 포함), Boolean 은 true/false, Object 는 이름이 있는 하위 항목 묶음, Array<Object> 는 같은 구조가 여러 건 오는 목록, Array<String> 은 문자열 목록입니다. String(YYYY-MM-DD) 처럼 괄호가 붙으면 그 형식의 문자열이라는 뜻이고 날짜 타입이 아닙니다. 값 존재 — O는 정상 결과에 있는 항목, 조건부는 해당 정보가 있을 때 제공하는 항목입니다. 누락·빈 문자열·빈 배열·0·null의 의미는 항목별 설명을 따릅니다. 부모 항목이 없으면 그 하위 항목도 없습니다. 예시 — 응답에 들어오는 형태 그대로의 값입니다. 실제 조회 결과가 아니며 개인을 특정할 수 없는 가상의 값입니다. 이 열이 비어 있으면 하위 항목이 있는 묶음이거나 값이 빠질 수 있는 항목입니다. 들여쓰기된 항목은 바로 위 부모 안에 들어 있는 하위 항목입니다. 경로 표기에서 . 는 하위 항목, [ ] 를 붙인 항목은 그 안에 여러 건이 오는 목록이라는 뜻입니다.

## 상세 예제

요청 예시 form-data 전체 예제 보기 응답 예시 { "data": { "schemaVersion": "1.0", "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a", "product": "income_bundle", "status": "AUTH_REQUESTED", "resultAvailable": false, "charged": true, "sources": [], "message": "인증 대기중입니다.", "expiresAt": "2026-09-20T05:24:07+09:00", "success": 1 }, "api": { "success": true, "cost": 20, "ms": 1284, "pl_id": 4902 } } 인증 대기중 (무과금) { "data": { "schemaVersion": "1.0", "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a", "product": "income_bundle", "status": "AUTH_WAITING", "resultAvailable": false, "charged": false, "sources": [], "message": "인증 대기중입니다.", "expiresAt": "2026-09-20T05:24:07+09:00", "success": 0 }, "api": { "success": true, "cost": 0, "ms": 42, "pl_id": -1 } } 조회 중 (무과금) { "data": { "schemaVersion": "1.0", "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a", "product": "income_bundle", "status": "COLLECTING", "resultAvailable": false, "charged": false, "sources": [], "progress": { "total": 4, "completed": 0 }, "message": "정보를 조회하고 있습니다.", "success": 0 }, "api": { "success": true, "cost": 0, "ms": 38, "pl_id": -1 } } 조회 완료 (과금) { "data": { "schemaVersion": "1.0", "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a", "product": "income_bundle", "status": "SUCCESS", "resultAvailable": true, "charged": true, "sources": [ { "source": "국세청", "type": "PERSONAL_INCOME", "status": "SUCCESS" }, { "source": "국세청", "type": "CASH_RECEIPT_DEDUCTION", "status": "SUCCESS" }, { "source": "국세청", "type": "INCOME_BY_PAYER", "status": "SUCCESS" }, { "source": "국세청", "type": "INCOME_DATA_CHECK", "status": "SUCCESS" } ], "checkedAt": "2026-09-20T04:47:33+09:00", "resultExpiresAt": "2026-09-21T04:47:33+09:00", "result": { "personalIncome": { "조회연도": [ "2025" ], "연도별": [ { "귀속연도": "2025", "소득종류별": { "이자소득": { "건수": 12, "소득금액": 1280000, "소득세": 154000, "지방소득세": 15400, "농어촌특별세": 0, "세액합계": 169400 }, "배당소득": { "건수": 12, "소득금액": 1280000, "소득세": 154000, "지방소득세": 15400, "농어촌특별세": 0, "세액합계": 169400 } }, "합계": { "건수": 12, "소득금액": 1280000, "소득세": 154000, "지방소득세": 15400, "농어촌특별세": 0, "세액합계": 169400 } } ] }, "cashReceiptDeduction": { "조회연도": [ "2025" ], "전체합계": { "건수": 12, "사용금액": 1280000, "소득공제건수": 10, "소득공제금액": 1080000 }, "연도별": [ { "귀속연도": "2025", "합계": { "건수": 12, "사용금액": 1280000, "소득공제건수": 10, "소득공제금액": 1080000 }, "사용내역": [ { "거래일시": "2025-03-14 15:22:31", "가맹점": "예시가맹점", "금액": 1280000, "승인번호": "2025-0001234", "거래구분": "승인", "거래상태": "정상", "소득공제대상": true, "소득공제반영": true } ] } ] }, "incomeByPayer": { "조회연도": [ "2025" ], "전체합계": { "건수": 3, "지급액": 1280000, "소득세": 154000, "지방소득세": 15400 }, "유형별": [ { "유형": "일용", "합계": { "건수": 3, "지급액": 1280000, "소득세": 154000, "지방소득세": 15400 }, "내역": [ { "지급명세서종류": "간이지급명세서(근로소득)", "지급자": "예시주식회사", "사업자등록번호": "123-45-67890", "귀속연도": "2026", "지급연도": "2026", "소득구분": "기타소득", "업종구분": "서비스업", "용역구분": "인적용역", "총지급액": 1280000, "과세소득": 1280000, "용역제공대가": 1280000, "급여 등": 40666665, "인정상여금액": 0, "비과세소득": 0, "필요경비": 0, "소득금액": 1280000, "소득세": 154000, "지방소득세": 15400 } ] } ] }, "incomeDataCheck": { "조회연도": [ "2025" ], "연도별": [ { "귀속연도": "2025", "연간소득총액": 242634500, "근로소득": 104469506, "근로소득(간이)": 0, "사업소득(간이)": 0, "원천징수 사업소득": 0, "사업장 사업소득": 0, "금융소득": 33695488, "연금소득": 0, "기타소득": 0, "종교인소득": 0 } ], "근로소득상세": { "귀속연도": "2026", "신청 구분": "상반기분", "근로소득 합계": 40666665, "상반기 근로소득": 40666665, "하반기 근로소득": 0, "상용근로소득": 40666665, "상반기 상용근로소득": 40666665, "하반기 상용근로소득": 0, "일용근로소득": 0, "상반기 일용근로소득": 0, "하반기 일용근로소득": 0 }, "지급자별": [ { "자료출처": "지급명세서(사업소득)", "지급자 상호(법인명)": "예시주식회사", "지급자 사업자등록번호": "1234567890", "수입금액": 1280000, "업종": "서비스업", "업종코드": "940909" } ] } }, "message": "인증이 완료되었습니다.", "success": 1 }, "api": { "success": true, "cost": 168, "ms": 318, "pl_id": 4903 } } 위 값은 응답 구조를 보여주기 위한 예시입니다. 값은 가상이지만 필드 구성과 타입은 실제 응답과 같습니다. 전체 항목은 결과 규격을 참고하세요. expiresAt 은 SUCCESS 응답에 없습니다. 인증 대기 기한(AUTH_WAITING)에만 있고, 결과를 받은 뒤에는 resultExpiresAt 이 그 역할을 대신합니다. 둘 중 어느 것이 오는지로 "지금이 승인 대기인지 결과 보관 기간인지"를 구분할 수 있습니다.
