🛡 Prevent fraud & chargebacks

Fraud and dispute protection for your business

A chargeback is a financial transaction reversal process that allows a card holder to dispute a charge made on their credit or debit card and request a refund from their card-issuing bank. Chargebacks are designed to protect consumers from fraudulent or unauthorized transactions, as well as to provide a mechanism for resolving disputes between consumers and merchants.

Coinflow offers complete chargeback protection for your business, automatically handling all disputes and if a charge is lost, will cover the cost of the dispute + the cost of the goods/services under dispute.

Chargeback protection is offered at a standard of 1% of the subtotal price for every credit card transaction. This can be configured so that you as the merchant are paying the fee, or can be passed on to end-customers.

Chargeback Protection Statuses

StatusDescription
Not EnabledYour account does not have chargeback protection enabled or you are not passing the device ID that comes from the Chargeback Protection SDK, or you are not passing chargebackProtection data to the CoinflowPurchase component or the Checkout API.
Not ReviewedYour data was all setup correctly, but the transaction did not get reviewed by the fraud detection tools.
ApprovedChargeback protection is active, if the end user disputes the charge you will be insured against any losses.
RejectedThe fraud detection tools flagged this transaction as fraudulent or at high risk of a chargeback.

Override Fraud Decisions

If the fraud detection system issues a rejection that you believe to be invalid, you can disabled fraud protection for a specific customer by clicking "override" on a purchase which was "rejected" from chargeback protection, https://merchant.coinflow.cash/purchases

Integration

Integrating Coinflow Chargeback Protection is simple and straightforward!

Prebuilt UIs

React
  1. Add the <CoinflowPurchaseProtection> component into every page on your site.
  2. Add your merchantId as a property to <CoinflowPurchaseProtection> component
  3. In every<CoinflowPurchase> component add the chargebackProtectionData property and input information about every purchase that is being made via Coinflow.
React Native

Implement the nSure Mobile SDK

IOS:

  1. Drag and drop LocalPods folder from ReactNative > Resources into local IOS folder
    Add this line to the podfile “pod 'nSure', :path => 'LocalPods/nSure'“ and run pod install
  2. Drag and drop NSureSDK.h and NSureSDK.m from ReactNative > Resources into the Xcode workspace
    In NSureSDK.h change the conditional import to just “#import <React/RCTBridgeModule.h>“
  3. Add dependency AdSupport in the Xcode General tab under Frameworks, Libraries and Embedded Content
  4. In the Xcode Build Settings tab add -framework “nSure” to the Other Linker Flags
    Follow the remaining steps in the docs as is.
  5. Call `nsureSDK.sharedInstanceWithAppID` to get the `deviceId`

Android:

  1. Create a ‘libs’ folder in the android app and drag and drop Nsure.aar into the folder.
    Drag and drop NSureSDK.java and NSureSDKPackage.java into the project source (android > app > src > main > java > com > ‘project name’ >)
  2. Change the first line in NSureSDK.java and NSureSDKPackage.java from “package com.nsurereactnativesample;“ to “package com.<project name>”
    Follow the remaining steps in the docs as is.
  3. Call `nsureSDK.getDeviceId` to get the `deviceId`

Additional Steps:

  1. Pass the `deviceId` in `<CoinflowPurchase>` by implementing the following code:

  2. import { NativeModules } from 'react-native';
    var nsure = NativeModules.NSureSDK;
    var deviceId = "";
    nsureSDK.sharedInstanceWithAppID("9JBW2RHC7JNJN8ZQ", (nsure, _deviceId) => {
    this.deviceId = _deviceId;
    });
  3. In `<CoinflowPurchase>` add the `chargebackProtectionData` property and add information about every purchase that is being made via Coinflow.

SDK Repositories:

Here are the links for the public repositories of the iOS and Android SDKs:

Application ID: 9JBW2RHC7JNJN8ZQ

API
  1. Add the following code to every page on your site:
    <script src="https://sdk.nsureapi.com/sdk.js"> </script>
    <script>
      window.nSureAsyncInit = function(deviceId) {
        window.nSureSDK.init('9JBW2RHC7JNJN8ZQ');
        window.nSureSDK.init({
          appId: '9JBW2RHC7JNJN8ZQ',
          partnerId: <contact Coinflow for this> 
        });
      };
    </script>
    📘 This code will allow us to gather information on the user's device, how they interact with your website, and other info that allows the models to predict the risk of fraud or chargeback for this particular user.
  2. To each of your API calls, add the x-device-id header and pass the value which comes as a result of calling window?.nSureSDK?.getDeviceId() on your website.
    This deviceId is how the system relates the individual request to the information collected about the user's device and session from the SDK added above.
  3. In the Checkout Endpoint and the Redeem Transaction Endpoint, pass the chargebackProtectionData.
    📘 This information provides information about what is being purchased, which allows the AI models to determine the risk of chargeback for this particular purchase.

chargebackProtectionData

🚧

The more information that you pass here the better the authorization rates will be, so it is in your best interest to supply as much information as possible.

{
  /**
   * The name of the product
   */
  productName: string;
  /**
   * The product type. Possible values include: inGameProduct, gameOfSkill, dataStorage, computingResources, sportsTicket, eSportsTicket, musicTicket, conferenceTicket, virtualSportsTicket, virtualESportsTicket, virtualMusicTicket, virtualConferenceTicket, alcohol, DLC, subscription, fundACause, realEstate, computingContract, digitalArt, topUp
   */
  productType: 'inGameProduct' |
    'gameOfSkill' |
    'dataStorage' |
    'computingResources' |
    'sportsTicket' |
    'eSportsTicket' |
    'musicTicket' |
    'conferenceTicket' |
    'virtualSportsTicket' |
    'virtualESportsTicket' |
    'virtualMusicTicket' |
    'virtualConferenceTicket' |
    'alcohol' |
    'DLC' |
    'subscription' |
    'fundACause' |
    'realEstate' |
    'computingContract' |
    'digitalArt' |
    'topUp';
  /**
   * The number of units sold
   */
  quantity: number;
  /**
   * Any additional data that the store can provide on the product, e.g. description, link to image, etc.
   */
  rawProductData?: { [key: string]: any };
}