# Ropo One™ Connect

#### Connect service’s API calls <a href="#connect-services-api-calls" id="connect-services-api-calls"></a>

Connect service contains two individual services (Information logistic service and reminder / debt collection service).

* **Information logistic service** is for invoice distribution to the recipient
* **Reminder and debt collection service** is for collecting open receivables from debtors

To be able to use Ropo’s Connect service through REST, next API calls are required to have in place:

**Posting Information logistic invoices to Ropo One (information logistic service)**

{% content-ref url="/pages/rCNyPTWqcnz2cnjf7lCt" %}
[Invoice](/guides/basics/invoice.md)
{% endcontent-ref %}

**Posting invoices which should be reminded or collected to Ropo One (reminder and debt collection service)**

{% content-ref url="/pages/TKxRGmoYiq5LetFt7GdG" %}
[Reminder](/guides/basics/reminder.md)
{% endcontent-ref %}

{% content-ref url="/pages/YGBPN6uX2gAnqghZQ8YF" %}
[Debt Collection](/guides/basics/debt-collection.md)
{% endcontent-ref %}

#### Other most used REST API calls with unify service are next ones <a href="#other-most-used-rest-api-calls-with-unify-service-are-next-ones" id="other-most-used-rest-api-calls-with-unify-service-are-next-ones"></a>

**Information logistic service**

* **Get the invoice image from Ropo One.** REST API call’s response returns the invoice image as pdf.

{% content-ref url="/pages/Nvip8UHIHLHOZDmSNfmU" %}
[Get PDF](/guides/general-add-ons/get-pdf.md)
{% endcontent-ref %}

* **Preview the invoice image before posting the invoice to Ropo One**

{% content-ref url="/pages/8DGD3VOZOjJIJ9k6CxKQ" %}
[Preview of invoice](/guides/general-add-ons/preview-of-invoice.md)
{% endcontent-ref %}

* **Post the invoice as a local print to Ropo One and send the invoice by yourself to the recipient.** REST API call’s response returns the invoice image as pdf.

{% content-ref url="/pages/goQ5kgpXBYegxZA4J0Fq" %}
[Local print of invoice](/guides/general-add-ons/local-print-of-invoice.md)
{% endcontent-ref %}

**Reminder and debt collection services:**

* **Posting bypass payments or capital cancellations for invoices which are in Ropo One in reminder and debt collection services.**

{% content-ref url="/pages/wd4TOwK261DeytWm5Qa6" %}
[Payment](/guides/basics/payment.md)
{% endcontent-ref %}

* **Posting credit note allocated or refunded information for invoices which are in Ropo One in reminder and debt collection services.**

{% content-ref url="/pages/DbZVc1BYjG9BPuN48Zfl" %}
[Credit note allocation](/guides/basics/credit-note-allocation.md)
{% endcontent-ref %}

***

#### Connect: Posting information logistic invoice with minimum level information to Ropo One <a href="#connect-posting-information-logistic-invoice-with-minimum-level-information-to-ropo-one" id="connect-posting-information-logistic-invoice-with-minimum-level-information-to-ropo-one"></a>

Minimum required level information in dataset json of the invoice, for posting it to be information logistic invoice in Ropo One, are listed below:

**Invoice**

**Invoice Data (`dataset` tag):**

* **jobtype:** Message type 300
* **address:** Address of the recipient.
* **postcode:** Customer’s postal code.
* **company:** b2b end customer’s name (if customer type = 1)
* **person:** b2c end customer’s name (if customer type = 2)
* **city:** Customer’s post office.
* **customertype:** Client type (1 = company, 2 = private person).
* **billdate:** Date of invoice in the form of YYYY-MM-DD.
* **paydate:** Date of issue in the form of yyyy-mm-dd.

**Invoice Rows (`payrow` tag):**

* **desc:** Name of the product.
* **count:** Number of items.
* **amount:** Unit price (excl. tax)
* **taxpr:** Value Added Tax (0-100)

Example:

```json
{
  "datastream": {
    "dataset": [
      {
        "jobtype": "300",
        "address": "123 Main Street",
        "postcode": "12345",
        "company": "test company",
        "customertype": "1",
        "city": "Sample City",
        "billdate": "2025-05-06",
        "paydate": "2025-05-20",
        "payrow": [
          {
            "desc": "Product Description",
            "count": "10.00",
            "amount": "50.00",
            "taxpr": "24"
          }
        ]
      }
    ]
  }
}
```

***

#### How to post the information logistic invoice job to Ropo One <a href="#how-to-post-the-information-logistic-invoice-job-to-ropo-one" id="how-to-post-the-information-logistic-invoice-job-to-ropo-one"></a>

You need to know to which country and to which environment you are posting the reminder job. Ropo has country specific environments for testing and production purposes.

**Test environments:**

* FIN: [https://rc.ropo24.fi](https://rc.ropo24.fi/)
* SWE: [https://rc.ropo24.se](https://rc.ropo24.se/)
* NOR: [https://rc.ropo24.no](https://rc.ropo24.no/)

**Prod environments:**

* FIN: [https://ropo24.fi](https://ropo24.fi/)
* SWE: [https://ropo24.se](https://ropo24.se/)
* NOR: [https://ropo24.no](https://ropo24.no/)

For each environment your company’s Ropo One profile has own cid and apicode.

When posting jobs to Ropo One, you should be using jobs API-call: example swagger link to finnish environment <https://rc.ropo24.fi/swagger/#/jobs/JobAddJobAction>

First you need to do the authorization with cid and api code which Ropo has given to your knowledge:

**Fetch the token from wanted environment with your cid and api code**

```bash
curl -X POST "https://rc.ropo24.fi/rest/token" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"CIDCODE\",\"apicode\":\"APICODE\"}"
```

As a response, you will get the token

```json
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI3MDAwMDczIiwic2NvcGUiOltdLCJyb2xlcyI6WyJhcGljb2RlIl0sImlhdCI6MTc0Njc3NDQ0NywiZXhwIjoxNzQ2NzgxNjQ3fQ.OJGk9_760dldmaLIkqis2zv8hay5m6VsTDmiTfFuJUo_rTlrEgZXSyrnxhK50Xmfds9z-G-PXPfaJnQX_NnmKw"}
```

Then use the token as authorization header when posting job to Ropo One

```bash
curl -X POST "https://rc.ropo24.fi/rest/jobs" -H "accept: application/json" -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" -d "{\"datastream\":{\"dataset\":[{\"jobtype\":\"0\",\"address\":\"123 Main Street\",\"postcode\":\"12345\",\"company\":\"test company\",\"customertype\":\"1\",\"city\":\"Sample City\",\"billdate\":\"2025-05-06\",\"paydate\":\"2025-05-20\",\"payrow\":[{\"desc\":\"Product Description\",\"count\":\"10.00\",\"amount\":\"50.00\",\"taxpr\":\"24\"}]}]}}"
```

As a response to posting the job to Ropo One, Ropo One gives the information was the job accepted or rejected from Ropo One.

```json
{
  "result": [
    {
      "accepted": 1,
      "amount": 620,
      "billnum": "3222",
      "billcode": "",
      "error": null,
      "evoicetype": "",
      "jobid": 28117994,
      "jobstatus": "300",
      "jobtype": "300",
      "notice": null,
      "origbillnum": null,
      "ownref": "",
      "print": null,
      "receiver": "test company",
      "reference": "157000073281179944",
      "sendtype": "post"
    }
  ],
  "errors": [],
  "accepted": 1
}
```

***

#### Connect: Posting invoices with minimum required level information to Ropo’s reminder and debt collection services into Ropo One <a href="#connect-posting-invoices-with-minimum-required-level-information-to-ropos-reminder-and-debt-collecti" id="connect-posting-invoices-with-minimum-required-level-information-to-ropos-reminder-and-debt-collecti"></a>

In reminder and debt collection services Ropo could start the service from the reminder status or from debt collection status. If you are posting invoice to be reminder in Ropo One, you don’t need to post it again as debt collection, since Ropo One will proceed the reminded invoice to be in debt collection automatically if it’s not paid by the debtor.

***

**Posting invoice to be reminded with minimum level information to Ropo One**

Invoice which will be reminded monitored by Ropo.

Minimum level information in dataset json of the invoice, for posting it to be reminder in Ropo One, are listed below:

* **jobtype** = type of the job. Jobtype 1 is reminder
* **billcode** = invoice reference. This will be used as a default to be settlement reference of money payment to your settlement account.
* **amount** = open capital amount of the invoice
* **billnum** = invoice number of the invoice
* **person** = Consumer debtor’s name. NOTE! **company** field should be used with company debtor.
* **address** = Debtor’s Street address
* **postcode** = Debtor’s post code
* **city** = Debtor’s postal town
* **customertype** = customer type. 2 = person, 1 = company
* **billdate** = invoice date of the invoice
* **paydate** = invoice’s due date

Example:

```json
{
  "datastream": {
    "dataset": [
      {
        "jobtype": "1",
        "billcode": "4349",
        "amount": "55.32",
        "billnum": "1000",
        "person": "Nelli Niirulainen",
        "address": "Kellokoskenkatu 15 A 3",
        "postcode": "70100",
        "city": "KUOPIO",
        "customertype": "2",
        "billdate": "2017-01-01",
        "paydate": "2017-01-14"
      }
    ]
  }
}
```

***

#### How to post the reminder job to Ropo One <a href="#how-to-post-the-reminder-job-to-ropo-one" id="how-to-post-the-reminder-job-to-ropo-one"></a>

You need to know to which country and to which environment you are posting the reminder job. Ropo has country specific environments for testing and production purposes.

**Test environments:**

* FIN: [https://rc.ropo24.fi](https://rc.ropo24.fi/)
* SWE: [https://rc.ropo24.se](https://rc.ropo24.se/)
* NOR: [https://rc.ropo24.no](https://rc.ropo24.no/)

**Prod environments:**

* FIN: [https://ropo24.fi](https://ropo24.fi/)
* SWE: [https://ropo24.se](https://ropo24.se/)
* NOR: [https://ropo24.no](https://ropo24.no/)

For each environment your company’s Ropo One profile has own cid and apicode.

When posting jobs to Ropo One, you should be using jobs API-call: example swagger link to finnish environment <https://rc.ropo24.fi/swagger/#/jobs/JobAddJobAction>

First you need to do the authorization with cid and api code which Ropo has given to your knowledge:

**Fetch the token from wanted environment with your cid and api code**

```bash
curl -X POST "https://rc.ropo24.fi/rest/token" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"CIDCODE\",\"apicode\":\"APICODE\"}"
```

As a response, you will get the token

```json
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI3MDAwNDM5Iiwic2NvcGUiOltdLCJyb2xlcyI6WyJhcGljb2RlIl0sImlhdCI6MTU2ODk2Mzc4OCwiZXhwIjoxNTY4OTcwOTg4fQ.KyVsEJ63eUBvTrOz4bsfrm0gNLL-cSJcBBMWJnJ183jgc5zEye7p-u3kYSjUdzehoYuN-TayHJJy502DSKGmTA"}
```

Then use the token as authorization header when posting job to Ropo One

```bash
curl -X POST "https://rc.ropo24.fi/rest/jobs" -H "accept: application/json" -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" -d "{\"datastream\":{\"dataset\":[{\"jobtype\":\"1\",\"billcode\":\"4349\",\"amount\":\"55.32\",\"billnum\":\"87945191\",\"person\":\"Nelli Niirulainen\",\"address\":\"Kellokoskenkatu 15 A 3\",\"postcode\":\"70100\",\"city\":\"KUOPIO\",\"customertype\":\"2\",\"billdate\":\"2017-01-01\",\"paydate\":\"2017-01-14\"}]}}"
```

As a response to posting the job to Ropo One, Ropo One gives the information was the job accepted or rejected from Ropo One.

```json
{
  "result": [
    {
      "accepted": 1,
      "amount": 55.32,
      "billnum": "87945191",
      "billcode": "4349",
      "error": null,
      "evoicetype": "",
      "jobid": 26692344,
      "jobstatus": "1",
      "jobtype": "1",
      "notice": null,
      "origbillnum": null,
      "ownref": "",
      "print": null,
      "receiver": "Nelli Niirulainen",
      "reference": "157000073266923445",
      "sendtype": "post"
    }
  ],
  "errors": [],
  "accepted": 1
}
```

***

#### Posting invoice to be collected with minimum level information to Ropo One <a href="#posting-invoice-to-be-collected-with-minimum-level-information-to-ropo-one" id="posting-invoice-to-be-collected-with-minimum-level-information-to-ropo-one"></a>

**NOTE!** In reminder and debt collection services Ropo could start the service from the reminder status or from debt collection status. If you have posted the invoice to be reminder in Ropo One, you don’t need to post it again as debt collection, since Ropo One will proceed the reminded invoice to be in debt collection automatically if it’s not paid by the debtor.

But if, you haven’t posted the invoice already to Ropo One as reminder, you could post it to be collected by Ropo One.

**Invoice which will be collected and monitored by Ropo.**

Minimum required level information in dataset json of the invoice, for posting it to be reminder in Ropo One, are listed below:

* **jobtype** = type of the job. Jobtype 2 is debt collection.
* **billcode** = invoice reference. This will be used as a default to be settlement reference of money payment to your settlement account.
* **amount** = open capital amount of the invoice
* **billnum** = invoice number of the invoice
* **person** = Consumer debtor’s name. NOTE! **company** field should be used with company debtor.
* **address** = Debtor’s Street address
* **postcode** = debtor’s post code
* **city** = debtor’s postal town
* **customertype** = customer type. 2 = person, 1 = company
* **Noticedate** = Date when creditor has sent the reminder to the debtor (Mandatory in Finland).
* **billdate** = invoice date of the invoice
* **paydate** = invoice’s due date

Example:

```json
{
  "datastream": {
    "dataset": [
      {
        "jobtype": "2",
        "billcode": "4349",
        "amount": "55.32",
        "billnum": "1000",
        "person": "Nelli Niirulainen",
        "address": "Kellokoskenkatu 15 A 3",
        "postcode": "70100",
        "city": "KUOPIO",
        "customertype": "2",
        "noticedate": "2025-01-30",
        "billdate": "2025-01-01",
        "paydate": "2025-01-14"
      }
    ]
  }
}
```

***

#### How to post the debt collection job to Ropo One <a href="#how-to-post-the-debt-collection-job-to-ropo-one" id="how-to-post-the-debt-collection-job-to-ropo-one"></a>

You need to know to which country and to which environment you are posting the reminder job. Ropo has country specific environments for testing and production purposes.

**Test environments:**

* FIN: [https://rc.ropo24.fi](https://rc.ropo24.fi/)
* SWE: [https://rc.ropo24.se](https://rc.ropo24.se/)
* NOR: [https://rc.ropo24.no](https://rc.ropo24.no/)

**Prod environments:**

* FIN: [https://ropo24.fi](https://ropo24.fi/)
* SWE: [https://ropo24.se](https://ropo24.se/)
* NOR: [https://ropo24.no](https://ropo24.no/)

For each environment your company’s Ropo One profile has own cid and apicode.

When posting jobs to Ropo One, you should be using jobs API-call: example swagger link to finnish environment <https://rc.ropo24.fi/swagger/#/jobs/JobAddJobAction>

First you need to do the authorization with cid and api code which Ropo has given to your knowledge:

**Fetch the token from wanted environment with your cid and api code**

```bash
curl -X POST "https://rc.ropo24.fi/rest/token" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"cid\":\"CIDCODE\",\"apicode\":\"APICODE\"}"
```

As a response, you will get the token

```json
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI3MDAwNDM5Iiwic2NvcGUiOltdLCJyb2xlcyI6WyJhcGljb2RlIl0sImlhdCI6MTU2ODk2Mzc4OCwiZXhwIjoxNTY4OTcwOTg4fQ.KyVsEJ63eUBvTrOz4bsfrm0gNLL-cSJcBBMWJnJ183jgc5zEye7p-u3kYSjUdzehoYuN-TayHJJy502DSKGmTA"}
```

Then use the token as authorization header when posting job to Ropo One

```bash
curl -X POST "https://rc.ropo24.fi/rest/jobs" -H "accept: application/json" -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" -d "{\"datastream\":{\"dataset\":[{\"jobtype\":\"2\",\"billcode\":\"4349\",\"amount\":\"55.32\",\"billnum\":\"87945191\",\"person\":\"Nelli Niirulainen\",\"address\":\"Kellokoskenkatu 15 A 3\",\"postcode\":\"70100\",\"city\":\"KUOPIO\",\"customertype\":\"2\",\"noticedate\":\"2025-01-30\",\"billdate\":\"2025-01-01\",\"paydate\":\"2025-01-14\"}]}}"
```

As a response to posting the job to Ropo One, Ropo One gives the information was the job accepted or rejected from Ropo One.

```json
{
  "result": [
    {
      "accepted": 1,
      "amount": 55.32,
      "billnum": "87945191",
      "billcode": "4349",
      "error": null,
      "evoicetype": "",
      "jobid": 26692344,
      "jobstatus": "2",
      "jobtype": "2",
      "notice": null,
      "origbillnum": null,
      "ownref": "",
      "print": null,
      "receiver": "Nelli Niirulainen",
      "reference": "157000073266923445",
      "sendtype": "post"
    }
  ],
  "errors": [],
  "accepted": 1
}
```


---

# 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/service-models/ropo-one-tm-connect.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.
