Independent community resource. Not run, reviewed or endorsed by Ownera.Official docs: finp2p-docs.ownera.io · disclosure · for AI agents
Developers

Build on FinP2P: a field guide.

How to connect an app, a ledger, a custody service or a data feed to Ownera's FinP2P network, written by people who have done it, with every step linked into Ownera's own documentation.

Community guide, not official documentation. finp2p.info is an independent community resource. It is not run, reviewed or endorsed by Ownera. This page summarizes Ownera's public documentation so more builders can find their way onto the network; where it and the official docs disagree, the official docs win. Sandbox access, credentials and listing decisions come from Ownera, not from us. Links checked 2026-10-13.

Pick your path

Ownera's docs split builders into two kinds, plus the institutions that run the network and the people who only need to read it. Find yourself below.

Business application

A trading venue, issuance platform, wallet, investor portal, treasury or lending tool. You keep your product and add a small integration service that talks to a Router: REST under /finapi for actions, GraphQL for reads. Your users, accounts and orders map to investor profiles, asset profiles and intents.

Start with Hello World ↗

Utility or connector

A ledger, custody or signing service, payment rail, data feed, compliance check. Other apps consume you, so you implement an adapter API that the Router calls. Ledger, custody and data provider specs are public, with event-driven "proxy" variants if you cannot expose a REST server.

See the adapters

Institution

A bank, market infrastructure or asset manager. You run your own Router (one per organisation) inside your own environment, keep your keys and data, and choose apps from the SuperApps store. Deployment is arranged with Ownera directly.

Router integration architecture ↗

Researcher, analyst or AI agent

No credentials needed. The store has a public JSON API, Ownera's docs publish an llms.txt and an MCP server, and this site's whole dataset is one CC BY file.

The agent guide

The model in seven terms

Router
The FinP2P node each institution runs. Routers talk to each other peer to peer; there is no shared ledger in the middle. ISVs usually connect to their clients' Routers rather than running one. Router fundamentals ↗
SuperApp
Any application or service connected to a Router. Ownera's store lists 35 of them today. Integration paths ↗
Profile
A global identity for an owner (investor) or an asset. Owner identities are secp256k1 keys. Profiles are shared explicitly with other organisations.
Intent
A declarative statement of what should happen: a primary sale, a buying or selling intent, a loan, a transfer, a redemption. It says what, never how on any particular chain. Intent-based orchestration ↗
Orchestration plan
The step-by-step workflow the Router generates from an intent and proposes to the other participants' Routers, who approve and execute it together. You submit intents and watch plans; you rarely write plans.
Adapter
The bridge between a Router and a ledger, custody provider or data source. Adapters are where chain-specific code lives.
Certificate
A signed attribute attached to a profile: KYC, AML, accreditation, company info, NAV. Schemas are public in finp2p-certificates-spec.

Resource IDs look like organization:resource-type:uuid, so an ID tells you which organisation's Router owns it.

How a call flows

  1. Something happens in your app: an investor clicks buy, a desk books a repo, a rebalancer fires.
  2. Your integration creates an intent and submits it to your local Router over REST.
  3. The Router builds an orchestration plan and proposes it to every participating Router.
  4. The Routers execute it peer to peer, step by step, with full consensus; adapters move the asset and the cash on whatever ledgers they live on.
  5. Results and proofs come back. Most calls are asynchronous: you get a correlation id (cid) and poll the operation, or read the plan over GraphQL.

The How it works page draws this end to end with a repo trade.

Authentication

Every request to a Router carries a fresh, single-use JWT signed RS256 with your own private key. Onboarding: generate an RSA key pair, send Ownera the public key, receive an API key and your organisation ID, then sign a new token for every call (it expires 30 seconds after issue, and the nonce cannot be reused).

openssl genrsa -out prv.key 4096
openssl rsa -in prv.key -RSAPublicKey_out -out pub.key   # send pub.key to Ownera
// JWT payload, one per request, signed RS256
{
  "aud": "<ORGANIZATION_ID>",
  "apiKey": "<API_KEY>",
  "nonce": "<24 random bytes + 8-byte epoch, hex>",
  "iat": 1760380800,
  "exp": 1760380830
}

Heads-up: the Hello World sample puts the API key in an apiKey claim. The Authorization reference calls it sub in its prose but uses apiKey in its own code sample. In our own testing with Ownera's engineers (Sep 2026) the auth service read apiKey; setting both sub and apiKey to the API key works. The same reference sets a 5-second default clock-skew tolerance for the nonce, so keep server clocks in sync.

Hello world, in order

Ownera's sandbox comes with a simulated custody service, a simulated payment service and at least one test asset shared with you. The Hello World sample walks through it with full request and response bodies:

#CallWhat it does
1POST /finapi/profiles/ownerCreate an investor (owner) profile
2POST /finapi/profiles/owner/{id}/accountLink the investor to a custody service; async, poll GET /finapi/operations/status/{cid}
3POST /finapi/profiles/{id}/certificatesAttach KYC, AML or accreditation certificates
4POST /finapi/profiles/{id}/shareShare the investor profile with the issuer's organisation
5POST /graphqlFind assets shared with you and their open intents
6POST /finapi/tokens/executeExecute against an intent, for example buy into a primary sale
7POST /graphqlWatch the execution plan until it completes

There is also a dry-run endpoint that predicts the plan for an intent without executing it. Use it while you build.

Adapters: plugging in a ledger, custody or data

If other apps will consume what you build, you implement one of these APIs and the Router calls you. The official skeletons are the fastest start.

AdapterYou implementSpecStarter code
Ledger adapter
tokenization platforms, chains, legacy registers
Create asset, issue, transfer, redeem, move, hold, release, rollback, balances, receipts, investor accounts, execution-plan approvalLedger Adapter ↗Node.js skeleton
Java skeleton
EVM adapter
Custody adapter
key management and signing
Create accounts (key pairs), signature requests over payload hashes, plan approvalCustody Adapter ↗
Signature schemes ↗
Data provider adapter
pricing, risk, reference and market data
Fetch or subscribe asset data; the Router maps identifiers (an ISIN, say) to providers with data rules and ingests what you returnData Provider Adapter ↗
Ingest asset data ↗
LunarCrush data adapter (ours, see disclosure)
Proxy variants
event-driven, no inbound REST
Pull commands over a Server-Sent Events stream, acknowledge them, post the result back with the command's cidProxy Ledger ↗
Proxy Custody ↗

Chains already reached by adapters, per public sources: Ethereum and all EVM L1/L2, Hyperledger Besu, Canton, Corda, Hedera, XRP Ledger, Tezos, Stellar, Kadena, Solana, Polygon, 150+ chains via LayerZero. Full list with sources on the network page.

Getting listed on the SuperApps store

Ownera publishes the process at superapps.ownera.io/onboarding-howto. In short:

  1. Sign up to the SuperApp Portal.
  2. Create your company profile: legal entity, registration, jurisdiction.
  3. Submit a draft SuperApp: name, description, use case, asset classes, optional demo.
  4. Review and agreements: Ownera due diligence (KYC), then NDA, Platform Terms, Partnership and Commercial agreements. You are listed in development status.
  5. Connect to the sandbox Router and validate connectivity.
  6. Go to production once testing and agreements are done.

Ownera publishes no fees for listing. Once you are listed, tell us and you will show up on this site's map with the next data refresh.

Open code and public endpoints

WhatWhereAuth
Official docs, guides and API referencefinp2p-docs.ownera.ionone
Docs index for LLMsfinp2p-docs.ownera.io/llms.txtnone
Docs MCP server (search and read the OpenAPI specs from an agent)https://finp2p-docs.ownera.io/mcpnone to read
SuperApps store API: apps, participant types, categories/api/apps · /api/types · /api/categoriesnone
Ownera on GitHub: adapters, certificate schemas, samplesgithub.com/owneraiopublic
This site's dataset (apps, derived connections, institutions, sources)/data/graph.json · /data/index.jsonnone, CC BY 4.0
A Router (sandbox or production)URL issued by Ownera or your institutionRS256 JWT per call

Recent changes in Ownera's open code (checked 6 Nov 2026): the EVM adapter v0.29.0 shipped on 12 Oct; the Node.js skeleton now maps swap and move execution-plan instructions and keeps the Router's EIP-712 type definitions on signing templates (20 to 22 Oct); the certificates spec added collateral-terms v3, with the haircut method set on the agreement (18 to 20 Oct); and the Tezos adapter was archived on 1 Nov.

Shipped something, or found a mistake here?

If you built on FinP2P, tell us: we will add it to the map, and if you are a founder, Draper Goren Blockchain may want to back it. If this guide has drifted from the official docs, email alon@dgb.vc and we will fix it the same week.