# 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":"profile"}],"servers":[{"url":"/rest","description":"Ropo One"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","bearerFormat":"JWT","scheme":"bearer"}},"schemas":{"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"},"Error":{"title":"Error","description":"Error","properties":{"Code":{"type":"integer"},"Message":{"type":"string"}},"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":{"type":"object"}}}},"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":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Create customer contract not active","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```

#### 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: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
