It's probably because you have a bunch of invalid HTML, and your browser is going into quirksmode to make up for it.
A table can only have THEAD / TBODY / TR tags in it.
A TR tag can only have TD or TH in it.
Anything else will be placed somewhere else by your browser while loading the DOM, and as such the button is now probably outside of your form.
Try this:
@foreach($medical as $lifeC)
<tr>
<td class="add-color-dark">{{ $lifeC->agent_name }}</td>
<td>{{ date( 'M j, Y', strtotime($lifeC->invoice_date)) }}</td>
<td>{{ $lifeC->voucher_number }}</td>
<td>{{ $lifeC->invoice_amount }}</td>
<td>{{ $lifeC->kra_pin }}</td>
<td>
<span class="badge badge-danger">{{ $lifeC->payment_status }}</span>
</td>
<td>
<form method="POST" action="{{ route('b2b.medPayout') }}" id="payoutRequest">
<!-- Hidden input fields on the form-->
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
<input type="hidden" name="agentName" id="agentName" value="{{ $lifeC->agent_name }}">
<input type="hidden" name="voucherNo" id="voucherNo" value="{{ $lifeC->voucher_number }}">
<input type="hidden" name="agentCode" id="agentCode" value="{{ $lifeC->agent_code }}">
<input type="hidden" name="kraPin" id="kraPin" value="{{ $lifeC->kra_pin }}">
<button type="submit" class="btn btn-primary btn-sm" id="btnFront" style="cursor: pointer;"> Request </button>
</form>
</td>
</tr>
@endforeach
Now the whole form, hidden inputs, and submit button will be inside the last TD, which is valid HTML.