하위 가맹점 한 곳의 PG 가맹 신청서를 최신순으로 읽는다. 각 항목의 값은 리셀러 웹훅 의 data 와 같은 이름이라, 웹훅을 놓쳤거나 순서가 뒤바뀌었을 때 이 API 로 최신 상태를 다시 맞춘다.
핵심 요약
- 그 가맹점의 신청서를 전부 보여 준다. 리셀러가 발급한 등록 폼으로 낸 신청(
channel=hosted)뿐 아니라 판매자가 부트페이 콘솔에서 직접 낸 신청(console)도 나온다.
- 최신순 20건까지.
onboarding_id 를 주면 그 1건만 온다.
- 신청이 없으면
{"list": []} 로 200 이다.
- 본사 담당자의 메모·연락 기록·제출 서류·담당자 연락처는 내려 주지 않는다.
API 정보
GEThttps://api.bootpay.co.kr/v2/reseller/seller/:provider_id/onboardingBasic Auth (리셀러 계정 키)
요청 파라미터
| 파라미터 |
타입 |
필수 |
설명 |
provider_id |
String |
필수 |
하위 가맹점의 provider_id (URL 경로) |
onboarding_id |
String |
선택 |
신청서 하나만 볼 때 (쿼리) |
코드 예제
import fetch from 'node-fetch'
const RESELLER_AUTH = 'Basic ' + Buffer
.from(`${process.env.BOOTPAY_RESELLER_CLIENT_KEY}:${process.env.BOOTPAY_RESELLER_SECRET_KEY}`)
.toString('base64')
const providerId = '65a1c0aa8f1b5b00367a0001'
const res = await fetch(`https://api.bootpay.co.kr/v2/reseller/seller/${providerId}/onboarding`, {
headers: { 'Authorization': RESELLER_AUTH }
})
const { list } = await res.json()
console.log(list[0]?.stage, list[0]?.stage_owner)javascript
import base64, os, requests
auth = 'Basic ' + base64.b64encode(
f"{os.environ['BOOTPAY_RESELLER_CLIENT_KEY']}:{os.environ['BOOTPAY_RESELLER_SECRET_KEY']}".encode()
).decode()
provider_id = '65a1c0aa8f1b5b00367a0001'
res = requests.get(
f'https://api.bootpay.co.kr/v2/reseller/seller/{provider_id}/onboarding',
headers={'Authorization': auth}
)
print(res.json()['list'])python
RESELLER_AUTH=$(printf '%s' "$BOOTPAY_RESELLER_CLIENT_KEY:$BOOTPAY_RESELLER_SECRET_KEY" | base64)
PROVIDER_ID='65a1c0aa8f1b5b00367a0001'
curl "https://api.bootpay.co.kr/v2/reseller/seller/$PROVIDER_ID/onboarding" \
-H "Authorization: Basic $RESELLER_AUTH"bash
응답
{
"list": [
{
"provider_id": "65a1c0aa8f1b5b00367a0001",
"onboarding_id": "6718a0aa8f1b5b00367a0101",
"kind": "pg_join",
"status": 1,
"status_name": "구비서류 전달 필요",
"stage": "doc_wait",
"stage_owner": "merchant",
"due_at": "2026-10-30T18:00:00+09:00",
"reject_reason": null,
"pg_wait_id": "6718a0aa8f1b5b00367a0101",
"pg": "nicepay",
"overdue": false,
"required_documents": ["doc"],
"channel": "hosted",
"c_at": "2026-10-27T10:00:00+09:00",
"u_at": "2026-10-27T11:20:00+09:00"
}
]
}json
응답 파라미터
| 파라미터 |
타입 |
설명 |
| list |
Array |
신청서 목록(최신순, 최대 20건) |
| list[].provider_id |
String |
하위 가맹점 provider_id |
| list[].onboarding_id |
String |
신청서 식별자. mode=edit 세션의 pg_wait_id 로 쓴다 |
| list[].pg_wait_id |
String |
onboarding_id 와 같은 값 |
| list[].kind |
String |
pg_join |
| list[].status |
Number |
신청 상태 번호 |
| list[].status_name |
String |
신청 상태 이름 |
| list[].stage |
String |
단계 — 아래 단계 표 |
| list[].stage_owner |
String |
지금 할 차례: ours 부트페이 · merchant 판매자 · pg PG사 · 끝난 단계는 null |
| list[].due_at |
String |
이 단계의 기한(ISO 8601). 기한이 없는 단계는 null |
| list[].overdue |
Boolean |
기한이 지났는지 |
| list[].required_documents |
Array |
서류 대기 단계일 때의 대기 사유 코드(doc 서류 · esign 전자계약 · fee 가맹비 · insurance 보증보험 · service_fix 서비스 보완 · review_fix PG 심사 보완 · card_fix 카드사 보완). 그 밖의 단계는 [] |
| list[].reject_reason |
String |
반려 사유(반려일 때만, 그 밖은 null) |
| list[].pg |
String |
신청한 PG 별칭. 아직 정해지지 않았으면 null |
| list[].channel |
String |
접수 입구: hosted 리셀러 등록 폼 · console 부트페이 콘솔 · api 리셀러 API |
| list[].c_at · u_at |
String |
접수·마지막 변경 시각(ISO 8601) |
단계 표
| stage |
뜻 (status) |
stage_owner |
intake |
접수됨 — 부트페이가 확인 중 (0 미확인) |
ours |
doc_wait |
판매자의 서류·정보 보완을 기다림 (1 구비서류 전달 필요 · 3 미비사항 전달 필요 · 4 구비서류 원본 등기 필요) |
merchant |
doc_review |
부트페이가 서류 검토 중 (2 구비서류 확인중) |
ours |
pg_submit |
PG사에 접수함 (10 PG사 접수) |
pg |
pg_review |
PG사 심사 중 (11 PG사 접수 확인 · 5 PG사 심사 진행중 · 7 진행중) |
pg |
done |
신청 완료 (6 신청완료) |
merchant |
closed |
끝남 (8 심사반려 · 9 신청 철회) |
null |
doc_wait 이면 판매자에게 보완을 안내한다. 고친 신청서는 같은 onboarding_id 로 mode=edit 세션을 발급 해 다시 내게 한다.
에러 코드
| 코드 |
메시지 |
대처 방법 |
API_ONLY_RESELLER (601) |
리셀러만 이용이 가능한 API 다 |
리셀러 권한 계정 키로 호출한다 |
RESELLER_SUSPENDED (343) |
본사가 리셀러 사용을 멈췄다 (HTTP 403) |
부트페이에 문의한다 |
PROVIDER_NOT_FOUND (300) |
본인 하위 가맹점이 아니다 (HTTP 404) |
provider_id 가 본인 하위 가맹점인지 확인한다 |
PG_WAIT_NOT_FOUND (11000) |
그 가맹점의 신청서가 아니다 (HTTP 404) |
onboarding_id 를 목록에서 다시 확인한다 |