Skip to content

No results for

navigate open Esc close

Pro Component — This component requires an Aura UI Pro license.

Overview

Four Filament fields for the data a European invoice needs, each one checked by arithmetic rather than by a regular expression that counts digits.

  • AuraVatInput — a partita IVA (check digit over the first ten) or an Italian codice fiscale (check letter over the first fifteen).
  • AuraIbanInput — the ISO 13616 checksum, grouped in fours as a bank prints it.
  • AuraCurrencyInput — shows 1.234,50, stores 1234.50.

Each one checks twice: in the browser while typing, so the mistake is caught before the form is submitted, and again as a validation rule on save — because the browser is a place where checks can be turned off and the server is not.

Try them on the live demo.

VAT number

use BlueStarSystem\AuraFilament\Forms\Components\AuraVatInput;

AuraVatInput::make('vat_number')
    ->label('VAT number'),

// The Italian fiscal code uses a different algorithm entirely:
AuraVatInput::make('fiscal_code')
    ->label('Fiscal code')
    ->fiscalCode(),

// Judge the number against another country when it carries no prefix:
AuraVatInput::make('vat_number')->country('DE'),
Method Does
fiscalCode() Switches to the sixteen-character codice fiscale and its check letter.
country(string) Which country's rules apply when the number has no prefix. Defaults to IT.

The Italian check digit is verified in full. For the other 26 countries the shape is checked — length and character classes, which is all that can be done without a network call.

IBAN

use BlueStarSystem\AuraFilament\Forms\Components\AuraIbanInput;

AuraIbanInput::make('iban')
    ->label('IBAN')
    ->countries(['IT', 'DE', 'FR']),   // optional: only these are accepted

Displayed grouped in fours, stored plain. A payment file with spaces in it is rejected by the bank, and a 27-character string read back without the grouping is where the typos come from.

Currency

use BlueStarSystem\AuraFilament\Forms\Components\AuraCurrencyInput;

AuraCurrencyInput::make('amount')
    ->currency('EUR')
    ->locale('it_IT'),   // defaults to the application's locale

The separators come from the locale; what reaches the model is always a dot decimal with no grouping. A field that saves its own formatting hands PHP 1.234,56, which casts to 1.234 — a thousand euro off the invoice, silently.

Accessibility

  • The verdict under each field is a role="status" live region: it appears without the field being left, so nothing else would announce it.
  • It is said in words as well as in colour, and the wording is honest about the limit — a valid check digit is not proof that the business exists.
  • The fields use Filament's own input wrapper, so the border, the focus ring and the disabled state follow the panel's theme instead of drifting from it.

What none of them can tell you

Whether the company is registered, the account is open, or the person exists. Those are VIES and bank lookups — network calls, and the wrong thing to do on every keystroke. Check them when you need to know, at invoice time.