Approval RequiredBefore you use this payment method, you need to request access from the support team.
How does E-Mandate Work?
This payment method tokenizes the customer’s bank account so it can be debited subsequently for payments. Just like card tokenization, the merchant needs to first generate a token for the customer’s account. This token maps the customer’s account details and authorization to a token, allowing the merchant to charge the customer. A customer can tokenize their account multiple times with different merchants that use Flutterwave. Once the customer’s account is tokenized, the merchant can charge it until the token expires. For details on token expiry, refer to the token generation section.Prerequisite
You need to meet the following requirements before integrating this payment method:- Account status: Your account needs to be approved for live payments.
- Request payment method: You’ll need to request access to this payment method from our support team. Send us an email to hi@flutterwavego.com.
- Set up transaction webhooks on your account to receive the token after generating a mandate.
Payment Flow
Using direct debit, you’ll generate and store customer tokens to collect payments from their bank accounts by following the steps below:Token Generation
To generate a token for the customer, You need to collect the customer’s details (email, address, account_bank and account_number). From your server, send a request to create account token endpoint with the customer information, transaction amount and token expiry date (end_date).
cURL
- The
start_dateandnarrationare optional. - The specified
start_datemust be at least one day after the current date. - The maximum value for
end_dateis 365 days (one year) from thestart_date.
Note that not all NG banks are supported on this feature, Here is a comprehensive list of supported banks.
| ID | Code | Name |
|---|---|---|
| 5 | 011 | First Bank PLC |
| 2 | 023 | Citi Bank |
| 14 | 032 | Union Bank PLC |
| 13 | 035 | United Bank for Africa |
| 15 | 032 | Wema Bank PLC |
| 1 | 044 | Access Bank |
| 4 | 050 | EcoBank PLC |
| 16 | 057 | Zenith Bank PLC |
| 8 | 058 | Guaranty Trust Bank |
| 11 | 068 | Standard Chartered Bank PLC |
| 7 | 078 | Fidelity Bank |
| 9 | 076 | Polaris Bank |
| 183 | 082 | Keystone Bank |
| 231 | 100 | Suntrust Bank |
| 18 | 101 | ProvidusBank PLC |
| 6 | 214 | First City Monument Bank |
| 17 | 215 | Unity Bank PLC |
| 10 | 221 | Stanbic IBTC Bank |
| 12 | 232 | Sterling Bank PLC |
| 184 | 301 | Jaiz Bank |
| 784 | 305 | Paycom |
| 964 | 000025 | Titan Trust Bank |
| 300 | 000027 | Globus Bank |
| 1318 | 000031 | PremiumTrust Bank |
Authorizing a Mandate
When you get a successful response, your customer will need to make a transfer to the specified account in order to authorize the mandate. The authorization fee must be paid from the bank account on which the authorization is requested. This transfer is a fee (NGN 100) to trigger your customer’s authorization and it must be completed within 10 minutes of the token generation. Before authorizing a mandate, the status of your generated token is pending. After the mandate is authorized, the status moves to approved and we’ll send you a webhook with the token information.Sample Webhook
active_on in the response. This wait period is usually less than three hours after token authorization. With a returning customer, the token is activated immediately.
When waiting for activation, the token’s status will be Approved. This gets updated to Active after activation. Only active tokens can be used to debit the customer’s account.
Querying a Token’s Status
Only active tokens can be used to debit your customers recurrently. After you generate the token, it’s important to query its status before attempting to charge the customer. A generated token can have multiple statuses. The key ones to keep an eye out for include: – Pending – Approved – Active – Suspended – Deleted Send the token reference to the get token endpoint to confirm the token’s current status.cURL
Charging a Customer Using your Token
After a customer authorizes a mandate and the status of the token is active, you can initiate the charge using the generated token. Send thetoken, email, amount, transaction reference (tx_ref) and the transaction type to the tokenized charge endpoint to initiate the payment.
The transaction amount should not exceed the amount specified when generating the token.
cURL
Testing your Integration
Here’s how you test your integration, most data we’d use in the examples are custom and can be easily replaced.- Generate a token for your customer.
- Mandate authorization occurs automatically after a successful token generation.
- Retrieve the token from your webhook server.
- Verify the token’s status by querying the Get Token endpoint.
- Charge the demo customer using the generated token.
Sample Response (Test)
Updating an Account Token
You can enhance your customers’ experience by properly managing tokens. In the event that your customer opts out of a payment plan or you suspect some foul play, we offer the flexibility of suspending or even deleting the token. This helps you to provide a secure and seamless payment experience in your solution. Deleting a token is an irreversible action; please consider this carefully before you delete your customer’s token. If you need to debit a previous customer whose token has been deleted, you would need to generate and authorize a new token.cURL
200 OK