@php use App\Enums\VirtualCard\CardholderType; use Illuminate\Support\Str; $isBusiness = $cardholder->card_type instanceof CardholderType && $cardholder->card_type === CardholderType::BUSINESS; $business = $cardholder->business; $statusColor = $cardholder->status?->badgeColor() ?? 'secondary'; $statusPill = $statusColor === 'success' ? 'green' : ($statusColor === 'warning' ? 'amber' : ($statusColor === 'danger' ? 'red' : 'neutral')); $displayName = $isBusiness && $business ? $business->business_name : $cardholder->full_name; $initials = strtoupper(substr((string) $displayName ?: '?', 0, 1)); $idDocUrl = $cardholder->kyc_documents['id_document'] ?? null; $owners = is_array($business?->beneficial_owners) ? $business->beneficial_owners : []; @endphp @extends('frontend.layouts.user.index') @section('title', __('Cardholder Details')) @push('styles') @endpush @section('content')
{{ __('All Cardholders') }} @if($cardholder->status?->isPending()) {{ __('Edit') }} @endif
{{-- 1. Hero card — name + status + at-a-glance pills --}}
@if($isBusiness) @else {{ $initials }} @endif

{{ $displayName ?: __('Unnamed cardholder') }}

@if($isBusiness && $business?->trading_name && $business->trading_name !== $displayName) {{ $business->trading_name }} @endif @if(!$isBusiness && $cardholder->email) {{ $cardholder->email }} @endif @if($isBusiness && $business?->contact_email) {{ $business->contact_email }} @endif
{{ $cardholder->card_type?->label() }} {{ $cardholder->status?->label() }} @if($cardholder->kyc_status) @lang('KYC'): {{ $cardholder->kyc_status?->label() ?? $cardholder->kyc_status }} @endif
{{ __('Phone') }}
{{ trim(($isBusiness ? ($business?->phone_country_code ?? '') : ($cardholder->phone_country_code ?? '')).' '.($isBusiness ? ($business?->contact_phone ?? '—') : ($cardholder->mobile ?? '—'))) }}
{{ __('Country') }}
{{ $isBusiness ? ($business?->country ?? '—') : ($cardholder->country ?? '—') }}
{{ __('Created') }}
{{ optional($cardholder->created_at)->format('d M Y') }}
@if(!$isBusiness) {{-- 2. Identity --}}
{{ __('Identity') }}
{{ __('Legal name, gender and origin.') }}
{{ __('Title') }}
{{ $cardholder->title ?: '—' }}
{{ __('Full Name') }}
{{ $cardholder->full_name ?: '—' }}
{{ __('Gender') }}
{{ $cardholder->gender?->label() ?: '—' }}
{{ __('Date of Birth') }}
{{ optional($cardholder->dob)->format('d M Y') ?: '—' }}
{{ __('Nationality') }}
{{ $cardholder->nationality ?: '—' }}
{{ __('Place of Birth') }}
{{ $cardholder->place_of_birth ?: '—' }}
{{ __('Relation') }}
{{ $cardholder->relation ?: '—' }}
{{-- 3. Contact --}}
{{ __('Contact') }}
{{ __('Where providers reach the cardholder.') }}
{{ __('Email') }}
{{ $cardholder->email ?: '—' }}
{{ __('Mobile') }}
{{ trim(($cardholder->phone_country_code ?? '').' '.($cardholder->mobile ?? '—')) }}
{{-- 4. Billing Address --}}
{{ __('Billing Address') }}
{{ __('Used by every provider for AVS verification.') }}
{{ __('Street') }}
{{ $cardholder->address_line1 ?: '—' }} @if($cardholder->address_line2), {{ $cardholder->address_line2 }}@endif
{{ __('City') }}
{{ $cardholder->city ?: '—' }}
{{ __('State') }}
{{ $cardholder->state ?: '—' }}
{{ __('Postal Code') }}
{{ $cardholder->postal_code ?: '—' }}
{{ __('Country') }}
{{ $cardholder->country ?: '—' }}
{{-- 5. Government ID --}}
{{ __('Government ID') }}
{{ __('Identity verification document for issuance.') }}
{{ __('ID Type') }}
{{ $cardholder->id_type ? Str::headline(str_replace('_', ' ', $cardholder->id_type)) : '—' }}
{{ __('ID Number') }}
{{ $cardholder->id_number ?: '—' }}
{{ __('Issuing Country') }}
{{ $cardholder->id_issue_country ?: '—' }}
{{ __('Issue Date') }}
{{ optional($cardholder->id_issue_date)->format('d M Y') ?: '—' }}
{{ __('Expiry') }}
{{ optional($cardholder->id_expiry)->format('d M Y') ?: '—' }}
@if($idDocUrl)
{{ __('Document') }}
@endif
{{-- 6. Tax & Fiscal --}} @if($cardholder->tax_id || $cardholder->tax_country)
{{ __('Tax & Fiscal') }}
{{ __('SSN / ITIN / PAN / TIN equivalent.') }}
{{ __('Tax ID') }}
{{ $cardholder->tax_id ?: '—' }}
{{ __('Tax Country') }}
{{ $cardholder->tax_country ?: '—' }}
@endif {{-- 7. Employment & Source of Funds --}} @if($cardholder->occupation || $cardholder->employer || $cardholder->annual_income || $cardholder->source_of_funds)
{{ __('Employment & Source of Funds') }}
{{ __('AML disclosure required by some providers.') }}
{{ __('Occupation') }}
{{ $cardholder->occupation ?: '—' }}
{{ __('Employer') }}
{{ $cardholder->employer ?: '—' }}
{{ __('Annual Income') }}
{{ $cardholder->annual_income ? '$'.number_format((float) $cardholder->annual_income,siteDecimalPlaces()) : '—' }}
{{ __('Source of Funds') }}
{{ $cardholder->source_of_funds ? Str::headline(str_replace('_', ' ', $cardholder->source_of_funds)) : '—' }}
@endif {{-- 8. Compliance --}}
{{ __('Compliance') }}
{{ __('Self-declared status flags.') }}
{{ __('Politically Exposed Person') }}
{{ $cardholder->pep_flag ? __('Yes') : __('No') }}
{{ __('Sanctions') }}
{{ $cardholder->sanctions_flag ? __('Yes') : __('No') }}
@else {{-- ====== Business cardholder ====== --}} {{-- 2. Legal Identity --}}
{{ __('Legal Identity') }}
{{ __('Registered entity details.') }}
{{ __('Legal Name') }}
{{ $business?->business_name ?: '—' }}
{{ __('Trading Name') }}
{{ $business?->trading_name ?: '—' }}
{{ __('Entity Type') }}
{{ $business?->business_type ? Str::headline(str_replace('_', ' ', $business->business_type)) : '—' }}
{{ __('Incorporation Date') }}
{{ optional($business?->incorporation_date)->format('d M Y') ?: '—' }}
{{ __('Country of Incorporation') }}
{{ $business?->incorporation_country ?: '—' }}
{{-- 3. Tax & Registration --}}
{{ __('Tax & Registration') }}
{{ __('Identifiers used by KYB.') }}
{{ __('Registration Number') }}
{{ $business?->registration_number ?: '—' }}
{{ __('TIN / EIN / VAT') }}
{{ $business?->tin ?: '—' }}
{{ __('Industry') }}
{{ $business?->industry ?: '—' }}
{{ __('MCC Code') }}
{{ $business?->mcc_code ?: '—' }}
{{ __('Website') }}
@if($business?->website_url) {{ $business->website_url }} @else — @endif
{{-- 4. Business Contact --}}
{{ __('Business Contact') }}
{{ __('Point of contact for compliance and disputes.') }}
{{ __('Email') }}
{{ $business?->contact_email ?: '—' }}
{{ __('Phone') }}
{{ trim(($business?->phone_country_code ?? '').' '.($business?->contact_phone ?? '—')) }}
{{-- 5. Registered Address --}}
{{ __('Registered Address') }}
{{ __('Address on file with your registrar.') }}
{{ __('Street') }}
{{ $business?->address_line1 ?: '—' }} @if($business?->address_line2), {{ $business->address_line2 }}@endif
{{ __('City') }}
{{ $business?->city ?: '—' }}
{{ __('State') }}
{{ $business?->state ?: '—' }}
{{ __('Postal Code') }}
{{ $business?->postal_code ?: '—' }}
{{ __('Country') }}
{{ $business?->country ?: '—' }}
{{-- 6. Beneficial Owners --}} @if(! empty($owners))
{{ __('Beneficial Owners') }}
{{ __('Anyone who owns or controls 25% or more of the entity.') }}
@foreach($owners as $owner)
{{ $owner['name'] ?? '—' }}
{{ ($owner['ownership_pct'] ?? 0) }}%
@if(! empty($owner['dob'])) {{ $owner['dob'] }} @endif @if(! empty($owner['country'])) {{ $owner['country'] }} @endif @if(! empty($owner['id_type'])) {{ Str::headline(str_replace('_', ' ', $owner['id_type'])) }} @if(! empty($owner['id_number'])) · {{ $owner['id_number'] }} @endif @endif
@endforeach
@endif @endif {{-- Footer meta --}}
{{ __('Audit') }}
{{ __('When this profile was created and last touched.') }}
{{ __('Created At') }}
{{ optional($cardholder->created_at)->format('d M Y, H:i') ?: '—' }}
{{ __('Last Updated') }}
{{ optional($cardholder->updated_at)->format('d M Y, H:i') ?: '—' }}
@endsection