@php /** @var array $summary */ $card = $summary['card'] ?? null; $face = $summary['card_face_display'] ?? [ 'pan_groups' => ['5524', '****', '****', '9021'], 'expiry_label' => '09/29', 'mock_cvc_digits' => '847', ]; $earnings = $summary['earnings'] ?? null; $intl = $summary['international_routing_label'] ?? '—'; $intlIsActive = $intl === 'Active'; $holds = $summary['active_holds'] ?? []; $hasProcessing = (bool) ($summary['has_processing_authorization'] ?? false); $statusLabel = 'Awaiting issuance'; if ($card) { $statusLabel = match ($card->status) { \App\Models\Card::STATUS_ACTIVE => 'Active', \App\Models\Card::STATUS_FROZEN => 'Frozen', \App\Models\Card::STATUS_SECURITY_HOLD => 'Security hold', \App\Models\Card::STATUS_RESTRICTED => 'Restricted', \App\Models\Card::STATUS_PENDING_ISSUE => 'Pending issue', \App\Models\Card::STATUS_EXPIRED => 'Expired', \App\Models\Card::STATUS_TERMINATED => 'Terminated', \App\Models\Card::STATUS_REPLACEMENT_REQUESTED => 'Replacement requested', default => str_replace('_', ' ', $card->status), }; } @endphp @include('partials.html-root-open') @include('partials.head-meta', ['pageTitle' => 'Card Management']) @include('partials.desktop-required-notice') @include('partials.workspace-lg-only-wrap-start') @include('partials.activity-drawer')
@include('partials.activity-panel-permanent') @include('partials.app-sidebar')

Card Management

Mandate-linked spending instrument, routing, and security — on one screen.

@include('partials.cards-workspace-guide') @if (session('status'))

{{ session('status') }}

@endif @if ($errors->any())
@foreach ($errors->all() as $err)

{{ $err }}

@endforeach
@endif @if($card && $card->status === \App\Models\Card::STATUS_SECURITY_HOLD)
{{ \App\Services\CardManagementService::SECURITY_HOLD_USER_MESSAGE }}
@endif
@include('partials.bank-of-america-logo-mark', [ 'size' => 'sm', 'alt' => 'Bank of America — '.($summary['linked_institution_display'] ?? 'linked institution'), 'class' => 'shadow-none ring-0 pointer-events-none', ])
@php $__panGroups = $face['pan_groups'] ?? ['5524', '****', '****', '9021']; @endphp

@foreach($__panGroups as $i => $grp) @php $isLastPan = $i === count($__panGroups) - 1; @endphp {{ $grp }} @endforeach

Status: {{ $statusLabel }} @if($card && $card->status === \App\Models\Card::STATUS_ACTIVE) @endif

Cardholder

{{ strtoupper($card?->cardholder_name ?? 'OPERATIONS SND LLC') }}

Expires

{{ $face['expiry_label'] ?? '—/—' }}

CVC

{{ $face['mock_cvc_digits'] ?? '···' }}

Card number is always redacted. Expiry reflects your instrument schedule. CVC is a non-functional mock and is blurred for display only.

Available spending

@if($summary['available_spending'] !== null) ${{ number_format((float) $summary['available_spending'], 2) }} @else — @endif

Derived from mandate earnings allocation available balance.

Pending authorizations
${{ number_format((float) $summary['pending_authorizations'], 2) }}
Reserved obligations
${{ number_format((float) $summary['reserved_invoice_obligations'], 2) }}

International routing

{{ $intl }}

Cross-border authorization routing and settlement paths. @if($intlIsActive) Active. International merchant authorizations and cross-border settlement legs are enabled for this instrument, subject to velocity checks and blocked-region policy. @else Current routing posture: {{ $intl }}. Adjust spending controls or resolve security items where applicable. @endif

Linked earnings allocation

Active earnings balance

${{ $earnings ? number_format((float) $earnings->available_balance, 2) : '—' }}

Payout restrictions

{{ ($user->status ?? '') === 'restricted_payout_access' ? 'Active hold' : 'None on profile' }}

Invoice settlements, payout routing, and card authorizations draw from the same allocation pool subject to controls.

Active holds

@if(count($holds))
    @foreach($holds as $h)
  • {{ $h }}
  • @endforeach
@else

No active card-side holds detected.

@endif
@if($card && ! in_array($card->status, [\App\Models\Card::STATUS_TERMINATED, \App\Models\Card::STATUS_EXPIRED], true))

Physical card replacement

Replacement is only handled through an in-person visit at your linked institution (walk-in). This application does not start replacement or reissue workflows.

@endif
@if($card) @if($card->status === \App\Models\Card::STATUS_FROZEN)
@csrf
@elseif(!in_array($card->status, [\App\Models\Card::STATUS_TERMINATED, \App\Models\Card::STATUS_EXPIRED, \App\Models\Card::STATUS_SECURITY_HOLD], true))
@csrf
@endif @endif Spending controls Transaction history Security activity

Live card activity

    @forelse($summary['recent_transactions'] as $tx)
  • {{ $tx->merchant_name }} · {{ str_replace('_', ' ', $tx->status) }} ${{ number_format((float) $tx->amount, 2) }} {{ $tx->currency }}
  • @empty
  • No recent authorization events.
  • @endforelse
@include('partials.workspace-lg-only-wrap-end')