@extends('layouts.admin') @section('title', 'Payout Settings') @section('header', 'Payout Settings') @section('content')
@if(session('success'))
{{ session('success') }}
@endif @if($errors->any())
There were some problems with your input.
    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif @php $activeSettings = $settings[$activeGateway] ?? null; $activeCredentials = optional($activeSettings)->credentials ?? []; $manualSettlementGateways = array_keys(\App\Support\GatewayRegistry::payoutProviders()); $manualSettlementGateways = array_values(array_filter( $manualSettlementGateways, fn ($gateway) => \App\Support\GatewayRegistry::usesExternalManualSettlement($gateway) )); $activeGatewayIsManualSettlement = \App\Support\GatewayRegistry::usesExternalManualSettlement($activeGateway); @endphp
@csrf
Manual settlement only. {{ \App\Support\GatewayRegistry::automatedPayoutUnavailableMessage($activeGateway) }}
Automatic API payouts are available for RazorpayX, Stripe Connect, Cashfree, and Paystack.

Gateway Credentials

Values are encrypted in `payout_settings`. You can also keep them in `.env` as fallback.

@php $razorpayKey = $activeCredentials['razorpay_key'] ?? ''; $maskedRazorpayKey = !empty($razorpayKey) ? substr($razorpayKey, 0, 3) . str_repeat('*', 8) . substr($razorpayKey, -3) : ''; @endphp
@php $razorpaySecret = $activeCredentials['razorpay_secret'] ?? ''; $maskedRazorpaySecret = !empty($razorpaySecret) ? substr($razorpaySecret, 0, 3) . str_repeat('*', 8) . substr($razorpaySecret, -3) : ''; @endphp
@php $stripePayoutSecret = $activeCredentials['stripe_secret'] ?? ''; $maskedStripePayoutSecret = !empty($stripePayoutSecret) ? substr($stripePayoutSecret, 0, 3) . str_repeat('*', 8) . substr($stripePayoutSecret, -3) : ''; @endphp
@php $cashfreeSecret = $activeCredentials['cashfree_client_secret'] ?? ''; $maskedCashfreeSecret = !empty($cashfreeSecret) ? substr($cashfreeSecret, 0, 3) . str_repeat('*', 8) . substr($cashfreeSecret, -3) : ''; @endphp
@php $paystackSecret = $activeCredentials['paystack_secret_key'] ?? ''; $maskedPaystackSecret = !empty($paystackSecret) ? substr($paystackSecret, 0, 3) . str_repeat('*', 8) . substr($paystackSecret, -3) : ''; @endphp
@php $externalSecret = $activeCredentials['external_secret'] ?? ''; $maskedExternalSecret = !empty($externalSecret) ? substr($externalSecret, 0, 3) . str_repeat('*', 8) . substr($externalSecret, -3) : ''; @endphp
@php $mollieSecret = $activeCredentials['mollie_connect_client_secret'] ?? ''; $maskedMollieSecret = !empty($mollieSecret) ? substr($mollieSecret, 0, 3) . str_repeat('*', 8) . substr($mollieSecret, -3) : ''; @endphp
Payout Gateway Checklist

This matrix reflects what is actually wired in this app today for vendor payouts.

@foreach($capabilityMatrix as $gateway => $capability) @endforeach
Gateway Automated Payout Balance Check Webhook / Status Sync Requirements
{{ $capability['label'] }}
@if($activeGateway === $gateway) Active gateway @endif
{{ $capability['automated'] ? 'Ready' : 'Blocked' }} {{ $capability['balance'] ? 'Available' : 'Not wired' }} {{ $capability['webhook'] ? 'Available' : 'Not wired' }} {{ $capability['requirements'] }}
@endsection