PHPackages                             craigpotter/fca-php-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. craigpotter/fca-php-sdk

ActiveLibrary[API Development](/categories/api)

craigpotter/fca-php-sdk
=======================

An unofficial PHP SDK consuming the FCA API

v3.0.0(4mo ago)277.4k↑166.4%1MITPHPPHP ^8.2CI passing

Since Jun 14Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/craigpotter/fca-php-sdk)[ Packagist](https://packagist.org/packages/craigpotter/fca-php-sdk)[ Docs](https://github.com/craigpotter)[ RSS](/packages/craigpotter-fca-php-sdk/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (8)Dependencies (12)Versions (12)Used By (0)

FCA API SDK for PHP
===================

[](#fca-api-sdk-for-php)

[![Latest Version on Packagist](https://camo.githubusercontent.com/bee7bbcc217c59b227e6cff6cf8d374b7d4aad9e57172bd0f3249e3141155cf8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6372616967706f747465722f6663612d7068702d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/craigpotter/fca-php-sdk)[![Tests](https://camo.githubusercontent.com/69a75557904fd141bc6f6e23bab2c3a21af130d358397d6eaf7f909c76765045/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6372616967706f747465722f6663612d7068702d73646b2f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/craigpotter/fca-php-sdk/actions/workflows/tests.yml)[![Total Downloads](https://camo.githubusercontent.com/c3a5a41d2083008d8300dbc1c3aa26eb3f812a69a41aaa762a2bcc5a2341239a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6372616967706f747465722f6663612d7068702d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/craigpotter/fca-php-sdk)

This is an unofficial PHP SDK for [FCA's API](https://register.fca.org.uk/Developer/s/) and is powered by [Saloon](https://github.com/Sammyjo20/Saloon).

> **Note:** This SDK is still in development and is not yet ready for production use. Use at your own risk.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require craigpotter/fca-php-sdk
```

Requirements
------------

[](#requirements)

You will need to have a valid API key from FCA to use this SDK.

You can obtain one by [registering as a developer](https://register.fca.org.uk/Developer/s/).

Example Usage
-------------

[](#example-usage)

```
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
$fca = new Fca('my.email@dev.test', 'my-api-key');

// 12345 is the FCA firm reference number

$firmFrnExists = $fca->firm(12345)->exists(); // Returns a boolean

$response = $fca->firm(12345)->get();

$firm = $response->dto(); // Returns a Firm DTO
$json = $response->json(); // Returns the raw JSON response
```

Documentation
-------------

[](#documentation)

> **Warning:** This documentation is still a work in progress.

Some responses have the option of a DTO (Data Transfer Object) which can be used to access the response data.

This does not work for all responses, but is documented where it is available.
For all other responses, you can access the raw JSON response using `$response->json()`.

### Firms

[](#firms)

#### Check an FRN exists

[](#check-an-frn-exists)

```
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
$fca = new Fca('my.email@dev.test', 'my-api-key');

// 12345 is the FCA firm reference number

$firmFrnExists = $fca->firm(12345)->exists(); // Returns a boolean
```

#### Get a firm by FRN

[](#get-a-firm-by-frn)

```
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
$fca = new Fca('my.email@dev.test', 'my-api-key');

// 12345 is the FCA firm reference number

$response = $fca->firm(12345)->get(); // Returns a Saloon response object

$firm = $response->dto(); // Returns a Firm DTO
$firm->frn; // 12345
$firm->name; // "My Firm"
$firm->status; // "Active"
$firm->statusDate; // "2021-01-01"
$firm->statusReason; // "Active"
$firm->companiesHouseNumber; // "12345678"

$json = $response->json(); // Returns the raw JSON response
```

#### Get the individuals associated with a firm by FRN

[](#get-the-individuals-associated-with-a-firm-by-frn)

This endpoint is paginated and will return a maximum of 20 results per page.
You should loop through the pages to get all results.

```
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
$fca = new Fca('my.email@dev.test', 'my-api-key');

// 12345 is the FCA firm reference number

$paginatedData = $fca->firm(12345)->individuals(); // Returns a Saloon response object

$paginatedData->totalPages(); // Returns the total number of pages
$paginatedData->totalResults(); // Returns the total number of results
foreach ($paginatedData as $page) {
    $paginatedData->getCurrentPage(); // Returns the current page number
    $individuals = $page->dto(); // Returns an array of Individual DTOs for this page
    $json = $page->json(); // Returns the raw JSON response for this page

    foreach ($individuals as $individual) {
        $individual->irn; // "JOHNSMITH12345"
        $individual->name; // "John Smith"
        $individual->status; // "Approved by regulator"
    }
}
```

#### Get the addresses associated with a firm by FRN

[](#get-the-addresses-associated-with-a-firm-by-frn)

This endpoint is paginated and will return a maximum of 20 results per page.
You should loop through the pages to get all results.

```
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
use CraigPotter\Fca\Fca;

// Create a new FCA instance (This is required for all requests)
$fca = new Fca('my.email@dev.test', 'my-api-key');

// 12345 is the FCA firm reference number

$paginatedData = $fa->firm(12345)->addresses(); // Returns a Saloon response object

$paginatedData->totalPages(); // Returns the total number of pages
$paginatedData->totalResults(); // Returns the total number of results
foreach ($paginatedData as $page) {
    $paginatedData->getCurrentPage(); // Returns the current page number
    $addresses = $page->dto(); // Returns an array of Address DTOs for this page
    $json = $page->json(); // Returns the raw JSON response for this page

    foreach ($addresses as $address) {
        $address->website; // "www.example.org"
        $address->phoneNumber; // "44123456778"
        $address->type; // "Principal Place of Business"
        $address->contactName; // "John Smith"
        $address->addressLine1; // "1 Example Street"
        $address->addressLine2; // "Aberdeen"
        $address->addressLine3; // "Aberdeen"
        $address->addressLine4; // "Aberdeen"
        $address->town; // "Aberdeen"
        $address->county; // "Aberdeenshire"
        $address->country; // "United Kingdom"
        $address->postcode; // "AB1 2CD"
    }
}
```

Testing
-------

[](#testing)

Copy `.env.example` to `.env` and update accordingly.

```
vendor/bin/pest
```

Credits
-------

[](#credits)

- [Craig Potter](https://github.com/craigpotter)
- [All Contributors](../../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](../LICENSE.md) for more information.

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance74

Regular maintenance activity

Popularity35

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~127 days

Recently: every ~222 days

Total

9

Last Release

144d ago

Major Versions

v0.2.0 → v1.0.02023-10-21

v1.0.1 → v2.0.02023-10-21

v2.x-dev → v3.0.02026-03-26

PHP version history (2 changes)v0.1PHP ^8.1

v3.0.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/1a56cd4733b15c1e79ac26bc1658eb59a35a102250f9f48b929811c29f86bc60?d=identicon)[craigpotter](/maintainers/craigpotter)

---

Top Contributors

[![craigpotter](https://avatars.githubusercontent.com/u/1442635?v=4)](https://github.com/craigpotter "craigpotter (25 commits)")

---

Tags

fcahacktoberfestphpsaloonphp

###  Code Quality

TestsPest

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/craigpotter-fca-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/craigpotter-fca-php-sdk/health.svg)](https://phpackages.com/packages/craigpotter-fca-php-sdk)
```

###  Alternatives

[sandorian/moneybird-api-php

Moneybird API client for PHP

148.6k](/packages/sandorian-moneybird-api-php)[myoutdeskllc/salesforce-php

salesforce library for php8+

1586.3k](/packages/myoutdeskllc-salesforce-php)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1125.1k](/packages/codebar-ag-laravel-docuware)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
