# AX Check: modulrfinance.com
Checked 2026-11-05.

Pricing is clear and public; the homepage itself is thin
Bronze £30, Silver £110, and Platinum £500 per month are stated openly with fees and limits. The homepage lacks a docs index, so agents must find the docs site on their own.

## Onboarding needs a login

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) found the live pricing page and reported the same Bronze/Silver/Platinum monthly tiers with included payments, overage fees, and FX/international charges, noting Platinum-only API access and a free sandbox.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/8764d15a-b723-46af-898d-86f344f1b9da) · [Read transcript](https://www.ax-check.com/modulrfinance.com/sessions/deepseek.json)
Gave Bronze/Silver/Platinum GBP list prices with included payments and overage, plus CHAPS/FX/international fees; noted list-price basis, unconfirmed VAT, and custom enterprise pricing. (seq 32, seq 70, seq 135, seq 160)
#### End-to-end onboarding
- **Onboarding needs a login**: Agent researched Modulr's docs thoroughly and built a working HMAC-signing client, verifying the signing math against Modulr's own published worked example offline. It never obtained real sandbox API credentials: Modulr requires submitting a web form and waiting for Modulr to provision an API key, admin user, and GBP sandbox account, which cannot be done unattended in this session. No authenticated call to the live Modulr API was ever made.
  Event 52:

  ```text
  To test out our API or Customer Portal you will need to register for access to our sandbox environment. To do so, complete the form [here](https://share.hsforms.com/1VPuWUUZPSSW4Npn-0BKqew1co3o).
  ```
  Event 151:

  ```text
  PASS  signature     WBMr%2FYdhysbmiIEkdTrf2hP7SfA%3D
  PASS  auth header   matches the documented value
  PASS  HMAC signing is compatible with Modulr's spec
  ```
  Event 160:

  ```text
  I could not make live API calls: there are no Modulr sandbox credentials in this environment and the sandbox is granted via a form.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-service sandbox credentials available**: Modulr sandbox access requires submitting a HubSpot form and waiting for Modulr to manually provision an API key, admin credentials, and a funded GBP account. This is a product/process limitation, not an agent error: there is no API-based signup. As a result the agent could only validate its HMAC implementation offline against Modulr's documented test vector and never executed a real authenticated API call (e.g. list accounts, create a payment).
  Event 52:

  ```text
  To test out our API or Customer Portal you will need to register for access to our sandbox environment. To do so, complete the form [here](https://share.hsforms.com/1VPuWUUZPSSW4Npn-0BKqew1co3o).
  ```
  Event 160:

  ```text
  I could not make live API calls: there are no Modulr sandbox credentials in this environment and the sandbox is granted via a form.
  ```
- **No general-purpose server-side SDK exists**: Searches of PyPI, npm, and Modulr's GitHub org turned up no official server-side SDK for building API integrations -- only a frontend verification SDK and a sample HMAC-signing helper repo. This is a genuine product gap (not agent error or test-environment limitation): a first-time developer must hand-roll or generate a REST client from OpenAPI definitions rather than installing a maintained SDK.
  Event 63:

  ```text
  @modulrfinance/customer-verification-sdk | Modulr customer verification browser SDK
  ```
  Event 80:

  ```text
  main | A utility to calculate Hmac headers to connect to Modulr API | GPL-3.0
  ```

#### Suggested Changes
- **Add a direct link to the OpenAPI/server SDK status on the 'Getting Sandbox Access' page**: On https://modulr.readme.io/docs/gaining-use-of-the-api, note plainly that there is no official server-side SDK (only a sample HMAC helper repo and a frontend verification SDK) so developers do not spend time searching npm/PyPI/GitHub for one that doesn't exist. Verify by searching npm/PyPI for 'modulr' after the change and confirming the docs page already sets the right expectation.
  Event 63:

  ```text
  modulrui-lib | Modulr UI React Component Library
  ```
  Event 71:

  ```text
  name: modulr
  version: 0.0.2
  summary: Save currently defined classes and functions to modules
  ```
- **Fix broken 'Platform Pricing' and 'pricing-for-corporate' links from the main Pricing page**: The Pricing navigation on modulrfinance.com links to /platform-pricing and /pricing-for-corporate, both of which 404. Point these nav links to the correct live URL (the content exists under a different path, e.g. the Corporate & Enterprise plan is referenced from the pricing page itself). Verify by clicking 'Platform Pricing' in the Pricing menu and confirming it lands on a 200 page instead of the 'page doesn't exist' message.
  Event 81:

  ```text
  == https://www.modulrfinance.com/platform-pricing
  http=404 final=https://www.modulrfinance.com/platform-pricing
  ```
  Event 81:

  ```text
  We're sorry, but the page you're looking for doesn't exist It appears that the page you have attempted to access is unavailable.
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/0712a841-fa3b-4a83-971f-8ba4ca06f1c2) · [Read transcript](https://www.ax-check.com/modulrfinance.com/sessions/kimi.json)
Quoted plan tiers from the live pricing page (£30, £110, £500 a month) with included payments and extra-payment fees. Noted GBP/EUR, API access only on Platinum, and a free sandbox. (seq 45, seq 71)
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained real Modulr credentials. It confirmed the sandbox API host exists but every unauthenticated call returned 403 Forbidden, and it explicitly stated that generating sandbox API keys requires a human to register on the developer portal with email verification — a step it could not perform itself. No authenticated operation against the hosted API was ever attempted or demonstrated; the only 'test' run was a local Node script using placeholder strings 'test-key'/'test-secret', not real credentials.
  Event 71:

  ```text
  I can't execute a live authenticated call: there are no Modulr credentials in this environment, and obtaining sandbox keys requires a human to register on the developer portal (account + email verification — not an API-callable step).
  ```
  Event 26:

  ```text
  {"message":"Forbidden"}
  HTTP:403
  
  ```
  Event 69:

  ```text
  OK auth header: Signature keyId="test-key",algorithm="hmac-sha1",headers="da..."
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Sandbox credentials require manual portal signup**: The agent could not acquire Modulr sandbox API keys because registration on the developer portal requires a human to create an account and verify email; this is a normal authentication gate, not a product defect, but it stopped the agent from running any authenticated call against the real API.
  Event 71:

  ```text
  obtaining sandbox keys requires a human to register on the developer portal (account + email verification — not an API-callable step)
  ```
- **Developer portal domain unreachable from sandbox**: The agent's environment could not resolve developer.modulrfinance.com via DNS, which prevented it from verifying the current HMAC signing scheme against live documentation. This is a test-environment network restriction (DNS/network egress), not necessarily a broken product link.
  Event 32:

  ```text
  * Could not resolve host: developer.modulrfinance.com
  * Closing connection
  
  ```
  Event 71:

  ```text
  developer.modulrfinance.com doesn't resolve from this sandbox, so I couldn't re-verify the signing details against live docs
  ```
- **No official server-side SDK found**: An npm registry search turned up only a browser-based customer-verification SDK for Modulr, not a server-side Node SDK, forcing the agent to hand-roll a raw HMAC-signed REST client instead of using an official package.
  Event 49:

  ```text
  @modulrfinance/customer-verification-sdk - Modulr customer verification browser SDK
  ```
  Event 51:

  ```text
  No official server-side Node SDK exists (only a browser KYC SDK), so the standard workflow is HMAC-signed REST calls.
  ```

#### Suggested Changes
- **Add a visible note that API access requires Platinum tier**: On the pricing page (modulrfinance.com/pricing), the comparison table lists 'API access' only under the Platinum plan feature list, which the agent flagged as a surprise worth knowing before committing to a lower tier. Call this out near the top of the pricing page or in developer docs so evaluators don't have to dig through the full feature comparison to learn API access is tier-gated.
  Event 45:

  ```text
  Platinum £ 500 .00 per month 3,000 Payments included +£0.32 per extra payment Bonus 800 transactions!* Products Accounts Payable Automation Spend Management Payroll Payments Everything in Silver, plus: Create and match Purchase Orders to Invoices API access --> Buy now
  ```
- **Publish a server-side SDK or link one from npm search results**: Searching npm for 'modulr' surfaces only an unrelated bundler package and a browser-only KYC SDK, with no official server-side client. Publish a Node/server SDK under the @modulrfinance npm scope (as already done for the browser SDK) so developers don't have to hand-roll HMAC signing from scratch.
  Event 49:

  ```text
  modulr - Resolves and concatenates CommonJS module dependencies for use in the browser.\n@modulrfinance/customer-verification-sdk - Modulr customer verification browser SDK
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/093c702e-a333-4a64-bbbd-2bf96cddcd4f) · [Read transcript](https://www.ax-check.com/modulrfinance.com/sessions/qwen.json)
Quoted GBP monthly tiers with included payment counts and overage fees, plus FX/CHAPS/international fees, Platinum-only API access, a free sandbox, and sales-quoted enterprise pricing, all from the scraped pricing page (seq 60, seq 155, seq 147, examples/modulr/README.md)
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained real Modulr sandbox credentials. It searched env vars (none present), tried unauthenticated sandbox API calls which returned 403, found that Modulr requires submitting a request form to a human team to get an API key and HMAC secret, and ultimately built the example with --dry-run and offline unit tests only. No authenticated operation against the live Modulr sandbox (e.g., GET /accounts, POST /credit, POST /payments) was ever executed.
  Event 11:

  ```text
  PI_GATEWAY_API_KEY=unused
  ```
  Event 100:

  ```text
  GET /accounts (no creds, token base url): 403\n{"message":"User is not authorized to access this resource with an explicit deny in an identity-based policy"}
  ```
  Event 54:

  ```text
  To test out our API or Customer Portal you will need to register for access to our sandbox environment. To do so, complete the form [here](https://share.hsforms.com/1VPuWUUZPSSW4Npn-0BKqew1co3o).
  ```
  Event 143:

  ```text
  BLOCKED: No MODULR_API_KEY set. Request sandbox credentials via https://modulr.readme.io/docs/gaining-use-of-the-api (a form is submitted to Modulr, who then issue an API key + HMAC secret).
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-serve path to sandbox API credentials**: Modulr's sandbox API key and HMAC secret are issued only after a human submits a request form; there is no programmatic signup. This is product behavior (deliberate gated onboarding), not an agent error or test-environment artifact. It fully blocked any live/authenticated API call in this session.
  Event 54:

  ```text
  To test out our API or Customer Portal you will need to register for access to our sandbox environment. To do so, complete the form [here](https://share.hsforms.com/1VPuWUUZPSSW4Npn-0BKqew1co3o).
  ```
  Event 100:

  ```text
  GET /accounts (no creds, token base url): 403\n{"message":"User is not authorized to access this resource with an explicit deny in an identity-based policy"}
  ```
- **Primary marketing domain (modulr.finance) unreachable from sandbox**: Requests to modulr.finance and its docs/developer subdomains returned 502 Bad Gateway or DNS failures. This looks like a test-environment network/DNS issue (the working modulrfinance.com domain resolved fine), not a product defect; the agent correctly treated it as a non-blocking routing quirk and switched domains.
  Event 26:

  ```text
  === https://www.modulr.finance/
  HTTP 502 final=https://www.modulr.finance/
   502 Bad Gateway 502 Bad Gateway [Errno 111] Connect call failed ('217.70.184.50', 443) 
  ```
  Event 32:

  ```text
  api.modulr.finance: 000
  www.modulr.finance: 502
  ```

#### Suggested Changes
- **Add a GET /payments/{id} endpoint for direct payment-status lookup**: The API reference only exposes payment status via GET /payments?id=... filtering, with no path-based GET /payments/{paymentId}. Confirm by checking the MCP get-endpoint tool for path '/payments/{paymentId}' (the agent's query returned no match) versus the documented filter-based lookup in the OpenAPI schema returned by get-endpoint for '/payments'.
  Event 115:

  ```text
  == GET /payments/{paymentId} ERR Expecting value: line 1 column 1 (char 0)
  ```
  Event 127:

  ```text
  id | required: False | Payment ID. If specified then all other parameters are ignor
  ```
- **Clarify API-access tier restriction earlier in developer docs**: Pricing pages show API access is gated to the Platinum tier ('additional fee'/'Contact us'), which is easy for a developer to miss since the Getting Started and Sandbox Access docs make no mention of this restriction. Add a note on the Getting Started or Gaining Use of the API page clarifying which commercial tier is required for production API access, verified by checking that modulr.readme.io/docs/getting-started and gaining-use-of-the-api pages mention tier eligibility.
  Event 60:

  ```text
  Everything in Silver, plus: Create and match Purchase Orders to Invoices API access --> Buy now
  ```

### Task given to each agent
Help me build a simple example using Modulr. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: B · 65/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html even when Markdown was requested; no Markdown representation offered.
  ```

- **Failed** — llms.txt provides an actionable documentation index

  ```text
  /llms.txt returns HTTP 404, so no documentation index is published at the standard path.
  ```

- **Skipped** — llms.txt provides navigation guidance

  ```text
  No llms.txt body exists (404), so navigation guidance cannot be evaluated.
  ```

- **Skipped** — llms.txt mentions offered API, MCP, and skills

  ```text
  No llms.txt body exists (404), so API/MCP/skills mentions cannot be evaluated.
  ```

- **Pass** — A compact guide representation exists

  ```text
  Modulr docs publish Markdown pages; .md URLs return text/markdown, e.g. getting-started and MCP guide.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  Getting-started and Direct Debit guides are directly retrievable as standalone .md pages.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  Compact .md guides are small: getting-started 115 tokens, DD collections 413 tokens, well under budget.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown unsupported, so link preservation across format changes cannot be measured.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  Getting Started and Direct Debit pages give concrete sandbox onboarding steps and next links.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Fetched install/next-step links (getting-started, MCP, DD collections) returned 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  Docs sidebar links Getting Started and Sandbox Access; getting-started page directs to Access Types and Sandbox setup.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  No install commands; Modulr is a REST API with sandbox onboarding, not an installable package.
  ```

- **Skipped** — Code examples are available without interaction

  ```text
  Fetched pages show no code examples; API reference not fetched in this sample.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Docs list Sandbox Access, API Base URLs and Authentication Methods, and Access Types prerequisites.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing pages render plan names, monthly fees and per-payment rates as static text without interaction.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Bronze £30, Silver £110, Platinum £500 per month stated publicly; no gating.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Plans list included payment counts, per-extra-payment rates, FX 0.5-1.2% and £3 international fees.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Gave Bronze/Silver/Platinum GBP list prices with included payments and overage, plus CHAPS/FX/international fees; noted list-price basis, unconfirmed VAT, and custom enterprise pricing. (seq 32, seq 70, seq 135, seq 160) Kimi K3: Quoted plan tiers from the live pricing page (£30, £110, £500 a month) with included payments and extra-payment fees. Noted GBP/EUR, API access only on Platinum, and a free sandbox. (seq 45, seq 71) Qwen 3.8 Max: Quoted GBP monthly tiers with included payment counts and overage fees, plus FX/CHAPS/international fees, Platinum-only API access, a free sandbox, and sales-quoted enterprise pricing, all from the scraped pricing page (seq 60, seq 155, seq 147, examples/modulr/README.md) This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  Modulr API reference index lists full endpoint catalogue at modulr.readme.io/reference.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  MCP documented at https://modulr.readme.io/mcp with per-tool setup and verification steps.
  ```

- **Skipped** — A CLI install path is documented

  ```text
  No CLI install path documented; only MCP client setup commands shown.
  ```

- **Skipped** — SDK packages resolve on their registries

  ```text
  No SDK package registry lookup supplied; Customer Verification SDK mentioned but unverified.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills published or referenced in fetched Modulr documentation.
  ```



[Full report data](https://www.ax-check.com/modulrfinance.com/report.json)
