Powered by Coinflow
Payments · Documentation
Operational

One-Time Purchase Integration

This guide walks you through integrating Coinflow’s checkout to accept one-time card purchases. Funds settle to your Coinflow Wallet by default. Choose from three implementation methods.

Prerequisites

Complete these steps before starting the integration.

Create your sandbox account

Register or login to your sandbox merchant account

Generate API keys

Create a sandbox API key for authentication

Confirm your settlement location

By default, funds settle to your Coinflow Wallet — managed by Coinflow, no additional setup required.

Advanced: Alternative settlement locations

If you want to settle directly to a destination you control, see Settlement Locations for the available options.

Quick Reference

Authorization Headers

Header Description
Authorization Your API key from the merchant dashboard
x-coinflow-auth-user-id Unique customer ID from your system
x-coinflow-auth-session-key JWT token authorizing the payer (valid 24 hours)

Helpful Resources


Choose Your Implementation

React SDK

Best for React applications. Provides a pre-built checkout component.

Step 1: Install the SDK

npm install @coinflowlabs/react

Step 2: Generate a session key

Create a JWT token to authorize the payer. Call this from your backend.

Request

GET https://api-sandbox.coinflow.cash/api/auth/session-key

curl https://api-sandbox.coinflow.cash/api/auth/session-key \
     -H "x-coinflow-auth-user-id: <apiKey>" \
     -H "Content-Type: application/json"
import requests

url = "https://api-sandbox.coinflow.cash/api/auth/session-key"

payload = {}
headers = {
    "x-coinflow-auth-user-id": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.get(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {
  method: 'GET',
  headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/auth/session-key"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("GET", url, payload)

	req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/auth/session-key")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/auth/session-key")
  .header("x-coinflow-auth-user-id", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/auth/session-key', [
  'body' => '{}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-user-id' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/auth/session-key");
var request = new RestRequest(Method.GET);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-user-id": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/auth/session-key")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "key": "a1b2c3d4e5f67890abcdef1234567890"
}

Session keys expire after 24 hours. Refresh them before expiration.

Step 3: Tokenize checkout parameters

Encrypt checkout parameters to prevent tampering. Call this from your backend.

Request

POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token \
     -H "Authorization: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"

payload = {}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token', [
  'body' => '{}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/jwt-token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/jwt-token")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{}

Step 4: Render the checkout component

import { CoinflowPurchase, Currency } from '@coinflowlabs/react';

function Checkout() {
  return (
    <CoinflowPurchase
      merchantId="your-merchant-id"
      env="sandbox"
      sessionKey="SESSION_KEY_FROM_STEP_2"
      jwtToken="JWT_TOKEN_FROM_STEP_3"
      subtotal={{ cents: 500, currency: Currency.USD }}
      email="customer@example.com"
      webhookInfo={{
        itemName: "sword",
        price: "10.99"
      }}
      chargebackProtectionData={[{
        productName: 'Sword',
        productType: 'inGameProduct',
        quantity: 1,
        rawProductData: {
          productID: "sword12345",
          productDescription: "A legendary sword"
        }
      }]}
      onSuccess={(paymentId) => {
        console.log('Payment successful:', paymentId);
        // Redirect user to success page
      }}
    />
  );
}

Step 5: Configure your dashboard

  1. Customize the UI to match your brand from your dashboard
  2. Whitelist your domain to prevent unauthorized embedding

Best for simple integrations. Generate a hosted checkout URL to redirect users or embed in an iframe.

Request

POST https://api-sandbox.coinflow.cash/api/checkout/link

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/link \
     -H "x-coinflow-auth-user-id: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/link"

payload = {}
headers = {
    "x-coinflow-auth-user-id": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/link';
const options = {
  method: 'POST',
  headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/link"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/link")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/link")
  .header("x-coinflow-auth-user-id", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/link', [
  'body' => '{}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-user-id' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/link");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-user-id": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/link")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "link": "string"
}

Embed in an iframe

<iframe
  allow="payment"
  src="CHECKOUT_LINK_FROM_STEP_1"
  style="width: 100%; height: 600px; border: none;"
/>

Step 3: Handle success events

Listen for payment completion when using an iframe:

window.addEventListener('message', (event) => {
  if (typeof event.data === 'string') {
    const data = JSON.parse(event.data);
    if (data.data === 'success') {
      console.log('Payment ID:', data.info.paymentId);
      // Handle successful payment
    }
  }
});

Step 4: Configure your dashboard

  1. Customize the UI to match your brand from your dashboard
  2. Whitelist your domain to prevent unauthorized embedding

API Only

Best for custom checkout UIs. Full control over the payment flow.

Step 1: Get a session key

Authorize the payer with a JWT token.

Request

GET https://api-sandbox.coinflow.cash/api/auth/session-key

curl https://api-sandbox.coinflow.cash/api/auth/session-key \
     -H "x-coinflow-auth-user-id: <apiKey>" \
     -H "Content-Type: application/json"
import requests

url = "https://api-sandbox.coinflow.cash/api/auth/session-key"

payload = {}
headers = {
    "x-coinflow-auth-user-id": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.get(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {
  method: 'GET',
  headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/auth/session-key"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("GET", url, payload)

	req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/auth/session-key")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/auth/session-key")
  .header("x-coinflow-auth-user-id", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/auth/session-key', [
  'body' => '{}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-user-id' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/auth/session-key");
var request = new RestRequest(Method.GET);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-user-id": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/auth/session-key")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "key": "a1b2c3d4e5f67890abcdef1234567890"
}

Step 2: Get pricing totals

Show the customer a quote including all fees.

Request

POST https://api-sandbox.coinflow.cash/api/checkout/totals/{merchantId}

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId \
     -H "x-coinflow-auth-session-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  }
}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId"

payload = { "subtotal": {
        "cents": 1,
        "currency": "USD"
    } }
headers = {
    "x-coinflow-auth-session-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId';
const options = {
  method: 'POST',
  headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"subtotal":{"cents":1,"currency":"USD"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId"

	payload := strings.NewReader("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  }\n}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")
  .header("x-coinflow-auth-session-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  }\n}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId', [
  'body' => '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-session-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-session-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = ["subtotal": [
    "cents": 1,
    "currency": "USD"
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "card": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "ach": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "fasterPayments": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "sepa": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "pix": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "usdc": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "googlePay": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "applePay": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "credits": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "crypto": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "wire": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "cashApp": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "apa": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "paypal": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "venmo": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  },
  "interac": {
    "subtotal": {
      "cents": 1,
      "currency": "USD"
    },
    "creditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "chargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "gasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "fxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "total": {
      "cents": 1,
      "currency": "USD"
    },
    "settlement": {
      "subtotal": {
        "cents": 1,
        "currency": "USD"
      },
      "creditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "chargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "gasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "fxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "total": {
        "cents": 1,
        "currency": "USD"
      },
      "networkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "payInFees": {
        "cents": 1,
        "currency": "USD"
      },
      "reserve": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "merchantPaidNetworkFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedCreditCardFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedChargebackProtectionFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedGasFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedFxFees": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedNetworkFees": {
        "cents": 1,
        "currency": "USD"
      }
    },
    "basis": {
      "cents": 1,
      "currency": "USD"
    },
    "exchangeRate": 1.1,
    "networkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "payInFees": {
      "cents": 1,
      "currency": "USD"
    },
    "reserve": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "merchantPaidNetworkFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedCreditCardFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedChargebackProtectionFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedGasFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedFxFees": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedNetworkFees": {
      "cents": 1,
      "currency": "USD"
    }
  }
}

Step 3: Tokenize the credit card

Securely collect and tokenize the card number. See PCI-compliant card tokenization for implementation details.

Step 4: Tokenize checkout parameters

Encrypt checkout parameters to prevent tampering.

Request

POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token \
     -H "Authorization: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"

payload = {}
headers = {
    "Authorization": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token';
const options = {
  method: 'POST',
  headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
  .header("Authorization", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token', [
  'body' => '{}',
  'headers' => [
    'Authorization' => '<apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/jwt-token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "Authorization": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/jwt-token")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{}

Step 5: Process the payment

For new cards:

Request

POST https://api-sandbox.coinflow.cash/api/checkout/card/{merchantId}

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/card/merchantId \
     -H "x-coinflow-auth-session-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  },
  "card": {
    "cardToken": "string",
    "expYear": "string",
    "expMonth": "string",
    "email": "string",
    "firstName": "string",
    "lastName": "string",
    "address1": "string",
    "city": "string",
    "country": "string"
  }
}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId"

payload = {
    "subtotal": {
        "cents": 1,
        "currency": "USD"
    },
    "card": {
        "cardToken": "string",
        "expYear": "string",
        "expMonth": "string",
        "email": "string",
        "firstName": "string",
        "lastName": "string",
        "address1": "string",
        "city": "string",
        "country": "string"
    }
}
headers = {
    "x-coinflow-auth-session-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/card/merchantId';
const options = {
  method: 'POST',
  headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"subtotal":{"cents":1,"currency":"USD"},"card":{"cardToken":"string","expYear":"string","expMonth":"string","email":"string","firstName":"string","lastName":"string","address1":"string","city":"string","country":"string"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId"

	payload := strings.NewReader("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"card\": {\n    \"cardToken\": \"string\",\n    \"expYear\": \"string\",\n    \"expMonth\": \"string\",\n    \"email\": \"string\",\n    \"firstName\": \"string\",\n    \"lastName\": \"string\",\n    \"address1\": \"string\",\n    \"city\": \"string\",\n    \"country\": \"string\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"card\": {\n    \"cardToken\": \"string\",\n    \"expYear\": \"string\",\n    \"expMonth\": \"string\",\n    \"email\": \"string\",\n    \"firstName\": \"string\",\n    \"lastName\": \"string\",\n    \"address1\": \"string\",\n    \"city\": \"string\",\n    \"country\": \"string\"\n  }\n}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")
  .header("x-coinflow-auth-session-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"card\": {\n    \"cardToken\": \"string\",\n    \"expYear\": \"string\",\n    \"expMonth\": \"string\",\n    \"email\": \"string\",\n    \"firstName\": \"string\",\n    \"lastName\": \"string\",\n    \"address1\": \"string\",\n    \"city\": \"string\",\n    \"country\": \"string\"\n  }\n}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/card/merchantId', [
  'body' => '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  },
  "card": {
    "cardToken": "string",
    "expYear": "string",
    "expMonth": "string",
    "email": "string",
    "firstName": "string",
    "lastName": "string",
    "address1": "string",
    "city": "string",
    "country": "string"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-session-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"card\": {\n    \"cardToken\": \"string\",\n    \"expYear\": \"string\",\n    \"expMonth\": \"string\",\n    \"email\": \"string\",\n    \"firstName\": \"string\",\n    \"lastName\": \"string\",\n    \"address1\": \"string\",\n    \"city\": \"string\",\n    \"country\": \"string\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-session-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "subtotal": [
    "cents": 1,
    "currency": "USD"
  ],
  "card": [
    "cardToken": "string",
    "expYear": "string",
    "expMonth": "string",
    "email": "string",
    "firstName": "string",
    "lastName": "string",
    "address1": "string",
    "city": "string",
    "country": "string"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "paymentId": "string",
  "authorizationExpiration": "string"
}

For saved cards:

Re-tokenize the saved card with CVV first (see card tokenization docs), then:

Request

POST https://api-sandbox.coinflow.cash/api/checkout/token/{merchantId}

curl -X POST https://api-sandbox.coinflow.cash/api/checkout/token/merchantId \
     -H "x-coinflow-auth-session-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  },
  "token": "string"
}'
import requests

url = "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId"

payload = {
    "subtotal": {
        "cents": 1,
        "currency": "USD"
    },
    "token": "string"
}
headers = {
    "x-coinflow-auth-session-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/token/merchantId';
const options = {
  method: 'POST',
  headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"subtotal":{"cents":1,"currency":"USD"},"token":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId"

	payload := strings.NewReader("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"token\": \"string\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"token\": \"string\"\n}"

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")
  .header("x-coinflow-auth-session-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"token\": \"string\"\n}")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/token/merchantId', [
  'body' => '{
  "subtotal": {
    "cents": 1,
    "currency": "USD"
  },
  "token": "string"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-coinflow-auth-session-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"subtotal\": {\n    \"cents\": 1,\n    \"currency\": \"USD\"\n  },\n  \"token\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation

let headers = [
  "x-coinflow-auth-session-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "subtotal": [
    "cents": 1,
    "currency": "USD"
  ],
  "token": "string"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "paymentId": "string"
}

Step 6: Verify the payment (optional)

Request

GET https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/{paymentId}

curl https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId \
     -H "Authorization: <apiKey>"
import requests

url = "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId"

headers = {"Authorization": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")
  .header("Authorization", "<apiKey>")
  .asString();
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId', [
  'headers' => [
    'Authorization' => '<apiKey>',
  ],
]);

echo $response->getBody();
using RestSharp;

var client = new RestClient("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
import Foundation

let headers = ["Authorization": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Response (200)

{
  "info": {
    "deviceInfo": {
      "ua": "string",
      "browser": {
        "name": "string",
        "version": "string",
        "major": "string"
      },
      "device": {
        "model": "string",
        "type": "string",
        "vendor": "string"
      },
      "engine": {
        "name": "string",
        "version": "string"
      },
      "os": {
        "name": "string",
        "version": "string"
      },
      "cpu": {
        "architecture": "string"
      }
    },
    "secureDS": {
      "transactionId": "string",
      "customer": "string",
      "merchantId": "string",
      "cardType": "VISA",
      "authenticationStatus": "Frictionless",
      "challengeState": "NotApplicable",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "authenticationStatusReasonCode": "string",
      "errorResponse": {
        "threeDSecureResponse": {
          "transStatusReason": "string",
          "transStatus": "string"
        }
      },
      "cavv": "string",
      "eci": "string",
      "dsTransactionId": "string",
      "acsTransactionId": "string",
      "version": "string"
    },
    "firstName": "string",
    "lastName": "string",
    "streetAddress": "string",
    "city": "string",
    "state": "string",
    "zip": "string",
    "country": "string",
    "email": "string",
    "bin": "string",
    "ip": "string",
    "userAgent": "string",
    "expMonth": "string",
    "expYear": "string",
    "eci": "string",
    "avsResponseCode": "A",
    "cvvResponseCode": "M",
    "binLocation": {
      "cardType": "credit",
      "cardName": "string",
      "cardSegment": "consumer",
      "country": "AF",
      "bankName": "string"
    },
    "ipLocation": {
      "zip": "string",
      "city": "string",
      "isp": "string",
      "region": "string",
      "country": "string",
      "lon": "string",
      "lat": "string",
      "hosting": true,
      "mobile": true,
      "proxy": true
    },
    "declineExplanation": {
      "summary": "string",
      "explanation": "string",
      "keyFactors": [
        "string"
      ],
      "remediation": "string",
      "model": "string",
      "promptVersion": 1.1,
      "generatedAt": "2024-01-15T09:30:00Z"
    },
    "declineExplanationFailure": {
      "reason": "string",
      "failedAt": "2024-01-15T09:30:00Z"
    },
    "orchestrationInfo": {
      "ruleId": "string",
      "ruleUsed": "string",
      "resolvedPath": "string",
      "graphTraversal": [
        {
          "nodeId": "string",
          "nodeType": "action",
          "outcome": "string",
          "operation": "string"
        }
      ],
      "processorList": [
        "payarc"
      ],
      "successfulProcessor": "payarc",
      "usedFallback": true,
      "failedAttempts": [
        {
          "processor": "payarc",
          "paymentId": "string",
          "authCode": "string"
        }
      ]
    }
  }
}

Chargeback Protection

Coinflow handles fraud detection and chargeback indemnification automatically. To enable it, render the <CoinflowPurchaseProtection> component on every page of your site — that’s all you need to do. Coinflow collects the signals it needs from there.

import { CoinflowPurchaseProtection } from '@coinflowlabs/react';

// Mount on every page of your app
<CoinflowPurchaseProtection merchantId="your-merchant-id" />

Once the component is mounted, Coinflow handles device fingerprinting, payer scoring, lifecycle event capture, and approval/decline decisions on every transaction. Approved transactions are covered by chargeback indemnification.

For React Native and mobile-app integrations, see the in-depth Implement Chargeback Protection guide.


Next Steps

Test Your Integration

Use sandbox test cards to verify your implementation

Configure Webhooks

Receive real-time payment notifications

Go Live

Create your production merchant account

API Reference

Explore the complete API documentation