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

# Initiate Pre-Authorization

> Pre-authorize a payment to be captured later.

Pre-Authorization is a payment process where a cardholder's funds are temporarily held to ensure the availability of the specified amount for a future transaction. This process involves verifying the card details and reserving the funds without actually transferring them, allowing merchants to confirm the card's validity and the customer's ability to pay.

Once the pre-authorization is approved, the funds are earmarked and can be captured later when the final transaction is completed, providing flexibility and security for both merchants and customers in managing payments.

## Initiate Pre-Authorization

This endpoint initiates a pre-authorization for a payment.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://developers.flouci.com/api/v2/generate_payment' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer <PUBLIC_KEY>:<PRIVATE_KEY>' \
    -d '{
      "amount": 1000,
      "success_link": "https://your-website.com/success",
      "fail_link": "https://your-website.com/fail",
      "webhook": "https://your-website.com/webhook",
      "developer_tracking_id": "YOUR_TRACKING_ID",
      "pre_authorization": true
    }'
  ```
</RequestExample>

### Body

<ParamField body="amount" type="integer" required>
  The amount to be paid in millimes.
</ParamField>

<ParamField body="success_link" type="string" required>
  The URL to redirect the user to after a successful payment.
</ParamField>

<ParamField body="fail_link" type="string" required>
  The URL to redirect the user to after a failed payment.
</ParamField>

<ParamField body="webhook" type="string">
  The webhook URL you want to receive payment confirmation on.
</ParamField>

<ParamField body="developer_tracking_id" type="string">
  An ID for you to track the payment. This is a free field that Flouci doesn't check against.
</ParamField>

<ParamField body="pre_authorization" type="boolean" required>
  Must be set to `true` to create a pre-authorization.
</ParamField>

<ParamField body="accept_card" type="boolean" default="false">
  Whether to accept card payments.
</ParamField>

<ParamField body="image_url" type="URL">
  The URL of the image to display on the payment page. This field is optional, and the default image is the image of the merchant in the Flouci portal.
</ParamField>

<ParamField body="session_timeout_secs" type="integer" default="1200">
  The session timeout in seconds.
</ParamField>

<ResponseExample>
  ```json Success theme={null}
  {
    "result": {
      "success": true,
      "payment_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "link": "https://flouci.com/pay/a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "developer_tracking_id": "YOUR_TRACKING_ID"
    },
    "name": "developers",
    "code": 0,
    "version": "v2"
  }
  ```

  ```json Error theme={null}
  {
    "result": {
      "status": 400,
      "message": "Bad Request"
    }
  }
  ```
</ResponseExample>
