Protocol Documentation
Build an OBP-compatible server and publish it to the Project F marketplace.
Overview
The Project F Open Banking Protocol (OBP) is a lightweight HTTP API standard that lets any developer expose bank transaction data to Project F users. Servers that implement the spec can be submitted to this marketplace and, once approved, will appear as selectable connections in the Project F mobile app.
Required endpoints
Your server must expose two endpoints over HTTPS:
/healthHealth check. Must return 200 with a JSON body.
Response
{
"ok": true,
"name": "My Bank Server"
}/movesTransaction list. Accepts optional month and year query params.
GET /moves?month=5&year=2026
Response
[
{
"id": "abc123",
"date": "2026-05-10",
"description": "Supermarket",
"amount": -5000,
"currency": "UYU"
}
]Authentication
Project F sends an x-api-key header with every request. If your server requires auth, validate this header and return 401 on failure.
// Validate in your request handler
const key = req.headers['x-api-key'];
if (key !== process.env.API_KEY) {
res.writeHead(401);
res.end(JSON.stringify({ error: 'Invalid API key' }));
return;
}Set auth_type to none in your marketplace submission if your server is publicly accessible.
Amount format
Amounts are integers in the smallest currency unit (e.g. cents for USD, centésimos for UYU). Outflows (expenses) are negative; inflows are positive.
// -5000 UYU = outflow of 50.00 UYU // +150000 UYU = inflow of 1,500.00 UYU
Submission process
- Register or sign in to get a marketplace account.
- Go to Dashboard → Submit server and fill in the form.
- We will make a live request to your
/healthendpoint to verify it responds correctly. - Once approved, your server is published and users can connect to it in the app.
Review criteria
- URL must use HTTPS
GET /healthmust return 200 within 5 secondsGET /movesmust return a valid JSON array- Amounts must be integers (cents)
- Server must not require browser-based OAuth flows
Reference implementation
A minimal Node.js reference server is available in the Project F monorepo at mock-bank/server.ts. It serves fixture JSON files for any month/year combination and supports optional API key auth.
# Run locally cd mock-bank npm run dev # Test curl http://localhost:3003/health curl "http://localhost:3003/moves?month=5&year=2026"