Flutterwave
Flutterwave Integration Guide
Braintree's partnership with Flutterwave enables Braintree merchants to leverage their existing Braintree integration to process transactions in multiple countries supported by Flutterwave.Supported Operations
- Authorization SDK | GraphQL
- Capture SDK | GraphQL
- Charge SDK | GraphQL
- Void SDK | GraphQL
- Refund SDK | GraphQL
- Verifying a Card SDK | GraphQL
Supported Countries
Country Name | Supported Credit Cards | Supported Debit Cards |
---|---|---|
South Africa | Mastercard, Visa | Mastercard, Visa |
Egypt | Mastercard, Visa | Mastercard, Visa |
Saudi Arabia | Mastercard, Visa | Mastercard, Visa |
Turkey | Mastercard, Visa | Mastercard, Visa |
Ukraine | Mastercard, Visa | Mastercard, Visa |
Nigeria | Mastercard, Visa | Mastercard, Visa |
Qatar | Mastercard, Visa | Mastercard, Visa |
Bahrain | Mastercard, Visa | Mastercard, Visa |
Ivory Coast | Mastercard, Visa | Mastercard, Visa |
Jordan | Mastercard, Visa | Mastercard, Visa |
Kenya | Mastercard, Visa | Mastercard, Visa |
Ghana | Mastercard, Visa | Mastercard, Visa |
Uganda | Mastercard, Visa | Mastercard, Visa |
Tanzania | Mastercard, Visa | Mastercard, Visa |
Setup
Flutterwave Configuration & Credentials
Each merchant should have an account with Flutterwave. Once the account with Flutterwave is created,
please work with the account manager or technical account manager to securely share the account's
API/integration keys with Braintree.
Braintree Merchant Account
To process cards with Flutterwave, you will need currency-specific Braintree merchant accounts. Your
account manager TAM can help facilitate this.
Transactions
Tokenize Payment Method
[SDK,
GraphQL] Tokenization
returns a single use token or nonce of a payment method. When using the SDK, it is recommended to
use a payment nonce sent from the client performing the transaction. For more information see
receiving a Payment Method nonce from your client.
Vault Payment Method
[SDK,
GraphQL] Vaulting a
tokenized payment method will create an entity that can be authorized or charged multiple times.
When using a single-use tokenized payment method during an authorization, you can configure the
authorization request to vault the tokenized payment method to reuse it multiple times
SDK,
GraphQL].
Supported Operations with Flutterwave:
Note: Please use Braintree platform for Authorization, Capture, Charge, Void and Refund
Operations. Performing these operations in Flutterwave without Braintree could lead to
discrepancies and synchronization errors.- Authorization [SDK,GraphQL]
- Capture [SDK, GraphQL]
- Charge (Authorization + Capture in one step)[SDK, GraphQL]
- Void [SDK, GraphQL]
ReverseTransaction
mutation in the GraphQL API
will void a transaction that is not in the SETTLED
state, and will refund a transaction
that is in the SETTLED
state.
Note: Refunds cannot be performed for an amount greater than the settled amount.
- Verifying a Card [GraphQL] Cards can be verified in various ways using the SDK, see this documentation for more details.
Response Codes
Braintree can only display a limited number of response codes since transaction results are
controlled by Flutterwave.
When the Fluttrewave decline code cannot be mapped to a like-to-like Braintree decline code,
Braintree returns code 2000
with the message Do Not Honor
Failure Responses
Braintree Error Code | Braintree Error Message | Flutterwave Error Code | Flutterwave Error Message |
---|---|---|---|
1000 | Approved | 11 | Approved, VIP |
1000 | Approved | 16 | Approved, Update Track 3 |
1001 | Approved, check customer ID | 08 | Honour With Identification |
1004 | Approved for Partial Amount | 10 | Approved For Partial Amount |
2000 | Do Not Honor | 05 | Do Not Honour |
2001 | Insufficent Funds | 51 | Insufficient Funds |
2002 | Limit Exceeded | 61 | Exceeds Withdrawal Limit |
2004 | Expired Card | 33 | Expired Card, Capture |
2004 | Expired Card | 54 | Expired Card |
2005 | Invalid Credit Card Number | 06 | Error |
2005 | Invalid Credit Card Number | 06 | Error |
2005 | Invalid Credit Card Number | 30 | Format Error |
2007 | No Account | 52 | No Cheque Account |
2007 | No Account | 53 | No Savings Account |
2007 | No Account | 56 | No Card Record |
2009 | No Such Issuer | 15 | No Issuer |
2009 | No Such Issuer | 25 | Unable to Locate Record On File |
2010 | Card Issuer Declined CVV | 82 | CVV Validation Error |
2012 | Processor Declined – Possible Lost Card | 41 | Lost Card |
2013 | Processor Declined – Possible Stolen Card | 43 | Stolen Card |
2014 | Processor Declined – Fraud Suspected | 34 | Suspected Fraud, Retain Card |
2014 | Processor Declined – Fraud Suspected | 59 | Suspected Fraud |
2014 | Processor Declined – Fraud Suspected | 67 | Capture Card |
2016 | Duplicate Transaction | 94 | Duplicate Transaction |
2019 | Invalid Transaction | 12 | Invalid Transaction |
2019 | Invalid Transaction | 12 | Function Not Supported |
2019 | Invalid Transaction | 42 | No Universal Account |
2019 | Invalid Transaction | 44 | No Investment Account |
2019 | Invalid Transaction | 57 | Function Not Permitted to Cardholder |
2019 | Invalid Transaction | 58 | Function Not Permitted to Terminal |
2019 | Invalid Transaction | 60 | Acceptor Contact Acquirer |
2021 | Security Violation | 66 | Acceptor Contact Acquirer, Security |
2020 | Violation | 93 | Cannot Complete, Violation Of The Law |
2025 | Bank Not Supported By Switch | 31 | Bank Not Supported By Switch |
2026 | Invalid Merchant ID | 03 | Invalid Merchant |
2034 | No Action Taken | 21 | No Action Taken |
2034 | No Action Taken | 22 | Suspected Malfunction |
2034 | No Action Taken | 23 | Unacceptable Transaction Fee |
2034 | No Action Taken | 96 | System Error |
2047 | Call Issuer. Pick Up Card | 04 | Pick Up Card |
2047 | Call Issuer. Pick Up Card | 04 | Pick Up Card, Special |
2047 | Call Issuer. Pick Up Card | 35 | Card Acceptor, Contact Acquirer, Retain Card |
2047 | Call Issuer. Pick Up Card | 36 | Restricted Card, Retain Card |
2047 | Call Issuer. Pick Up Card | 37 | Contact Acquirer Security Department, Retain Card |
2048 | Invalid Amount | 13 | Invalid Amount |
2050 | Invalid Credit Plan | 39 | No Credit Account |
2057 | Issuer or Cardholder has put a restriction on the card | 62 | Restricted Card |
2102 | Incorrect PIN | 55 | Incorrect PIN |
2103 | PIN try exceeded | 38 | PIN Tries Exceeded, Capture |
2103 | PIN try exceeded | 75 | PIN Tries Exceeded |
2104 | Offline Issuer Declined | 90 | Cutoff In Progress |
2104 | Offline Issuer Declined | 91 | Card Issuer Unavailable |
2105 | Processor Declined | 92 | Unable To Route Transaction |
2105 | Processor Declined | 09 | Request In Progress |
3000 | Processor Network Unavailable – Try Again | 19 | Re-enter Last Transaction |
additional_processor_response
for the
SDK
or The PaymentStatusEvent->processorResponse->additionalInformation
for
GraphQL.
Test Cards
Braintree provides a set of
test card numbers that
can be used in sandbox to test integrations. Merchants can use different card numbers to exercise
various scenarios. Because we map the credit cards in sandbox to facilitate end-to-end testing,
there may be discrepancies in reporting in sandbox. However, in production, the card numbers are
sent to Flutterwave directly without any modification.
Credit Cards | Success
Card brand | Test number | Flutterwave number | Automatically mapped? |
---|---|---|---|
Mastercard | 5555555555554444 | 5111111111111118 | ✅ |
Visa | 4012888888881881 | 4012000033330026 | ✅ |
Credit Cards | Failure
Scenario | Test number | Flutterwave number | Automatically mapped? | Braintree result |
---|---|---|---|---|
Declined - Visa | 4000111111111115 | 4012000033330026 | ✅ | Processor Declined |
Declined - Mastercard | 5105105105105100 | 5111111111111118 | ✅ | Processor Declined |