개발가이드

  • 개발가이드

소득자료 확인 조회

인증요청이 반환한 transactionId 로 조회 결과를 확인합니다. 결과가 준비되면 표준화된 형식으로 반환합니다.

조회 자료 제공 기관은 국세청 입니다. 본인 인증은 한 번만 하면 되고, 담당 기관은 엔드포인트로 자동 선택됩니다.

인증요청 → 사용자 승인 → 정보조회 → 정보제공 4단계이며, 과금은 인증요청 발송 성공결과 최초 제공 두 번만 발생합니다. 그 사이 반복 조회는 무과금입니다.

/rest/req_income_data_check
20P · 인증요청 5분 유효
/rest/get_income_data_check
60P × 데이터셋 1 × 조회범위 단위 · 결과 24시간 보관

이름·생년월일·휴대전화번호와 간편인증 방식을 입력하면 사용자에게 간편인증 요청을 보내고, 결과 조회에 사용할 transactionId 를 즉시 반환합니다.

1단계 · 조회 인증 요청

Method
URL
POST
https://apick.app/rest/req_income_data_check
인증요청과 결과조회는 완전히 분리되어 있습니다. 이 호출은 인증요청만 보내고 transactionId 를 즉시 반환합니다. 결과는 사용자가 승인한 뒤 /rest/get_income_data_check 에 transactionId 를 넣어 확인합니다. 조회 항목마다 담당 기관이 다르지만, 인증기관은 엔드포인트로 자동 선택되므로 기관을 지정하는 파라미터는 없습니다. 이 응답의 expiresAt 까지만 승인할 수 있습니다. 남은 시간을 화면에 표시하고, 만료되면 사용자가 다시 요청할 수 있게 해 주세요.

요청

Header
이름
필수
설명
CL_AUTH_KEY
O
인증키(MD5)
요청 본문 (form-data 기준)
이름
타입
필수
설명
name
String
O
이름
birthDate
String
O
생년월일 8자리(YYYYMMDD)
phone
String
O
휴대전화 번호 (본인 명의, 숫자만)
authProvider
String
O
간편인증 방식 (아래 지원 목록 참고)
incomeYears
Integer
X
소득자료 조회 연수(1~3). 기본 1
모든 입력은 하위 객체 없이 최상위 이름 그대로 보냅니다. user·requestData·options 같은 묶음은 쓰지 않습니다. 형식별 예시는 요청 본문 형식을 참고하세요. 조회 항목마다 필요한 추가 입력 이 다릅니다. 값이 비어 있으면 인증을 보내지 않고 무과금으로 거절하며, 이때는 결과 단가도 발생하지 않습니다. incomeYears 는 선택 입력입니다. 넣지 않으면 기본값(1)으로 조회하며, 이 값이 결과 단가를 좌우합니다.
간편인증 방식(authProvider)
인증 방식
kakao
카카오톡
naver
네이버
toss
토스
pass
통신사 PASS
samsung
삼성패스
kb
KB국민은행
shinhan
신한은행
hana
하나은행
woori
우리은행
ibk
IBK기업은행
nh
NH농협은행
kakaobank
카카오뱅크
banksalad
뱅크샐러드

응답

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

예시

요청 예시

curl -k -X POST "https://apick.app/rest/req_income_data_check" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "CL_AUTH_KEY: $API_KEY" \
--data-urlencode "name=홍길동" \
--data-urlencode "birthDate=19900101" \
--data-urlencode "phone=01011112222" \
--data-urlencode "authProvider=kakao" \
--data-urlencode "incomeYears=3"
            
응답 예시

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "income_data_check",
        "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
    }
}
            

2단계 · 결과조회 엔드포인트

Method
URL
POST
https://apick.app/rest/get_income_data_check
이 API 는 polling 용도입니다. 호출 자체는 언제든 무료이며, 실제 결과가 최초로 반환되는 1회에만 과금됩니다. 같은 transactionId 로 다시 조회하면 charged=false 로 추가 과금이 없습니다. 인증 대기(AUTH_WAITING)·조회 중(COLLECTING)·실패(FAILED)·만료(AUTH_EXPIRED) 응답은 과금되지 않습니다. 결과를 받을 때까지 안심하고 반복 조회하세요. 결과가 준비된 뒤에는 조회 시각 기준 24시간 동안 재조회할 수 있습니다. 이 기간의 재조회는 무과금입니다. 응답에는 실제 정보를 확인한 시각이 checkedAt 으로 포함됩니다. 저장해 둔 값을 돌려주는 것이 아니라 그 시점에 확인한 값입니다. 폴링은 resultAvailable=true 를 받는 순간 멈추세요. 최대 시간은 expiresAt(인증 대기)까지이고, 그 뒤로는 결과가 나올 때까지입니다. 자세한 값은 호출 제한과 재시도를 참고하세요. 조회 항목이 여러 개인 상품은 일부만 성공하면 PARTIAL_SUCCESS 로 반환하며, 이때도 실제 조회된 데이터가 있으면 최초 1회 과금됩니다. 어느 항목이 성공·실패했는지는 sources 에 표시됩니다.

요청

Header
이름
필수
설명
CL_AUTH_KEY
O
인증키(MD5)
요청 본문 (form-data 기준)
이름
타입
필수
설명
transactionId
String
O
/rest/req_income_data_check 가 반환한 트랜잭션 ID
본문은 transactionId 하나입니다. 결과조회 엔드포인트는 인증요청과 이 되는 /rest/get_income_data_check 이며, 다른 항목의 엔드포인트로 조회하면 실패합니다. 조회 시각 기준 24시간이 지나면 RESULT_EXPIRED 가 반환됩니다. 이때는 인증요청부터 다시 시작해야 하며, 인증요청 단가(20P)가 다시 발생합니다.
요청 예시

curl -k -X POST "https://apick.app/rest/get_income_data_check" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "CL_AUTH_KEY: $API_KEY" \
--data-urlencode "transactionId=9f2c4a7b1d8e35c60a4f7b2d1e9c803a"
            

응답

처리 상태(status)
의미
과금
AUTH_REQUESTED
조회 인증 요청 (/rest/req_income_data_check 응답)
인증요청 시 과금
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
조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다.
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
결과 단가는 60P × 데이터셋 수(1) × 조회범위 단위 수입니다 (조회범위 incomeYears, 1년 = 1단위, 기본 1). 조회범위는 인증 요청할 때 정하며, 좁히면 단가도 내려갑니다.

예시

인증 대기중 (무과금)

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "income_data_check",
        "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_data_check",
        "status": "COLLECTING",
        "resultAvailable": false,
        "charged": false,
        "sources": [],
        "progress": { "total": 1, "completed": 0 },
        "message": "정보를 조회하고 있습니다.",
        "success": 0
    },
    "api": {
        "success": true,
        "cost": 0,
        "ms": 38,
        "pl_id": -1
    }
}
            
조회 완료 (과금)

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "income_data_check",
        "status": "SUCCESS",
        "resultAvailable": true,
        "charged": true,
        "sources": [
            { "source": "국세청", "type": "INCOME_DATA_CHECK", "status": "SUCCESS" }
        ],
        "checkedAt": "2026-09-20T04:47:33+09:00",
        "resultExpiresAt": "2026-09-21T04:47:33+09:00",
        "result": {
            "incomeDataCheck": {
                "조회연도": [
                    "2025"
                ],
                "연도별": [
                    {
                        "귀속연도": "2025",
                        "연간소득총액": 242634500,
                        "근로소득": 104469506,
                        "근로소득(간이)": 0,
                        "사업소득(간이)": 0,
                        "원천징수 사업소득": 0,
                        "사업장 사업소득": 0,
                        "금융소득": 33695488,
                        "연금소득": 0,
                        "기타소득": 0,
                        "종교인소득": 0
                    }
                ],
                "지급자별": [
                    {
                        "자료출처": "지급명세서(사업소득)",
                        "지급자 상호(법인명)": "예시주식회사",
                        "지급자 사업자등록번호": "1234567890",
                        "수입금액": 1280000,
                        "업종": "서비스업",
                        "업종코드": "940909"
                    }
                ]
            }
        },
        "message": "인증이 완료되었습니다.",
        "success": 1
    },
    "api": {
        "success": true,
        "cost": 60,
        "ms": 318,
        "pl_id": 4903
    }
}
            
위 값은 응답 구조를 보여주기 위한 예시입니다. 값은 가상이지만 필드 구성과 타입은 실제 응답과 같습니다. 전체 항목은 결과 규격을 참고하세요. expiresAt 은 SUCCESS 응답에 없습니다. 인증 대기 기한(AUTH_WAITING)에만 있고, 결과를 받은 뒤에는 resultExpiresAt 이 그 역할을 대신합니다. 둘 중 어느 것이 오는지로 "지금이 승인 대기인지 결과 보관 기간인지"를 구분할 수 있습니다.

결과 규격

result.incomeDataCheck
경로
타입
값 존재
설명
예시
조회연도
Array<String>
O
실제로 조회된 귀속연도 목록(4자리 문자열).
["2025"]
연도별
Array<Object>
O
귀속연도별 소득자료 합계. 국세청에 제출된 자료가 없는 연도는 담기지 않는다.
귀속연도
String
O
귀속연도 4자리
2025
연간소득총액
Integer
O
연간 소득 총액(원)
242634500
근로소득
Integer
O
상용·일용 근로소득 합계(원)
104469506
근로소득(간이)
Integer
O
간이지급명세서로 제출된 근로소득(원)
0
사업소득(간이)
Integer
O
간이지급명세서로 제출된 사업소득(원)
0
원천징수 사업소득
Integer
O
원천징수된 사업소득(원)
0
사업장 사업소득
Integer
O
사업장에서 발생한 사업소득(원)
0
금융소득
Integer
O
이자·배당 등 금융소득(원)
33695488
연금소득
Integer
O
연금소득(원)
0
기타소득
Integer
O
기타소득(원)
0
종교인소득
Integer
O
종교인소득(원)
0
근로소득상세
Object
조건부
조회 시점의 반기 기준 근로소득 상세. 조회 기간이 아니면 null 이다.
귀속연도
String
O
귀속연도 4자리
2026
신청 구분
String
O
상반기분 또는 하반기분
상반기분
근로소득 합계
Integer
O
상용·일용 근로소득 합계(원)
40666665
상반기 근로소득
Integer
O
상반기 근로소득(원)
40666665
하반기 근로소득
Integer
O
하반기 근로소득(원)
0
상용근로소득
Integer
O
상용근로소득 합계(원)
40666665
상반기 상용근로소득
Integer
O
상반기 상용근로소득(원)
40666665
하반기 상용근로소득
Integer
O
하반기 상용근로소득(원)
0
일용근로소득
Integer
O
일용근로소득 합계(원)
0
상반기 일용근로소득
Integer
O
상반기 일용근로소득(원)
0
하반기 일용근로소득
Integer
O
하반기 일용근로소득(원)
0
지급자별
Array<Object>
O
지급자별 소득자료. 자료가 없으면 빈 배열이다.
자료출처
String
O
소득자료 종류 표기
지급명세서(사업소득)
지급자 상호(법인명)
String
O
지급자 상호 또는 법인명
예시주식회사
지급자 사업자등록번호
String
O
지급자 사업자등록번호. 하이픈 없이 10자리로 온다.
1234567890
수입금액
Integer
O
수입금액(원)
1280000
업종
String
O
업종 표기
서비스업
업종코드
String
O
업종코드
940909
타입 읽는 법String 은 문자열, Integer 는 소수점 없는 정수(원 단위 금액 포함), Boolean 은 true/false, Object 는 이름이 있는 하위 항목 묶음, Array<Object> 는 같은 구조가 여러 건 오는 목록, Array<String> 은 문자열 목록입니다. String(YYYY-MM-DD) 처럼 괄호가 붙으면 그 형식의 문자열이라는 뜻이고 날짜 타입이 아닙니다. 값 존재O 는 정상 응답에 항상 있는 항목, 조건부 는 값이 없으면 응답에서 빠지거나 빈 문자열이 되는 항목입니다. 없는 값을 0 이나 null 로 바꾸지 않으니 그대로 저장하지 말고 존재 여부를 먼저 확인하세요. 예시 — 응답에 들어오는 형태 그대로의 값입니다. 실제 조회 결과가 아니며 개인을 특정할 수 없는 가상의 값입니다. 이 열이 비어 있으면 하위 항목이 있는 묶음이거나 값이 빠질 수 있는 항목입니다. 들여쓰기된 항목은 바로 위 부모 안에 들어 있는 하위 항목입니다. 경로 표기에서 . 는 하위 항목, [ ] 를 붙인 항목은 그 안에 여러 건이 오는 목록이라는 뜻입니다.
현재 페이지 북마크