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:

GET/health

Health check. Must return 200 with a JSON body.

Response

{
  "ok": true,
  "name": "My Bank Server"
}
GET/moves

Transaction 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

  1. Register or sign in to get a marketplace account.
  2. Go to Dashboard → Submit server and fill in the form.
  3. We will make a live request to your /health endpoint to verify it responds correctly.
  4. Once approved, your server is published and users can connect to it in the app.

Review criteria

  • URL must use HTTPS
  • GET /health must return 200 within 5 seconds
  • GET /moves must 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"