GC Logo
Developer Docs

Guides

Collect Payments
Overview
Setting up mandatesDirect Debit Mandates Verified Mandates Collecting mandates offline Importing Mandates
One-off paymentsOne-Off Direct Debit Instant Bank Pay
Recurring paymentsSubscriptions Instalments Variable Recurring Payments Instant Bank Pay + Direct Debit
Events & WebhooksMandate Events Billing Requests Events
Managing paymentsFX Payments Reconciling Payouts
Scheme guidanceACH and PAD Consent Types Billing Request Purpose Codes VRP Commercial Payment Purpose Codes PayTo Agreements and Payments

Billing Request (Instant Bank Pay feature)

View as Markdown

Using the JavaScript Drop-in

This guide shows how to use the Javascript Drop-in to allow customers to complete the Billing Request Flow without leaving the integrator’s site.

Use the Drop-in when you already have a frontend website, and want to benefit from having customers stay on your site, and avoiding site-to-site redirects.

Preview the React Drop-in

Installation

Create

React Drop-in Example

1import React, { useCallback, useState } from "react"; 2import { 3 useGoCardlessDropin, 4 GoCardlessDropinOptions, 5 GoCardlessDropinOnSuccess, 6} from "@gocardless/react-dropin"; 7 8// Display a button that opens the Dropin on click, starting a checkout 9// flow for the specified Billing Request Flow. 10const DropinButton = (options: GoCardlessDropinOptions) => { 11 const { open } = useGoCardlessDropin({ ...options }); 12 13 return ( 14 <button type="button" onClick={() => open()}> 15 Start Dropin for <code>{options.billingRequestFlowID}</code> in{" "} 16 <code>{options.environment}</code> 17 </button> 18 ); 19}; 20 21// Example checkout flow, where we create a Billing Request Flow ID by talking 22// with our backend API. 23const App: FunctionComponent = () => { 24 const [flowID, setFlowID] = useState<string | null>(null); 25 26 // Build your backend with an API endpoint that: 27 // 28 // 1. Creates a Billing Request for the resources you wish to create 29 // 2. Create a Billing Request Flow against (1) 30 // 3. Return the ID from (2) 31 // 32 // See an example of this at Taking an Instant Bank Payment: 33 // https://developer.gocardless.com/getting-started/billing-requests/taking-an-instant-bank-payment/ 34 React.useEffect(() => { 35 async function createFlow() { 36 // Expecting a JSON body like: 37 // { 38 // "flow_id": "BRF123456" 39 // } 40 let response = await fetch("/api/flows", { 41 method: "POST", 42 }); 43 const { flow_id } = await response.json(); 44 setFlowID(flow_id); 45 } 46 createFlow(); 47 }, []); 48 49 // Only show the button once we have a Billing Request Flow ID 50 return flowID === null ? ( 51 <div className="loader"></div> 52 ) : ( 53 <DropinButton billingRequestFlowID={flowID} environment={"live"} /> 54 ); 55};

What’s next?

First instant payment with mandate Direct Debit set up

Get started

Collect Verified Mandates

Collect Direct Debit Mandates

Billing Request overview