본문으로 건너뛰기

계좌조회 API 문서

계좌조회 API 개요

Bank API는 국내 은행 계좌의 거래내역을 조회할 수 있는 REST API입니다. 간단한 HTTP 요청으로 은행 데이터를 연동할 수 있습니다.

Base URL

https://api-7mpyj62y4a-du.a.run.app

테스트용 API Key

아래 키를 사용하여 바로 테스트해볼 수 있습니다:

Test Credentials
API Key:    {{API_KEY}}
Secret Key: {{SECRET_KEY}}
주의: 위 키는 테스트 전용입니다. 실제 서비스에서는 반드시 본인의 API Key를 발급받아 사용하세요. 테스트 키는 Rate Limit이 제한되어 있으며, 예고 없이 변경될 수 있습니다.

계좌조회 API 인증 방식

API 요청 시 Authorization 헤더에 API Key와 Secret Key를 포함해야 합니다.

Private Mode (권장)

API Key와 Secret Key를 콜론(:)으로 연결하여 Bearer 토큰으로 전송합니다.

Authorization: Bearer {apiKey}:{secretKey}

인증 예시

Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}

계좌거래내역 조회

지정한 기간의 계좌 거래내역을 조회합니다.

POST /api/v1/transactions

요청 파라미터

파라미터 타입 필수 설명
bankCode string 필수 은행 코드 (NH, KB, SH, WR, HN 등)
accountNumber string 필수 계좌번호 (하이픈 없이)
accountPassword string 필수 계좌 비밀번호
residentNumber string 필수 주민등록번호 앞 6자리
startDate string 필수 조회 시작일 (YYYYMMDD)
endDate string 필수 조회 종료일 (YYYYMMDD)

은행 코드

코드 은행명 코드 은행명
NH 농협은행 KB KB국민은행
SH 신한은행 WR 우리은행
HN 하나은행 IBK IBK기업은행
SC SC제일은행 KAKAO 카카오뱅크
KBANK 케이뱅크 TOSS 토스뱅크

코드 예제

bank-api ~ terminal
curl -X POST https://api-7mpyj62y4a-du.a.run.app/api/v1/transactions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}" \
  -d '{
    "bankCode": "NH",
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "accountPassword": "1234",
    "residentNumber": "800101",
    "startDate": "20260101",
    "endDate": "20260110"
  }'

응답 예시

200 OK
{
  "success": true,
  "data": {
    "accountNumber": "{{ACCOUNT_NUMBER}}",
    "bankCode": "NH",
    "bankName": "농협은행",
    "balance": 1234567,
    "transactions": [
      {
        "date": "2026-01-10",
        "time": "14:30:25",
        "type": "출금",
        "amount": 50000,
        "balance": 1234567,
        "description": "카드결제",
        "memo": "스타벅스"
      },
      {
        "date": "2026-01-09",
        "time": "09:15:00",
        "type": "입금",
        "amount": 3000000,
        "balance": 1284567,
        "description": "급여",
        "memo": "1월 급여"
      }
    ]
  }
}

에러 응답

403 Forbidden - 계좌 미등록
{
  "success": false,
  "error": "ACCOUNT_NOT_REGISTERED",
  "message": "등록되지 않은 계좌입니다. 먼저 계좌를 등록해주세요."
}
429 Too Many Requests - Rate Limit 초과
{
  "success": false,
  "error": "Rate limit exceeded"
}
401 Unauthorized - 인증 실패
{
  "success": false,
  "error": "Invalid API Key"
}
참고: 거래내역을 조회하려면 먼저 계좌 등록 API를 통해 해당 계좌를 등록해야 합니다.

계좌조회 API 계좌 관리

API Key별로 사용할 계좌를 등록하고 관리합니다. 요금제에 따라 등록 가능한 계좌 수가 제한됩니다.

계좌 등록

새로운 계좌를 등록합니다. 계좌번호는 SHA-256 해시로 저장되어 보안이 유지됩니다.

주의: 계좌번호는 해시로 저장되어 등록된 계좌번호 목록을 확인할 수 없습니다. 삭제 시에도 정확한 은행코드와 계좌번호가 필요하므로, 잘못 등록하면 어떤 계좌인지 알 수 없어 삭제가 불가능합니다. 등록 전 반드시 정확한 정보인지 확인해 주세요.
POST /api/v1/accounts

요청 파라미터

파라미터 타입 필수 설명
bankCode string 필수 은행 코드 (NH, WR 등)
accountNumber string 필수 계좌번호 (하이픈 없이)

지원 은행

은행 코드 은행명 상태
NH 농협은행 지원
WR 우리은행 지원
KB KB국민은행 요청 시 활성화
SH 신한은행 요청 시 활성화
HN 하나은행 요청 시 활성화
IBK IBK기업은행 요청 시 활성화
은행 추가 안내: 현재 농협은행(NH)과 우리은행(WR)이 기본 지원됩니다. 다른 은행이 필요하신 경우 문의하기를 통해 요청해 주시면 1~2 영업일 내에 활성화해 드립니다.

코드 예제

계좌 등록
curl -X POST https://api-7mpyj62y4a-du.a.run.app/api/v1/accounts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}" \
  -d '{
    "bankCode": "NH",
    "accountNumber": "{{ACCOUNT_NUMBER}}"
  }'

응답 예시

200 OK
{
  "success": true,
  "message": "계좌가 등록되었습니다",
  "data": {
    "registeredCount": 1,
    "maxAccounts": 3,
    "remaining": 2
  }
}

계좌 삭제

등록된 계좌를 삭제합니다.

DELETE /api/v1/accounts

코드 예제

계좌 삭제
curl -X DELETE https://api-7mpyj62y4a-du.a.run.app/api/v1/accounts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}" \
  -d '{
    "bankCode": "NH",
    "accountNumber": "{{ACCOUNT_NUMBER}}"
  }'

응답 예시

200 OK
{
  "success": true,
  "message": "계좌가 삭제되었습니다",
  "data": {
    "registeredCount": 0,
    "maxAccounts": 3,
    "remaining": 3
  }
}

등록 현황 조회

현재 등록된 계좌 수와 남은 등록 가능 수를 조회합니다.

안내: 계좌번호는 보안을 위해 해시(SHA-256)로 저장됩니다. 따라서 등록된 계좌번호 목록은 조회할 수 없으며, 등록 개수와 남은 슬롯만 확인 가능합니다. 특정 계좌의 등록 여부는 계좌 등록 확인 API를 이용해주세요.
GET /api/v1/accounts

코드 예제

등록 현황 조회
curl -X GET https://api-7mpyj62y4a-du.a.run.app/api/v1/accounts \
  -H "Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}"

응답 예시

200 OK
{
  "success": true,
  "data": {
    "registeredCount": 2,
    "maxAccounts": 3,
    "remaining": 1
  }
}

계좌 등록 여부 확인

특정 계좌가 등록되어 있는지 확인합니다.

POST /api/v1/accounts/check

코드 예제

계좌 등록 여부 확인
curl -X POST https://api-7mpyj62y4a-du.a.run.app/api/v1/accounts/check \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {{API_KEY}}:{{SECRET_KEY}}" \
  -d '{
    "bankCode": "NH",
    "accountNumber": "{{ACCOUNT_NUMBER}}"
  }'

응답 예시

200 OK
{
  "success": true,
  "data": {
    "isRegistered": true
  }
}

에러 응답

에러 코드 설명
ACCOUNT_ALREADY_REGISTERED 이미 등록된 계좌입니다
ACCOUNT_LIMIT_EXCEEDED 계좌 등록 한도를 초과했습니다
ACCOUNT_NOT_FOUND 등록되지 않은 계좌입니다

계좌조회 API Rate Limiting

요금제에 따라 API 요청 횟수가 제한됩니다. 제한 초과 시 429 에러가 반환됩니다.

요금제 분당 월간 계좌 수
Free 10건 500건 1개
Starter 30건 5,000건 5개
Business 100건 30,000건 20개
Enterprise 커스텀 무제한 무제한

Rate Limit 헤더

응답 헤더에서 현재 사용량을 확인할 수 있습니다:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 8
X-RateLimit-Reset: 1704067200

계좌조회 API 에러 코드

API 요청 실패 시 반환되는 에러 코드입니다.

코드 상태 설명
400 Bad Request 잘못된 요청 파라미터
401 Unauthorized 인증 실패 (API Key/Secret Key 오류)
403 Forbidden 접근 권한 없음
404 Not Found 존재하지 않는 엔드포인트
429 Too Many Requests Rate Limit 초과
500 Internal Server Error 서버 내부 오류

에러 응답 형식

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded (10 requests/minute)",
    "retryAfter": 45
  }
}

계좌조회 API 보안

Bank API는 사용자의 금융 정보 보호를 최우선으로 합니다.

계좌 정보 보호

Bank API는 어떠한 경우에도 계좌 정보를 데이터베이스에 저장하지 않습니다.

  • 계좌번호, 비밀번호, 주민등록번호 등 민감 정보는 API 요청 처리 후 즉시 폐기됩니다
  • 거래내역 데이터는 서버에 저장되지 않으며, 실시간으로 은행에서 조회하여 전달합니다
  • 서버 로그에도 민감 정보는 기록되지 않습니다

계좌 수 관리

요금제별 계좌 수 제한을 관리하기 위해, 계좌번호를 단방향 해시(SHA-256)하여 저장합니다.

  • 해시된 값으로는 원본 계좌번호를 복원할 수 없습니다
  • 동일한 계좌를 여러 번 등록하는 것을 방지하는 용도로만 사용됩니다
  • 해시값은 계좌 수 카운팅 외 다른 용도로 사용되지 않습니다
계좌번호 해시 예시
# 원본 계좌번호 (저장되지 않음)
1234567890

# 해시된 값 (저장됨 - 원본 복원 불가)
c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646

API Key 보안

  • API Key와 Secret Key는 SHA-256으로 해시하여 저장합니다
  • 평문 키는 최초 발급 시 한 번만 표시되며, 이후 복구가 불가능합니다
  • 키가 유출된 경우 즉시 새로운 키를 발급받으세요

통신 보안

  • 모든 API 통신은 TLS 1.2 이상의 HTTPS로 암호화됩니다
  • HTTP 요청은 자동으로 HTTPS로 리다이렉트됩니다

API 테스트

API를 직접 테스트해보고 싶으신가요? 회원가입 없이 바로 실제 API를 호출해볼 수 있습니다.

API 테스트 페이지로 이동 →