PHPackages                             ecolabor/laravel-swiss-uid-search - 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. [Search &amp; Filtering](/categories/search)
4. /
5. ecolabor/laravel-swiss-uid-search

ActiveLibrary[Search &amp; Filtering](/categories/search)

ecolabor/laravel-swiss-uid-search
=================================

Laravel package for integrating the Swiss UID (Unternehmens-Identifikationsnummer) webservice from the Federal Statistical Office (BFS)

1.0.0(4w ago)0154↓85.7%[1 PRs](https://github.com/ecolabor/laravel-swiss-uid-search/pulls)1MITPHPPHP ^8.2CI passing

Since Jan 3Pushed 4w agoCompare

[ Source](https://github.com/ecolabor/laravel-swiss-uid-search)[ Packagist](https://packagist.org/packages/ecolabor/laravel-swiss-uid-search)[ Docs](https://github.com/ecolabor/laravel-swiss-uid-search)[ RSS](/packages/ecolabor-laravel-swiss-uid-search/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (14)Versions (5)Used By (1)

Laravel Swiss UID Search
========================

[](#laravel-swiss-uid-search)

[![Tests](https://camo.githubusercontent.com/1549cc5481b4f312db6b3ab53e0c03a2bc61f325451b8067068075ba7a80723e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f65636f6c61626f722f6c61726176656c2d73776973732d7569642d7365617263682f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/ecolabor/laravel-swiss-uid-search/actions/workflows/tests.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/db0bc475ef224836088960ab3397fe27d00bdf503d6c70032527f7cc24e34504/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f65636f6c61626f722f6c61726176656c2d73776973732d7569642d7365617263682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ecolabor/laravel-swiss-uid-search)[![Total Downloads](https://camo.githubusercontent.com/6c9f0e597358e891f6aecb3461dd4236d7859ab08ecbe4d904ae29e2197d226a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f65636f6c61626f722f6c61726176656c2d73776973732d7569642d7365617263682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ecolabor/laravel-swiss-uid-search)[![PHP Version](https://camo.githubusercontent.com/e8e871d682294a3e585d75843fd3fecd50dd07040b212596db3d9852bc4e6dfa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f65636f6c61626f722f6c61726176656c2d73776973732d7569642d7365617263682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ecolabor/laravel-swiss-uid-search)[![License](https://camo.githubusercontent.com/6c71f5fa245839c56926b1c79462113905589803175d276353166b3dc2d5325a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f65636f6c61626f722f6c61726176656c2d73776973732d7569642d7365617263682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ecolabor/laravel-swiss-uid-search)

Ein Laravel-Package zur Integration des Schweizer UID-Webservices (Unternehmens-Identifikationsnummer) vom Bundesamt für Statistik (BFS).

**Basiert auf der offiziellen API Version 5.0**

📄 [Offizielle Dokumentation (PDF)](https://dam-api.bfs.admin.ch/hub/api/dam/assets/24605175/master)

Features
--------

[](#features)

- 🔍 Unternehmen per UID-Nummer abrufen (`GetByUID`)
- 🔎 Unternehmen nach Name, Ort, Kanton suchen (`Search`)
- ✅ UID-Nummern validieren (`ValidateUID`)
- 💰 MWST-Nummern validieren (`ValidateVatNumber`)
- 📦 Automatisches Caching für bessere Performance
- 🏷️ Laravel Validation Rule
- 💡 Einfache Facade für schnellen Zugriff

Webservice Endpoints
--------------------

[](#webservice-endpoints)

UmgebungPublic Services**Produktion**`https://www.uid-wse.admin.ch/V5.0/PublicServices.svc`**Test**`https://www.uid-wse-a.admin.ch/V5.0/PublicServices.svc`Installation
------------

[](#installation)

```
composer require ecolabor/laravel-swiss-uid-search
```

Konfiguration
-------------

[](#konfiguration)

Veröffentlichen Sie die Konfigurationsdatei:

```
php artisan vendor:publish --tag=swiss-uid-config
```

### Umgebungsvariablen

[](#umgebungsvariablen)

```
# Umgebung: production oder test
SWISS_UID_ENVIRONMENT=production

# Sprache: 1=DE, 2=FR, 3=IT, 4=EN
SWISS_UID_LANGUAGE=1

# Cache-Einstellungen
SWISS_UID_CACHE_ENABLED=true
SWISS_UID_CACHE_TTL=3600

# Such-Einstellungen
SWISS_UID_MAX_RESULTS=100
SWISS_UID_SEARCH_MODE=auto

# Partner Services (optional, für erweiterte Funktionen)
SWISS_UID_PARTNER_USERNAME=your_username_sa
SWISS_UID_PARTNER_PASSWORD=your_password
```

Verwendung
----------

[](#verwendung)

### Unternehmen per UID abrufen

[](#unternehmen-per-uid-abrufen)

```
use Ecolabor\SwissUid\Facades\SwissUid;

// Mit formatierter UID
$company = SwissUid::getByUid('CHE-123.456.789');

// Oder nur mit Ziffern
$company = SwissUid::getByUid('123456789');

if ($company) {
    echo $company->organisationName;         // Firmenname
    echo $company->uidFormatted;             // CHE-123.456.789
    echo $company->address->getOneLiner();   // Strasse 1, 8000 Zürich
    echo $company->legalFormText;            // Aktiengesellschaft
    echo $company->vatNumberFormatted;       // CHE-123.456.789 MWST
    echo $company->isActive();               // true/false
    echo $company->isVatRegistered();        // true/false
    echo $company->isInCommercialRegister(); // true/false
}
```

### Nach Unternehmen suchen

[](#nach-unternehmen-suchen)

```
use Ecolabor\SwissUid\Facades\SwissUid;

// Nach Name suchen
$result = SwissUid::searchByName('Migros');

// Nach Ort suchen
$result = SwissUid::searchByLocation('Zürich');

// Kombinierte Suche mit allen Parametern
$result = SwissUid::search([
    'organisationName' => 'AG',
    'town' => 'Bern',
    'canton' => 'BE',
    'zipCode' => '3000',
    'legalFormId' => 6,                        // Aktiengesellschaft
    'uidregStatusEnterpriseActive' => true,    // Nur aktive
    'maxNumberOfRecords' => 50,
    'searchMode' => 'auto',                    // auto, exact, wild
]);

foreach ($result->entities as $company) {
    echo "{$company->organisationName} - {$company->uidFormatted}\n";
}

// Ergebnisse filtern
$activeOnly = $result->onlyActive();
$vatRegistered = $result->onlyVatRegistered();
$inHr = $result->onlyInCommercialRegister();

// Für Dropdowns
$options = $result->toSelectOptions();
// ['123456789' => 'Firma AG (CHE-123.456.789)', ...]
```

### UID validieren

[](#uid-validieren)

```
use Ecolabor\SwissUid\Facades\SwissUid;

// Prüfen ob UID gültig ist
if (SwissUid::validateUid('CHE-123.456.789')) {
    echo "UID ist gültig!";
}

// MWST-Nummer validieren
if (SwissUid::validateVatNumber('CHE-123.456.789')) {
    echo "MWST-Nummer ist gültig!";
}
```

### Validation Rule

[](#validation-rule)

```
use Ecolabor\SwissUid\Rules\ValidSwissUid;

// Nur Format validieren (schnell, kein API-Call)
$request->validate([
    'uid' => ['required', ValidSwissUid::format()],
]);

// Format + Existenz im Register prüfen (API-Call)
$request->validate([
    'uid' => ['required', ValidSwissUid::exists()],
]);
```

### UID formatieren

[](#uid-formatieren)

```
use Ecolabor\SwissUid\Facades\SwissUid;

$formatted = SwissUid::formatUid('123456789');
// Ergebnis: CHE-123.456.789

$mwst = SwissUid::formatMwst('123456789');
// Ergebnis: CHE-123.456.789 MWST

$normalized = SwissUid::normalizeUid('CHE-123.456.789');
// Ergebnis: 123456789
```

UidEntity Eigenschaften
-----------------------

[](#uidentity-eigenschaften)

### Basis-Informationen

[](#basis-informationen)

EigenschaftTypBeschreibung`uid`stringNormalisierte UID (nur Ziffern)`uidFormatted`stringFormatierte UID (CHE-XXX.XXX.XXX)`uidCategory`stringKategorie (CHE)`organisationName`?stringFirmenname`organisationAdditionalName`?stringZusätzlicher Name`legalFormId`?intRechtsform-ID`legalFormText`?stringRechtsform-Text### Status-Informationen (UID-Register)

[](#status-informationen-uid-register)

EigenschaftTypBeschreibung`uidregStatusId`?intStatus-ID (1=Aktiv, 2=Gelöscht, etc.)`uidregStatusText`?stringStatus-Text`uidregStatusEnterpriseActive`?boolUnternehmen aktiv?`uidregLiquidationDate`?DateTimeLöschdatum### MWST-Informationen

[](#mwst-informationen)

EigenschaftTypBeschreibung`vatNumber`?stringMWST-Nummer (nur Ziffern)`vatNumberFormatted`?stringFormatiert (CHE-XXX.XXX.XXX MWST)`vatStatus`?stringMWST-Status`vatEntryDate`?DateTimeMWST-Eintragsdatum`vatLiquidationDate`?DateTimeMWST-Löschdatum### Handelsregister-Informationen

[](#handelsregister-informationen)

EigenschaftTypBeschreibung`chId`?stringHR-Nummer (CH-XXX.X.XXX.XXX-X)`commercialRegisterStatus`?stringHR-Status`commercialRegisterEntryDate`?DateTimeHR-Eintragsdatum### Adresse

[](#adresse)

EigenschaftTypBeschreibung`address`?AddressAdressobjekt (eCH-0010)`cantonAbbreviation`?stringKanton (z.B. "ZH")`municipalityId`?stringGemeinde-IDAddress Eigenschaften (eCH-0010)
--------------------------------

[](#address-eigenschaften-ech-0010)

```
$address = $company->address;

$address->street;              // Strasse
$address->houseNumber;         // Hausnummer
$address->swissZipCode;        // PLZ
$address->town;                // Ort
$address->countryIdISO2;       // Land (CH)

// Hilfsmethoden
$address->getStreetLine();     // "Bahnhofstrasse 1"
$address->getCityLine();       // "8000 Zürich"
$address->getFullAddress();    // Mehrzeilige Adresse
$address->getOneLiner();       // "Bahnhofstrasse 1, 8000 Zürich"
$address->isSwiss();           // true/false
```

Rechtsformen (Legal Forms)
--------------------------

[](#rechtsformen-legal-forms)

IDBezeichnung1Einzelunternehmen2Einfache Gesellschaft3Kollektivgesellschaft4Kommanditgesellschaft5Kommanditaktiengesellschaft6Aktiengesellschaft7GmbH8Genossenschaft9Verein10Stiftung11ZweigniederlassungFehlerbehandlung
----------------

[](#fehlerbehandlung)

```
use Ecolabor\SwissUid\Exceptions\UidApiException;

try {
    $company = SwissUid::getByUid('invalid');
} catch (UidApiException $e) {
    // API-Fehler behandeln
    logger()->error('UID API Error: ' . $e->getMessage());
}

// Oder mit Search (gibt UidSearchResult zurück)
$result = SwissUid::search(['name' => 'Test']);

if ($result->hasError()) {
    echo "Fehler: " . $result->errorMessage;
    echo "Code: " . $result->errorCode;
}
```

Testing
-------

[](#testing)

```
composer test
```

Ressourcen
----------

[](#ressourcen)

- [UID-Register Webseite](https://www.uid.admin.ch/)
- [BFS Dokumentation](https://www.bfs.admin.ch/bfs/de/home/register/unternehmensregister/unternehmens-identifikationsnummer.html)
- [API Spezifikation (PDF)](https://dam-api.bfs.admin.ch/hub/api/dam/assets/24605175/master)
- [UID Helpdesk](mailto:uid@bfs.admin.ch)

Lizenz
------

[](#lizenz)

MIT License. Siehe [LICENSE](LICENSE.md) für weitere Informationen.

Credits
-------

[](#credits)

- [ecolabor GmbH](https://github.com/ecolabor)
- Bundesamt für Statistik (BFS)

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance94

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 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 ~153 days

Total

2

Last Release

29d ago

Major Versions

v0.1.0 → 1.0.02026-06-06

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e55c39cf6ca99dcd60fce33605c952043ea170420a912c21569ea422c3b06ec?d=identicon)[manuel-ballmer](/maintainers/manuel-ballmer)

---

Top Contributors

[![manuelballmer](https://avatars.githubusercontent.com/u/5159179?v=4)](https://github.com/manuelballmer "manuelballmer (1 commits)")

---

Tags

searchlaravelUIDenterpriseidentificationcompanyswitzerlandswissbfs

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ecolabor-laravel-swiss-uid-search/health.svg)

```
[![Health](https://phpackages.com/badges/ecolabor-laravel-swiss-uid-search/health.svg)](https://phpackages.com/packages/ecolabor-laravel-swiss-uid-search)
```

###  Alternatives

[spatie/laravel-responsecache

Speed up a Laravel application by caching the entire response

2.8k9.0M69](/packages/spatie-laravel-responsecache)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.9k3](/packages/defstudio-telegraph)[spatie/laravel-health

Monitor the health of a Laravel application

87512.0M167](/packages/spatie-laravel-health)[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

44855.7k](/packages/harris21-laravel-fuse)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

399672.8k](/packages/jeroen-g-explorer)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.0k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

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