# Billing Request Flow

Source: https://docs.gocardless.com/docs/api-reference/billing-request-flow

## Create a Billing Request Flow

`POST /billing_request_flows`

Creates a new billing request flow.

### Request body

Wrap request body attributes in a `billing_request_flows` object.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `auto_fulfil` | boolean | No | (Experimental feature) Fulfil the Billing Request on completion of the flow (true by default). Disabling the auto_fulfil is not allowed currently. |
| `customer_details_captured` | boolean | No | Identifies whether a Billing Request belongs to a specific customer |
| `lock_bank_account` | boolean | No | If true, the payer will not be able to change their bank account within the flow. If the bank_account details are collected as part of bank_authorisation then GC will set this value to true mid flow.  You can only lock bank account if these have already been completed as a part of the billing request. |
| `lock_currency` | boolean | No | If true, the payer will not be able to change their currency/scheme manually within the flow. Note that this only applies to the mandate only flows - currency/scheme can never be changed when there is a specified subscription or payment. |
| `lock_customer_details` | boolean | No | If true, the payer will not be able to edit their customer details within the flow. If the customer details are collected as part of bank_authorisation then GC will set this value to true mid flow.  You can only lock customer details if these have already been completed as a part of the billing request. |
| `show_redirect_buttons` | boolean | No | If true, the payer will be able to see redirect action buttons on Thank You page. These action buttons will provide a way to connect back to the billing request flow app if opened within a mobile app. For successful flow, the button will take the payer back the billing request flow where they will see the success screen. For failure, button will take the payer to url being provided against exit_uri field. |
| `show_success_redirect_button` | boolean | No | If true, the payer will be able to see a redirect action button on the Success page. This action button will provide a way to redirect the payer to the given redirect_uri. This functionality is helpful when merchants do not want payers to be automatically redirected or on Android devices, where automatic redirections are not possible. |
| `redirect_uri` | string | No | URL that the payer can be redirected to after completing the request flow. |
| `skip_success_screen` | boolean | No | If true, the payer will not be redirected to the success screen after completing the flow. A redirect_uri needs to be provided for this parameter to be taken into account. |
| `exit_uri` | string | No | URL that the payer can be taken to if there isn't a way to progress ahead in flow, for example if the customer searches for a bank that doesn't exist or isn't supported on the scheme. |
| `prefilled_customer` | object | No | Customer information used to prefill the payment page so your customer doesn't have to re-type details you already hold about them. It will be stored unvalidated and the customer will be able to review and amend it before completing the form. |
| `prefilled_bank_account` | object | No | Bank account information used to prefill the payment page so your customer doesn't have to re-type details you already hold about them. It will be stored unvalidated and the customer will be able to review and amend it before completing the form. |
| `language` | string | No | Sets the default language of the Billing Request Flow and the customer. [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code. |
| `links` | object | No |  |

### Responses

| Status | Description |
| --- | --- |
| 201 | Resource created successfully |
| 400 | Bad Request |
| 401 | Unauthorised |
| 404 | Not found |
| 422 | Validation Error |
| 500 | Internal Error |

---

## Initialise a Billing Request Flow

`POST /billing_request_flows/{billing_request_flow_id}/actions/initialise`

Returns the flow having generated a fresh session token which can be used to power
integrations that manipulate the flow.

### Parameters

| Name | Location | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `billing_request_flow_id` | path | string | Yes | The billing request flow id |

### Responses

| Status | Description |
| --- | --- |
| 200 | Action completed successfully |
| 400 | Bad Request |
| 401 | Unauthorised |
| 404 | Not found |
| 422 | Validation Error |
| 500 | Internal Error |
