Fleet integration guide
Build a Fleet financial services integration with Issuing.
Build a fleet offering by using Stripe Issuing to create cards and process transactions for your customers’ business.
By the end of this guide, you’ll know how to:
- Create verified connected accounts representing your business customers.
- Create cards for your business customers and use these cards to spend funds.
- Understand the additional fleet specific fields collected at the pump or point of sale.
Before you begin![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
- Sign up for a Stripe account.
- Activate Issuing test mode in the Dashboard.
- Configure your Connect platform branding settings for your business and add an icon.
Overview![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Stripe Issuing enables fleet management platforms and operators to create and manage customised fleet card programmes with physical or virtual payment cards. Issuing allows users to efficiently control, manage, and reconcile expenses related to their clients’ electric or traditional fuel vehicle fleets.
Stripe’s platform provides advanced capabilities with open-loop cards accepted anywhere, real-time spend controls at the point of purchase, advanced fraud protection leveraging Stripe’s fraud tools and authorisation signals, and the ability to define card benefits unique to your programme, such as 1% cashback on fuel spend. Fleet providers can also issue cards tied to individual or groups of vehicles, facilitating precise expense tracking (including odometer readings) and limiting spend to authorised drivers, merchants, or certain purchase categories.
Stripe’s platform provides data access to identify insights in spend patterns, mileage, maintenance, and transaction details, allowing businesses to customise their fleet programme. This approach provides greater operational efficiency with realised cost savings, as well as an oversight of card-based expenditure across fuel, repairs, food, accommodation, and more.
Create connected accounts![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Create a connected account![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Create a connected account to represent a business customer of your platform. For your platform, each fleet operator would be represented as a connected account.
Connect account types
Issuing only supports connected accounts that don’t use a Stripe-hosted Dashboard, and where your platform is responsible for requirements collection and loss liability, also known as a Custom connected account. Learn how to create connected accounts that work with Issuing. If your existing accounts don’t match this configuration, you must recreate them.
The following request creates a US-based connected account with the correct configuration and requests the requisite capabilities:
The user’s account information appears in the response:
{ ... "id": "{{CONNECTED_ACCOUNT_ID}}", "controller": { "stripe_dashboard": { "type": "none" }, "fees": { "payer": "application" }, "losses": { "payments": "application" }, "is_controller": true, "type": "application", "requirement_collection": "application" }, ... }
Note the connected account’s id
. You’ll provide this value to authenticate as the connected account by passing it into requests in the Stripe-Account
header.
If a connected account already exists, you can add the requisite capabilities by specifying the connected account id
in the request:
Verify the connected account![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Choose one of the following onboarding options:
At this point, Stripe has created and verified the connected account with active
relevant capabilities to use Issuing and Treasury.
To learn more, see:
Use the card![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
When a card is used to make a purchase, it generates an authorisation request, which can be approved or declined in real-time.
With a configured fleet card program, you’ll access additional fleet-specific fields gathered at the pump or point of sale. This includes odometer reading, driver identification, fuel type, gallons pumped, and itemized non-fuel product details, enabled by a fleet-specific chip configuration on the card. This data becomes available at the point of purchase during authorization, and later when the transaction is processed. Some fuel dispensers allow partial authorization.
Create an authorisation![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
To observe the impact of card activity on the associated balance, generate a test authorization.
As a user with a Commercial Fleet card program, you receive specific fleet-related data on the Authorization object.
You can create a test mode authorization on the Issuing page of the Dashboard for the connected account, or with the following call to the Authorizations API:
After approval, Stripe creates an Authorization
in a pending
state while it waits for capture.
The authorized amount
is the default amount held for a fuel dispenser transaction unless you’ve provided a different partial authorization amount in your response to the issuing_
webhook.
Make note of the authorization id
that you’ll use to capture the funds:
{ "id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 10000, ... "fleet": { "cardholder_prompt_data": { "odometer": 42424, }, "purchase_type": "fuel_purchase", "service_type": "self_service", }, "status": "pending", "transactions": [], }
Simulate fuel dispenser completion ![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
In test mode, you can simulate the completion of fuel being dispensed using the following code:
The Authorization
remains in a pending
state until it’s captured. The amount is updated to reflect the total amount of fuel dispensed, and additional fleet-specific fields are now available:
{ "id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 1000, ... "fleet": { "cardholder_prompt_data": { "odometer": 42424, }, "purchase_type": "fuel_purchase", "reported_breakdown": { "fuel": { "gross_amount_decimal": "10.0", }, "non_fuel": { "gross_amount_decimal": "0" }, "tax": { "local_amount_decimal": "0.03", "national_amount_decimal": null } }, "service_type": "self_service", }, "fuel": { "industry_product_code": "001", "quantity_decimal": "5.0", "type": "unleaded_regular", "unit": "us_gallon", "unit_cost_decimal": "200", }, "status": "pending", "transactions": [], }
Capture the funds![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
In test mode, you can capture the funds using the following code:
After the authorization is captured, Stripe creates an Issuing Transaction, the status
of the authorization is set to closed
.
As a user with a Commercial Fleet card program, you receive specific fleet-related data on the Transaction, (for example, to reconcile purchases).
{ "id": "ipi_1MykXhFtDWhhyHE1UjsZZ3xQ", "object": "issuing.transaction", "amount": 1000, ... "purchase_details": { "fleet": { "cardholder_prompt_data": { "odometer": 42424, }, "purchase_type": "fuel_purchase", "reported_breakdown": { "fuel": { "gross_amount_decimal": "10.0", }, "non_fuel": { "gross_amount_decimal": "0" }, "tax": { "local_amount_decimal": "0.03", "national_amount_decimal": null } }, "service_type": "self_service", }, "fuel": { "industry_product_code": "001", "quantity_decimal": "5.0", "type": "unleaded_regular", "unit": "us_gallon", "unit_cost_decimal": "200", }, } }