개발가이드

  • 개발가이드

일용·간이·용역 소득내역 조회

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

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

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

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

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

1단계 · 조회 인증 요청

Method
URL
POST
https://apick.app/rest/req_income_by_payer
인증요청과 결과조회는 완전히 분리되어 있습니다. 이 호출은 인증요청만 보내고 transactionId 를 즉시 반환합니다. 결과는 사용자가 승인한 뒤 /rest/get_income_by_payer 에 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_by_payer" \
-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_by_payer",
        "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_by_payer
이 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_by_payer 가 반환한 트랜잭션 ID
본문은 transactionId 하나입니다. 결과조회 엔드포인트는 인증요청과 이 되는 /rest/get_income_by_payer 이며, 다른 항목의 엔드포인트로 조회하면 실패합니다. 조회 시각 기준 24시간이 지나면 RESULT_EXPIRED 가 반환됩니다. 이때는 인증요청부터 다시 시작해야 하며, 인증요청 단가(20P)가 다시 발생합니다.
요청 예시

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

응답

처리 상태(status)
의미
과금
AUTH_REQUESTED
조회 인증 요청 (/rest/req_income_by_payer 응답)
인증요청 시 과금
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
조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다.
incomeByPayer
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_by_payer",
        "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_by_payer",
        "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_by_payer",
        "status": "SUCCESS",
        "resultAvailable": true,
        "charged": true,
        "sources": [
            { "source": "국세청", "type": "INCOME_BY_PAYER", "status": "SUCCESS" }
        ],
        "checkedAt": "2026-09-20T04:47:33+09:00",
        "resultExpiresAt": "2026-09-21T04:47:33+09:00",
        "result": {
            "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
                            }
                        ]
                    }
                ]
            }
        },
        "message": "인증이 완료되었습니다.",
        "success": 1
    },
    "api": {
        "success": true,
        "cost": 60,
        "ms": 318,
        "pl_id": 4903
    }
}
            
위 값은 응답 구조를 보여주기 위한 예시입니다. 값은 가상이지만 필드 구성과 타입은 실제 응답과 같습니다. 전체 항목은 결과 규격을 참고하세요. expiresAt 은 SUCCESS 응답에 없습니다. 인증 대기 기한(AUTH_WAITING)에만 있고, 결과를 받은 뒤에는 resultExpiresAt 이 그 역할을 대신합니다. 둘 중 어느 것이 오는지로 "지금이 승인 대기인지 결과 보관 기간인지"를 구분할 수 있습니다.

결과 규격

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
O
지급명세서 종류 표기
간이지급명세서(근로소득)
지급자
String
O
지급자(징수의무자)명
예시주식회사
사업자등록번호
String
O
지급자 사업자등록번호 10자리(하이픈 포함)
123-45-67890
귀속연도
String
O
귀속연도 4자리
2026
지급연도
String
O
지급연도 4자리. 간이기타·간이사업에만 온다.
2026
소득구분
String
O
소득구분 표기. 간이기타에만 온다.
기타소득
업종구분
String
O
업종구분 표기. 간이사업에만 온다.
서비스업
용역구분
String
O
용역구분 표기. 사업장제공자에만 온다.
인적용역
총지급액
Integer
O
총지급액(원). 간이기타·간이사업에 온다.
1280000
과세소득
Integer
O
과세소득(원). 일용에 온다.
1280000
용역제공대가
Integer
O
용역제공대가(원). 사업장제공자에 온다.
1280000
급여 등
Integer
O
급여 등(원). 간이근로에 온다.
40666665
인정상여금액
Integer
O
인정상여금액(원). 간이근로에 온다.
0
비과세소득
Integer
O
비과세소득(원). 일용에 온다.
0
필요경비
Integer
O
필요경비(원). 간이기타에 온다.
0
소득금액
Integer
O
소득금액(원). 간이기타에 온다.
1280000
소득세
Integer
O
소득세(원)
154000
지방소득세
Integer
O
지방소득세(원)
15400
타입 읽는 법String 은 문자열, Integer 는 소수점 없는 정수(원 단위 금액 포함), Boolean 은 true/false, Object 는 이름이 있는 하위 항목 묶음, Array<Object> 는 같은 구조가 여러 건 오는 목록, Array<String> 은 문자열 목록입니다. String(YYYY-MM-DD) 처럼 괄호가 붙으면 그 형식의 문자열이라는 뜻이고 날짜 타입이 아닙니다. 값 존재O 는 정상 응답에 항상 있는 항목, 조건부 는 값이 없으면 응답에서 빠지거나 빈 문자열이 되는 항목입니다. 없는 값을 0 이나 null 로 바꾸지 않으니 그대로 저장하지 말고 존재 여부를 먼저 확인하세요. 예시 — 응답에 들어오는 형태 그대로의 값입니다. 실제 조회 결과가 아니며 개인을 특정할 수 없는 가상의 값입니다. 이 열이 비어 있으면 하위 항목이 있는 묶음이거나 값이 빠질 수 있는 항목입니다. 들여쓰기된 항목은 바로 위 부모 안에 들어 있는 하위 항목입니다. 경로 표기에서 . 는 하위 항목, [ ] 를 붙인 항목은 그 안에 여러 건이 오는 목록이라는 뜻입니다.
현재 페이지 북마크