End-to-end onboarding
This guide describes a complete onboarding flow for a connected account using the Paypercut APIs.
It demonstrates how to progress from account creation to an operational state where the account can accept payments and receive payouts.
Step 1: Create a connected account
Create a new account and request the required capabilities
POST /v1/accounts
{
"type": "business",
"country": "BG",
"email": "merchant@example.com",
"capabilities": {
"payments": { "requested": true },
"payouts": { "requested": true }
}
}
Response
{
"id": "01KN7T8K7WRF9C8MF1CA4KPM6Z",
"requirements": {
"currently_due": [
"business_profile.name",
"company.tax_id",
"representative.first_name"
]
},
"capabilities": {
"payments": "inactive",
"payouts": "inactive"
}
}
Step 2: Collect required information
Use the requirements.currently_due field to determine what information must be collected.
Typical required data includes:
- Business profile information
- Company registration data
- Representative details
Your platform should dynamically render forms based on these requirements.
Step 3: Update the account
Submit collected data using the account update endpoint.
POST /v1/accounts/01KN7T8K7WRF9C8MF1CA4KPM6Z
{
"business_profile": {
"name": "ACME Ltd"
},
"company": {
"tax_id": "BG123456789"
}
}
Step 4: Create persons
If the account represents a business, create associated persons such as representatives or owners.
POST /v1/accounts/01KN7T8K7WRF9C8MF1CA4KPM6Z/persons
{
"first_name": "Ivan",
"last_name": "Petrov",
"role": "representative"
}
Step 5: Upload documents
Upload verification documents.
multipart/form-data.POST /v1/files
{
"id": "file_123",
"purpose": "identity_document"
}
Attach the file to the account or person:
POST /v1/accounts/01KN7T8K7WRF9C8MF1CA4KPM6Z
{
"company": {
"verification": {
"document": {
"front": "file_123"
}
}
}
}
Step 6: Add payout details
Attach a payout destination to the account.
POST /v1/accounts/01KN7T8K7WRF9C8MF1CA4KPM6Z/external_accounts
{
"type": "bank_account",
"iban": "BG80BNBG96611020345678"
}
Step 7: Complete compliance tasks
Some onboarding flows require additional compliance actions, such as accepting agreements.
Retrieve the account compliance status:
GET /v1/risk/account_status
If tasks are returned, render them in your platform UI.
Example response
{
"account_id": "01KN7T8K7WRF9C8MF1CA4KPM6Z",
"blocking": true,
"status": "action_required",
"tasks": [
{
"id": "task_123",
"kind": "agreement_bundle",
"blocking": true
}
]
}
Present the documents and collect acceptance from an authorized person.
Submit the attestation:
POST /v1/attestations
After submission, re-fetch the account status to confirm that the task has been resolved.
Step 8: Monitor account status
Listen for account updates via webhooks.
Event:
account.updated
Example payload
{
"requirements": {
"currently_due": [],
"pending_verification": ["company.verification.document"]
}
}
Step 9: Account becomes operational
Once all requirements are satisfied and verification is complete:
{
"capabilities": {
"payments": "active",
"payouts": "active"
},
"charges_enabled": true,
"payouts_enabled": true
}
Integration principle
The onboarding flow must always be driven by:
- requirements
- capabilities
Avoid hardcoding onboarding steps. The API response defines the required state and next actions.

