Overview
Partners can onboard merchants in two ways:- Create a merchant (below) — Provide basic contact info; the merchant completes the full form (company details, bank linking, billing agreement).
- Fast-track (API) — Provide full company and regulatory data in one request; the sub-TPP is created immediately and the merchant only completes FarPay and bank linking via the returned link. Use for migrations or when you already have all required data.
Create a Merchant
Response
onboardingUrl with the merchant. They complete a form that covers:
- CVR lookup (Danish company registration)
- Company details and address
- Beneficial owners, directors, signatories
- Bank account linking (via secure open banking)
- Billing agreement
Fast-track merchant creation (API)
Use this endpoint when you already have full merchant and company data (e.g. from a migration or your own onboarding) and want to create the sub-TPP on Token.io immediately. The backend creates the merchant and sub-TPP in one call; the merchant only needs to complete the remaining steps (FarPay agreement and bank account linking) via the returned onboarding link. Endpoint:POST /v1/partner/merchants/fast-track
When to use: Programmatic integrations, bulk migrations, or when you collect all required company and regulatory data yourself. The merchant will appear in your Partner Dash with status Pending completion until they finish FarPay and bank linking. You can use Resend Onboarding Link to send them the link.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
companyName | string | Yes | Legal company name |
contactEmail | string | Yes | Merchant contact email |
contactPhone | string | No | Contact phone |
partnerRefId | string | No | Your internal reference for this merchant |
registrationNumber | string | Yes | Company registration number (CVR) |
website | string | Yes | Company website URL |
iban | string | Yes | Company IBAN for payouts |
bic | string | No | BIC/SWIFT code |
primaryUseCase | string | No | One of: PIS: In store merchant payment, PIS: eCommerce merchant payment, PIS: Funding an account, PIS: Paying a bill, PIS: Paying off debt. Default: PIS: In store merchant payment |
mccCode | string | No | Merchant Category Code (4-digit) |
isSoleTrader | boolean | No | Whether the merchant is a sole trader |
soleTrader | object | No | If sole trader: { fullName, address?, dateOfBirth? } (dateOfBirth: YYYY-MM-DD) |
ubos | array | No | Ultimate beneficial owners: [{ fullName, address?, dateOfBirth? }] |
directors | array | No | Directors: [{ fullName, address?, dateOfBirth? }] |
signatories | array | No | Authorized signatories: [{ fullName, address?, dateOfBirth? }] |
address | object | No | { street?, city?, postalCode?, countryCode? } (default countryCode: DK) |
Example
Response
status:pending_farpay_aiswhen the sub-TPP was created successfully (merchant must complete FarPay and bank linking viaonboardingUrl). If sub-TPP creation failed,statusispending_onboardingandsubTppStatus/subTppMessagedescribe the failure.- Share
onboardingUrlwith the merchant so they can complete the remaining steps. Use the resend onboarding endpoint if the link expires or is lost.
Check Onboarding Status
Response
Status Values
| Status | Description |
|---|---|
pending_onboarding | Merchant hasn’t completed the onboarding form yet |
pending_completion | Fast-tracked: sub-TPP created; merchant must complete FarPay and bank linking via onboarding link |
pending_farpay_ais | Same as pending_completion (returned by fast-track create response) |
awaiting_approval | Onboarding complete, waiting for regulatory approval |
activated | Merchant is active and can accept payments |
rejected | Application was rejected |
inactive | Merchant deactivated |
List Merchants
Resend Onboarding Link
If the link expires (7 days) or the merchant lost it:Webhook Notifications
Subscribe tomerchant.activated and merchant.onboarding.completed webhook events to know when merchants are ready to accept payments. See Webhooks.
