> For the complete documentation index, see [llms.txt](https://dev.ropo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.ropo.com/guides/general-add-ons/onboarding.md).

# Onboarding

Create a new customer profile in Ropo One via the REST API.

### Prerequisites

* You have an API token. See [Authentication](/guides/basics/authentication.md).
* Your contract enables `create_customer_api`.

### Create a customer profile

Send a `POST` request with the customer payload.

When creating a new profile through the Ropo One REST API, **only two data fields are mandatory**

* **customer\_info.business\_id**
* **contact\_person.email**

With these two data fields, Ropo One can initiate the **onboarding process**. In this process:

1\.     An **onboarding link** is sent to the contact person’s email address.

2\.     When the link is opened, the user is guided to an **onboarding wizard**, where all remaining required information is collected.

Ropo One requires several mandatory data fields to create a new profile and the first admin user for that profile. If all required fields are provided through the REST API, the onboarding process is skipped entirely.

## Create a new Ropo one Profile

> Creates a new Ropo One profile if the contract 'create\_customer\_api' is active for the authenticated user.

```json
{"openapi":"3.1.0","info":{"title":"Ropo One","version":"1.0.0"},"tags":[{"name":"profile","description":"Customer profile"}],"servers":[{"url":"/rest","description":"Ropo One"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"CreateProfileRequest":{"title":"CreateProfileRequest","description":"Profile creation payload","properties":{"allowIncompleteData":{"description":"Whether incomplete data is allowed. When true and required fields are missing, the profile is stored for later completion instead of created.","type":["boolean","null"]},"customer_info":{"$ref":"#/components/schemas/CreateProfileCustomerInfo","description":"Customer (company) information"},"customer_service_contact":{"$ref":"#/components/schemas/CreateCustomerServiceContact","description":"Customer service contact information"},"contact_person":{"$ref":"#/components/schemas/CreateCustomerContactPerson","description":"Contact person"},"agreement_acceptor":{"$ref":"#/components/schemas/CreateCustomerAgreementAcceptor","description":"Agreement acceptor"},"money_laundering_acceptor":{"$ref":"#/components/schemas/CreateCustomerMoneyLaunderingAcceptor","description":"Money laundering acceptor"},"services":{"$ref":"#/components/schemas/CreateProfileServices","description":"Services information"},"invoicing_service_settings":{"$ref":"#/components/schemas/CreateProfileInvoicingServiceSettings","description":"Invoicing service settings"},"reminder_service_settings":{"$ref":"#/components/schemas/CreateProfileReminderServiceSettings","description":"Reminder service settings"},"settlement_settings":{"$ref":"#/components/schemas/CreateCustomerSettlementSettings","description":"Settlement settings"},"ropo_service_fees":{"$ref":"#/components/schemas/CreateProfileRopoServiceFees","description":"Ropo service fees"},"additional_information":{"$ref":"#/components/schemas/CreateCustomerAdditionalInformation","description":"Additional information"},"users":{"description":"Users","type":["array","null"],"items":{"$ref":"#/components/schemas/CreateCustomerUser"}},"primary_contact_same":{"description":"Use the admin user as the contact person","type":["mixed","null"]},"agreement_approver_same":{"description":"Use the admin user as the agreement acceptor","type":["mixed","null"]},"kyc_contact_same":{"description":"Use the admin user as the money laundering acceptor","type":["mixed","null"]}},"type":"object"},"CreateProfileCustomerInfo":{"title":"CreateProfileCustomerInfo","description":"Customer (company) information","properties":{"business_id":{"description":"Business ID / Personal identification number","type":["string","null"]},"name":{"description":"Name","type":["string","null"]},"street_address":{"description":"Street address","type":["string","null"]},"street_address2":{"description":"Street address 2","type":["string","null"]},"postal_code":{"description":"Postal code","type":["string","null"]},"town_or_city":{"description":"Town or city","type":["string","null"]},"country":{"description":"Country","type":["string","null"]},"language":{"description":"Language","type":["string","null"]},"currency":{"description":"Currency","type":["string","null"]},"turnonver_per_year":{"description":"Turnover per year","type":["integer","null"]},"liable_to_pay_vat":{"description":"Is the customer liable to pay VAT","type":["boolean","null"]},"vat_number":{"description":"VAT number","type":["string","null"]},"customer_company_type":{"description":"Customer type","type":["integer","null"]},"service_model":{"description":"Service model","type":["string","null"]}},"type":"object"},"CreateCustomerServiceContact":{"title":"CustomerServiceContact","properties":{"telephone":{"description":"Telephone","type":["string","null"]},"email":{"description":"Email","type":["string","null"]}},"type":"object"},"CreateCustomerContactPerson":{"title":"ContactPerson","properties":{"name":{"description":"Name","type":["string","null"]},"telephone":{"description":"Telephone","type":["string","null"]},"email":{"description":"Email","type":["string","null"]}},"type":"object"},"CreateCustomerAgreementAcceptor":{"title":"AgreementAcceptor","properties":{"verification_method":{"description":"Verification method","type":["string","null"]},"email":{"description":"Email","type":["string","null"]}},"type":"object"},"CreateCustomerMoneyLaunderingAcceptor":{"title":"MoneyLaunderingAcceptor","properties":{"verification_method":{"description":"Verification method","type":["string","null"]},"name":{"description":"Name","type":["string","null"]},"ssn":{"description":"Social Security Number","type":["string","null"]},"telephone":{"description":"Telephone","type":["string","null"]},"email":{"description":"Email","type":["string","null"]},"aml_is_authorized":{"description":"AML is authorized. If true, agreement acceptor and kyc verifier are the same person.","type":["string","null"]}},"type":"object"},"CreateProfileServices":{"title":"Services","properties":{"service_types":{"description":"Service types to activate","type":"array","items":{"type":"integer"}}},"type":"object"},"CreateProfileInvoicingServiceSettings":{"title":"InvoicingServiceSettings","properties":{"terms_of_payment_days":{"description":"Terms of payment in days","type":["integer","null"]},"notice_period_days":{"description":"Notice period in days","type":["integer","null"]},"notice_text":{"description":"Notice text","type":["string","null"]}},"type":"object"},"CreateProfileReminderServiceSettings":{"title":"ReminderServiceSettings","properties":{"number_of_reminders":{"description":"Number of reminders","type":["integer","null"]},"reminder_layout":{"description":"Reminder layout","type":["mixed","null"]},"due_date_text":{"description":"Due date text","type":["mixed","null"]}},"type":"object"},"CreateCustomerSettlementSettings":{"title":"SettlementSettings","properties":{"settlement_cycle":{"description":"Settlement cycle","type":["integer","null"]},"bank_account_type":{"description":"Bank account type","type":["integer","null"]},"bank_account_number":{"description":"Bank account number","type":["string","null"]},"bic":{"description":"Bic","type":["string","null"]},"bank_account_owner":{"description":"Bank account owner","type":["string","null"]},"reference_length":{"description":"Reference length (SE & NO only)","type":["integer","null"]}},"type":"object"},"CreateProfileRopoServiceFees":{"title":"RopoServiceFees","properties":{"payer_is_this_company":{"description":"Payer is this company","type":["boolean","null"]},"invoicing_method":{"description":"Invoicing method (1=post, 2=email, 3=B2B e-invoice, 4=Peppol)","type":["integer","null"]},"invoicing_email_address":{"description":"Invoicing email address","type":["string","null"]},"evoice_address":{"description":"E-invoice address","type":["string","null"]},"broker_id":{"description":"E-invoice broker id","type":["string","null"]}},"type":"object"},"CreateCustomerAdditionalInformation":{"title":"AdditionalInformation","properties":{"customer_group":{"description":"Customer group","type":["string","null"]},"operator_id":{"description":"Operator ID","type":["string","null"]},"profile_uuid":{"description":"Profile UUID","type":["string","null"]}},"type":"object"},"CreateCustomerUser":{"title":"User","properties":{"first_name":{"description":"First name","type":["string","null"]},"last_name":{"description":"Last name","type":["string","null"]},"street_address":{"description":"Street address","type":["string","null"]},"postal_code":{"description":"Postal code","type":["string","null"]},"town_or_city":{"description":"Town or city","type":["string","null"]},"country":{"description":"Country","type":["string","null"]},"nationality":{"description":"Nationality","type":["string","null"]},"ssn":{"description":"Social Security Number","type":["string","null"]},"phone_number":{"description":"Phone number","type":["string","null"]},"email":{"description":"Email","type":["string","null"]},"language":{"description":"Language","type":["string","null"]},"user_level":{"description":"User level","type":["string","null"]}},"type":"object"},"NewCustomerResultRest":{"title":"NewCustomerResultRest","description":"NewCustomerResultRest","properties":{"customerId":{"description":"Customer ID of the newly created customer","type":["string","null"]},"message":{"description":"Message regarding the creation result","type":["string","null"]},"status":{"description":"Status of the customer creation process","type":["string","null"]}},"type":"object"},"IncompleteCustomerResult":{"title":"IncompleteCustomerResult","description":"Response object for incomplete customer creation operations","properties":{"uuid":{"description":"Unique identifier for the incomplete customer record","type":["string","null"]},"status":{"description":"HTTP status code or operation status","type":["string","null"]},"message":{"description":"Human-readable message describing the result","type":["string","null"]},"wizard_url":{"description":"Ropo One URL where to continue the onboarding process","type":["string","null"]}},"type":"object"},"HttpApiProblem":{"title":"HttpApiProblem","description":"HttpApiProblem","properties":{"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem","type":["integer","null"]},"type":{"description":"A URI reference that identifies the problem type","type":["string","null"]},"title":{"description":"A short, human-readable summary of the problem type","type":["string","null"]},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem","type":["string","null"]}},"type":"object"}}},"paths":{"/profile/createprofile":{"post":{"tags":["profile"],"summary":"Create a new Ropo one Profile","description":"Creates a new Ropo One profile if the contract 'create_customer_api' is active for the authenticated user.","operationId":"createCustomerAction","requestBody":{"description":"Profile creation payload","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProfileRequest"}}}},"responses":{"200":{"description":"Customer created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewCustomerResultRest"}}}},"201":{"description":"Incomplete customer data added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncompleteCustomerResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/HttpApiProblem"},{"$ref":"#/components/schemas/NewCustomerResultRest"}]}}}},"403":{"description":"Create customer contract not active","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpApiProblem"}}}}}}}}}
```

#### All mandatory and optional dataset tags

<table data-header-hidden data-full-width="true"><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Category</strong></td><td valign="top"><strong>Tag</strong></td><td valign="top"><strong>Mandatory</strong></td><td valign="top"><strong>Example value</strong></td><td valign="top"><strong>Additional information</strong></td></tr><tr><td valign="top"><strong>customer_info</strong></td><td valign="top">business_id</td><td valign="top"><mark style="color:red;"><strong>yes</strong></mark></td><td valign="top">1234567-8</td><td valign="top"><p>Business ID</p><p>(or social security number)</p><p><em>This cannot be changed afterwards.</em></p></td></tr><tr><td valign="top"> </td><td valign="top">name</td><td valign="top">no</td><td valign="top">Test Company Ltd</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">street_address</td><td valign="top">no</td><td valign="top">Street 10 A 2</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">street_address2</td><td valign="top">no</td><td valign="top">House B</td><td valign="top">Additional street address</td></tr><tr><td valign="top"> </td><td valign="top">postal_code</td><td valign="top">no</td><td valign="top">00100</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">town_or_city</td><td valign="top">no</td><td valign="top">Helsinki</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">country</td><td valign="top">no</td><td valign="top">FIN</td><td valign="top"><p>3-char country code</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">language</td><td valign="top">no</td><td valign="top">fin</td><td valign="top"><p>fin, eng, swe, nor</p><p>if not given, default by country</p></td></tr><tr><td valign="top"> </td><td valign="top">currency</td><td valign="top">no</td><td valign="top">EUR</td><td valign="top"><p>EUR, SEK or NOK</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">liable_to_pay_vat</td><td valign="top">no</td><td valign="top">1</td><td valign="top"><p>1=yes, 2=no</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">vat_number</td><td valign="top">no</td><td valign="top">FI12345678</td><td valign="top"><p>If liable_to_pay_vat=2, then is not mandatory</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">customer_company_type</td><td valign="top">no</td><td valign="top">2</td><td valign="top"><p>Company types:</p><p> </p><p>1. Corporate and Community customer</p><p>     --> Fin: Yritys- ja yhteisöasiakas</p><p> </p><p>2. Sole Proprietor</p><p>     --> Fin: Yksityinen  </p><p>            elinkeinonharjoittaja </p><p> </p><p>3. Housing Company</p><p>     --> Fin: Asunto-osakeyhtiö</p><p> </p><p>4. Associations</p><p>     --> Fin: Yhdistykset</p><p> </p><p>5. Foundations</p><p>     --> Fin: Säätiöt</p><p> </p><p>6. Mutual Real Estate</p><p>    Companies</p><p>     --> Fin: Keskinäiset</p><p>          kiinteistöosakeyhtiöt</p><p> </p><p>7. Religious Community</p><p>     --> Fin: Uskonnollinen yhdyskunta</p><p> </p><p>8. Foreign Entities</p><p>     --> Fin: Ulkomaiset yhteisöt</p><p> </p><p>9. General/Limited Partnership</p><p>     --> Fin: Henkilöyhtiö (Ay / Ky)</p><p> </p><p>10. Public Law Entity</p><p>     --> Fin: Julkisoikeudellinen yhteisö</p><p> </p><p>If not given --> onboarding wizard <em>(Mandatory only in Finland)</em></p></td></tr><tr><td valign="top"><strong>customer_service_contact</strong></td><td valign="top">telephone</td><td valign="top">no</td><td valign="top">+35844123456</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">email</td><td valign="top">no</td><td valign="top">info@test.com</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">www</td><td valign="top">no</td><td valign="top">www.test.com</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"><strong>contact_person</strong></td><td valign="top">name</td><td valign="top">no</td><td valign="top">John Doe</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">telephone</td><td valign="top">no</td><td valign="top">+35844123456</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">email</td><td valign="top"><mark style="color:red;"><strong>yes</strong></mark></td><td valign="top">john.doe@test.com</td><td valign="top">If onboarding-wizard is needed, onboarding-email is sent to this address. Onboarding email has a link to the onboarding-wizard.</td></tr><tr><td valign="top"><strong>agreement_acceptor</strong></td><td valign="top">email</td><td valign="top">no</td><td valign="top">john.doe@test.com</td><td valign="top"><p>Email with a link is sent to this email address for accepting Ropo One service agreement. Person eligibility is checked from official register after strong authentication.</p><p>If not given when needed, contact_person email is used</p></td></tr><tr><td valign="top"><strong>money_laundering_acceptor</strong></td><td valign="top">email</td><td valign="top">no</td><td valign="top">john.doe@test.com</td><td valign="top"><p>Email with a link is sent to this email address for filling up KYC-questionnaire form. Person eligibility is checked from official register after strong authentication.</p><p><em>Mandatory only in Finland (ropo24.fi).</em></p><p>If not given when needed, contact_person email is used</p></td></tr><tr><td valign="top"><strong>services</strong></td><td valign="top">service_types</td><td valign="top">no</td><td valign="top">1</td><td valign="top"><p>0.      Printing service</p><p>1.      Invoicing service</p><p>2.      Reminder service</p><p>3.      Debt Collection service</p><p>4.      Sending e-invoices (B2B)</p><p> </p><p>If none given any --> onboarding wizard.</p><p>More services can be opened in Ropo One user interface after first login.</p></td></tr><tr><td valign="top"><strong>settlement_settings</strong></td><td valign="top">bank_account_type</td><td valign="top">no</td><td valign="top">0</td><td valign="top"><p>0= iban</p><p>1= bban</p><p>2= plusgiro</p><p>3= bankgiro</p><p> </p><p>iban,bban, plusgiro,bankgiro</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">bank_account_number</td><td valign="top">no</td><td valign="top">FI12345678987623</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">bank_account_owner</td><td valign="top">no</td><td valign="top">Test Company Ltd</td><td valign="top"><p>For banks VoP-process</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top"><em>reference_length</em></td><td valign="top"><em>no</em></td><td valign="top"><em>10</em></td><td valign="top"><em>Only in Nor &#x26; Swe</em></td></tr><tr><td valign="top"><strong>ropo_service_fees</strong></td><td valign="top">invoicing_method</td><td valign="top">no</td><td valign="top">2</td><td valign="top"><p>1= post</p><p>2= email</p><p>3= einvoice</p><p>4= peppol</p><p> </p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">invoicing_email_address</td><td valign="top">yes /no</td><td valign="top">info@test.com</td><td valign="top"><p>When method = email</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">evoice_address</td><td valign="top">yes /no</td><td valign="top">00123456789</td><td valign="top"><p>When method = einvoice or peppol</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"> </td><td valign="top">broker_id</td><td valign="top">yes /no</td><td valign="top">00371234455</td><td valign="top"><p>When method = einvoice</p><p>If not given --> onboarding wizard</p></td></tr><tr><td valign="top"><strong>additional_information</strong></td><td valign="top">profile_uuid</td><td valign="top">no</td><td valign="top">123456789</td><td valign="top">You can provide your platforms customer unique ID. This is useful, if you have a dedicated endpoint for new profile's Ropo One REST API keys.</td></tr><tr><td valign="top"><p><strong>users</strong></p><p> </p></td><td valign="top">first_name</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">last_name</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">street_address</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">postal_code</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">town_or_city</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">country</td><td valign="top">no</td><td valign="top"> FI</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"></td><td valign="top">nationality</td><td valign="top">no</td><td valign="top">FIN</td><td valign="top"></td></tr><tr><td valign="top"> </td><td valign="top">ssn</td><td valign="top">no</td><td valign="top"> </td><td valign="top">Social Security Number</td></tr><tr><td valign="top"> </td><td valign="top">phone_number</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">email</td><td valign="top">no</td><td valign="top"> </td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top">language</td><td valign="top">no</td><td valign="top"> fin</td><td valign="top">If not given --> onboarding wizard</td></tr><tr><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td><td valign="top"> </td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://dev.ropo.com/guides/general-add-ons/onboarding.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
