Valnivo Professional
Not yet available · in design

Case projections for organisations, in batches, across borders

An organisation sends the figures it holds for the people it plans for — a pot, a monthly amount, a currency, a country — and gets a projection for each of them under each plan it wants to compare. Thousands at a time, from its own systems, over an API.

This is not available yet, and the page says so on purpose. The arithmetic is finished and running — the table below is real — but there is no account to open, nothing to buy, and the API is deliberately not exposed. What is missing is listed at the foot of this page. If it is the shape of thing you need, write to contact@valnivo.eu and say what your systems look like.

Try it on your own numbers

Below is the same calculation the API performs, running in this page. Nothing is sent anywhere: there is no request, no account and no server involved, which is also why you can put real figures in it. Each case is discounted by its own country’s inflation, which is the difference between a projection and a projection that assumes everybody lives in one place.

What the request looks like

One call carries up to 200 cases, each with up to 10 plans. A plan inherits the case’s figures and overrides whatever it names, so comparing “as things are” with “€300 more a month” is one extra line rather than a second case.

POST /v1/cases/projections
Authorization: Bearer <your key>

{
  "cases": [
    {
      "ref": "A-1042",              // your reference. never a name
      "country": "LU",
      "currency": "EUR",
      "starting": 1000000,          // minor units: €10,000.00
      "monthly": 50000,
      "plans": [
        { "ref": "as things are",  "years": 20, "returnRate": 0.05 },
        { "ref": "€300 more",      "years": 20, "returnRate": 0.05, "monthly": 80000 }
      ]
    }
  ]
}

Every figure is an integer in minor units in both directions, so nothing arrives as a float nobody can reconcile. One bad case comes back in rejected with its reference rather than failing the batch — a firm sending thousands cannot lose the answer over one typo.

Cases carry no identity, and the API refuses it

What a case may hold

Accepted

Figures, a currency, an ISO country code, and your own reference. That is enough to project, and it is all we want.

What it may not

Refused by name

A name, an e-mail, a phone number, an address, a date of birth, an account number or a national identifier. The request comes back naming the field it will not take.

Why refuse rather than ask

A promise in a document is a promise. Refusing the field at the boundary is a measure: you cannot send us identity by accident, and there is none here to lose.

How the responsibilities divide

What it will never do

These are not features waiting to be prioritised. They are the boundary that keeps this a calculation rather than a regulated activity, and it is the same boundary the consumer app lives inside.

Every figure the API returns carries the same sentence with it: illustrations built on the assumptions in the request, not a forecast, not advice, and not a statement of what anyone can afford or should do.

What has to be true before it opens