> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coinflow.cash/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coinflow.cash/_mcp/server.

# 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

> **Warning**
>
> Complete these steps before starting the integration.

#### Create your sandbox account

[Register](https://sandbox-merchant.coinflow.cash/register) or [login](https://sandbox-merchant.coinflow.cash/login) to your sandbox merchant account

#### Generate API keys

[Create a sandbox API key](https://sandbox-merchant.coinflow.cash/api-keys) for authentication

#### Confirm your settlement location

By default, funds settle to your [Coinflow Wallet](/guides/checkout/settlement-locations/settlement-to-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](/guides/checkout/settlement-locations) for the available options.

## Quick Reference

#### Authorization Headers

| Header                        | Description                                                                                                     |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `Authorization`               | Your API key from [the merchant dashboard](https://sandbox-merchant.coinflow.cash/api-keys)                     |
| `x-coinflow-auth-user-id`     | Unique customer ID from your system                                                                             |
| `x-coinflow-auth-session-key` | [JWT token](/api-reference/api-reference/authentication/get-session-key) authorizing the payer (valid 24 hours) |

#### Helpful Resources

* [Test card numbers for sandbox](/guides/checkout/testing/testing-credit-cards)
* [Checkout webhooks](/guides/developer-resources/webhooks/checkout-webhooks)
* [Custom branding](/guides/developer-resources/custom-branding)

---

## Choose Your Implementation

#### React SDK

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

### Step 1: Install the SDK

```bash
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](https://api-sandbox.coinflow.cash/api/auth/session-key)

```curl
curl https://api-sandbox.coinflow.cash/api/auth/session-key \
     -H "x-coinflow-auth-user-id: <apiKey>"
```

```python
import requests

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

headers = {"x-coinflow-auth-user-id": "<apiKey>"}

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

print(response.json())
```

```javascript
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {method: 'GET', headers: {'x-coinflow-auth-user-id': '<apiKey>'}};

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

```go
package main

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

func main() {

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

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

	req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")

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

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

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

}
```

```ruby
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>'

response = http.request(request)
puts response.read_body
```

```java
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>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

echo $response->getBody();
```

```csharp
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>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-coinflow-auth-user-id": "<apiKey>"]

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

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)

```json
{
  "key": "string"
}
```

> **Warning**
>
> 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](https://api-sandbox.coinflow.cash/api/checkout/jwt-token)

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

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{}
```

### Step 4: Render the checkout component

```tsx
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](/guides/developer-resources/custom-branding) to match your brand from [your dashboard](https://sandbox-merchant.coinflow.cash/theme)
2. [Whitelist your domain](https://sandbox-merchant.coinflow.cash/frame-ancestors) to prevent unauthorized embedding

#### Checkout Link

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

### Step 1: Generate the checkout link

### Request

POST [https://api-sandbox.coinflow.cash/api/checkout/link](https://api-sandbox.coinflow.cash/api/checkout/link)

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

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{
  "link": "string"
}
```

### Step 2: Use the checkout link

**Embed in an iframe**

```html
<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:

```javascript
window.addEventListener('message', (event) => {
  // Use 'https://coinflow.cash' in production.
  if (event.origin !== 'https://sandbox.coinflow.cash') return;
  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](/guides/developer-resources/custom-branding) to match your brand from [your dashboard](https://sandbox-merchant.coinflow.cash/theme)
2. [Whitelist your domain](https://sandbox-merchant.coinflow.cash/frame-ancestors) 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](https://api-sandbox.coinflow.cash/api/auth/session-key)

```curl
curl https://api-sandbox.coinflow.cash/api/auth/session-key \
     -H "x-coinflow-auth-user-id: <apiKey>"
```

```python
import requests

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

headers = {"x-coinflow-auth-user-id": "<apiKey>"}

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

print(response.json())
```

```javascript
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {method: 'GET', headers: {'x-coinflow-auth-user-id': '<apiKey>'}};

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

```go
package main

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

func main() {

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

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

	req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")

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

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

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

}
```

```ruby
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>'

response = http.request(request)
puts response.read_body
```

```java
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>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

echo $response->getBody();
```

```csharp
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>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-coinflow-auth-user-id": "<apiKey>"]

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

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)

```json
{
  "key": "string"
}
```

### Step 2: Get pricing totals

Show the customer a quote including all fees.

### Request

POST [https://api-sandbox.coinflow.cash/api/checkout/totals/\{merchantId}](https://api-sandbox.coinflow.cash/api/checkout/totals/\{merchantId})

```curl
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"
  }
}'
```

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{
  "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "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"
      },
      "rebate": {
        "cents": 1,
        "currency": "USD"
      },
      "invoicedRebate": {
        "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"
    },
    "rebate": {
      "cents": 1,
      "currency": "USD"
    },
    "invoicedRebate": {
      "cents": 1,
      "currency": "USD"
    }
  }
}
```

### Step 3: Tokenize the credit card

Securely collect and tokenize the card number. See [PCI-compliant card tokenization](/recipes/recipes/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](https://api-sandbox.coinflow.cash/api/checkout/jwt-token)

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

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{}
```

### Step 5: Process the payment

**For new cards:**

### Request

POST [https://api-sandbox.coinflow.cash/api/checkout/card/\{merchantId}](https://api-sandbox.coinflow.cash/api/checkout/card/\{merchantId})

```curl
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"
  }
}'
```

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

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

**For saved cards:**

Re-tokenize the saved card with CVV first (see [card tokenization docs](/recipes/recipes/pci-compliant-card-tokenization)), then:

### Request

POST [https://api-sandbox.coinflow.cash/api/checkout/token/\{merchantId}](https://api-sandbox.coinflow.cash/api/checkout/token/\{merchantId})

```curl
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"
}'
```

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{
  "paymentId": "string"
}
```

### Step 6: Verify the payment (optional)

### Request

GET [https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/\{paymentId}](https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/\{paymentId})

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

```python
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())
```

```javascript
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);
}
```

```go
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))

}
```

```ruby
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
```

```java
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
<?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();
```

```csharp
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);
```

```swift
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)

```json
{
  "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"
      }
    },
    "authCodeDetails": {
      "code": "string",
      "title": "string",
      "message": "string",
      "action": "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",
      "threeDSProvider": "bt",
      "authenticationStatusReasonCode": "string",
      "errorResponse": {
        "threeDSecureResponse": {
          "transStatusReason": "string",
          "transStatus": "string"
        }
      },
      "cavv": "string",
      "eci": "string",
      "dsTransactionId": "string",
      "acsTransactionId": "string",
      "version": "string"
    },
    "firstName": "string",
    "lastName": "string",
    "nameOnFile": "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",
      "normalizedIssuer": "string",
      "bin": "string"
    },
    "ipLocation": {
      "lat": "string",
      "lon": "string",
      "country": "string",
      "region": "string",
      "isp": "string",
      "city": "string",
      "zip": "string",
      "proxy": true,
      "mobile": true,
      "hosting": 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.

```tsx
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](/guides/checkout/payment-security-risk-management/fraud-protection/implement-chargeback-protection) guide.

---

## Next Steps

#### [Test Your Integration](/guides/checkout/testing/testing-credit-cards)

Use sandbox test cards to verify your implementation

#### [Configure Webhooks](/guides/developer-resources/webhooks/checkout-webhooks)

Receive real-time payment notifications

#### [Go Live](https://merchant.coinflow.cash/register)

Create your production merchant account

#### [API Reference](/api-reference/api-reference/checkout/card-checkout)

Explore the complete API documentation