Skip to content

Onboarding

Self-service tenant onboarding flow. Tenants complete a multi-step wizard to set up their account, submit business information, add representatives, and accept terms of service.

Onboarding Steps

Start → Business Info → Representatives → Documents → Funding Account → TOS → Complete

Get Onboarding Status

GET /api/v1/onboarding/status

Returns current onboarding state, completed steps, and remaining requirements.

bash
curl -X GET https://api.paystream.fi/api/v1/onboarding/status \
  -H "Authorization: Bearer psk_test_xxx"

Response:

json
{
  "data": {
    "state": "in_progress",
    "completedSteps": ["start", "business"],
    "remainingSteps": ["persons", "documents", "funding_account", "tos"],
    "requirements": []
  }
}

Start Onboarding

POST /api/v1/onboarding/start

Initialize onboarding and create a provider account.

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/start \
  -H "Authorization: Bearer psk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "moov"
  }'

Submit Business Info

POST /api/v1/onboarding/business

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/business \
  -H "Authorization: Bearer psk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "legalBusinessName": "Acme Corp",
    "businessType": "llc",
    "ein": "123456789",
    "address": {
      "line1": "123 Main St",
      "city": "San Francisco",
      "state": "CA",
      "postalCode": "94105",
      "country": "US"
    },
    "phone": "4155551234",
    "website": "https://acme.com",
    "description": "Logistics and delivery services"
  }'

Representatives

List Persons

GET /api/v1/onboarding/persons

Add Person

POST /api/v1/onboarding/persons

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/persons \
  -H "Authorization: Bearer psk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Jane",
    "lastName": "Doe",
    "title": "CEO",
    "relationship": "representative",
    "dateOfBirth": "1985-03-15",
    "ssn": "123456789",
    "email": "jane@acme.com",
    "phone": "4155551234",
    "address": {
      "line1": "123 Main St",
      "city": "San Francisco",
      "state": "CA",
      "postalCode": "94105",
      "country": "US"
    }
  }'

Update Person

PUT /api/v1/onboarding/persons/:id

Documents

Get Upload URL

GET /api/v1/onboarding/documents/upload-url

Upload Document

POST /api/v1/onboarding/documents/upload

List Documents

GET /api/v1/onboarding/documents

Add Funding Account

POST /api/v1/onboarding/funding-account

Link a bank account during onboarding for balance funding.

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/funding-account \
  -H "Authorization: Bearer psk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "routingNumber": "123456789",
    "accountNumber": "4242424242",
    "accountType": "checking"
  }'

Accept Terms of Service

POST /api/v1/onboarding/tos

Completes onboarding and activates the tenant account.

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/tos \
  -H "Authorization: Bearer psk_test_xxx"

Multi-Provider Propagation

After primary onboarding completes, PayStream asynchronously provisions accounts with all other configured providers.

Get Propagation Status

GET /api/v1/onboarding/propagation

Retry Failed Propagation

POST /api/v1/onboarding/propagation/retry

bash
curl -X POST https://api.paystream.fi/api/v1/onboarding/propagation/retry \
  -H "Authorization: Bearer psk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "moov"
  }'

Propagation Statuses

StatusDescription
pendingQueued for processing
in_progressCurrently provisioning
completedAccount fully provisioned
partialAccount created but TOS pending
failedProvisioning failed (retryable)

Released under the MIT License.