> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flinks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guaranteed EFT

> Set up and use Flinks Guaranteed EFT (G-EFT) for secure, real-time account funding.

Flinks Guaranteed EFT (G-EFT) reduces the risk and inefficiencies of traditional EFT transactions by providing a payment guarantee before funds are moved. This ensures that the payment will be honored, reducing exposure to NSF (Non-Sufficient Funds) returns.

## How G-EFT works

The Guaranteed EFT flow adds a guarantee step before the standard EFT process:

1. **Session creation**: Your server calls `/Authorize` and `/Sessions/Initiate` to create a payment session.
2. **Customer authentication**: The customer authenticates through Flinks Connect, selects their account, and specifies the payment amount.
3. **Guarantee issuance**: Flinks analyzes the account and issues a payment guarantee (or refuses if risk is too high).
4. **Guarantee acceptance**: You can explicitly accept or reject the guarantee, or configure auto-acceptance for low-risk guarantees.
5. **Payment processing**: Once the guarantee is accepted, Flinks initiates the EFT and delivers funds to your settlement account.

## Key features

| Feature                    | Description                                                                                     |
| :------------------------- | :---------------------------------------------------------------------------------------------- |
| **Guarantee webhook**      | Receive a webhook notification when a guarantee is issued                                       |
| **Accept/reject**          | Explicitly accept or reject guarantees before completing the session                            |
| **Auto-acceptance**        | Configure automatic acceptance for low-risk guarantees                                          |
| **Next Best Offer**        | Optionally receive an alternative amount suggestion if the requested amount can't be guaranteed |
| **Flexible settlement**    | Direct funds to your organization's settlement account or individual user accounts              |
| **Session status webhook** | Receive notifications when a session moves to failed, cancelled, or completed status            |
| **Payor details endpoint** | Retrieve complete payor account details (institution code, transit number, account number)      |

## Setting up G-EFT

### Prerequisites

* An active Flinks Pay instance with EFT enabled
* G-EFT feature enabled by your Flinks Representative

### Integration flow

1. **Authorize**: Call the [/Authorize](/api/pay/endpoints/authorize/authorize) endpoint to get an `access_token`.

2. **Initiate session**: Call `/Sessions/Initiate` with the `access_token` to create a G-EFT session.

3. **Launch the application**: Open the Flinks Pay application for the customer using your session URL:
   ```
   https://{BaseURL}/app/?sessionId={sessionId}
   ```

4. **Handle guarantee**: Listen for the guarantee webhook or poll the session status to determine if a guarantee was issued.

5. **Accept or reject**: Use the guarantee details to accept or reject the payment.

6. **Monitor settlement**: Track the payment through to settlement using the `/PaymentRequests` GET endpoint or status webhooks.

## Sandbox testing

To test G-EFT in the sandbox environment:

1. Use your sandbox credentials provided by Flinks during onboarding.
2. Create a session using the test institution **Flinks Capital**.
3. Authenticate with username `Greatday` and password `Everyday`.
4. Complete the payment flow and verify the guarantee webhook is received.

<Note>
  Webhook testing is not available in sandbox environments. To test webhooks with G-EFT, you'll need to use your staging or production instance. Contact your Flinks Representative for staging access.
</Note>

## Related resources

* [EFT Debit overview](/guides/pay/eft/eft-debit)
* [Set up Flinks Pay with EFT](/guides/pay/eft/setup-flinks-pay)
* [Webhooks](/guides/webhooks/introduction)
* [Troubleshooting payments](/guides/pay/troubleshooting)
