One-Time Purchase Integration
This guide walks you through integrating Coinflow’s checkout to accept one-time card purchases. Funds settle to your Coinflow Wallet by default. Choose from three implementation methods.
Prerequisites
Complete these steps before starting the integration.
Create your sandbox account
Register or login to your sandbox merchant account
Generate API keys
Create a sandbox API key for authentication
Confirm your settlement location
By default, funds settle to your Coinflow Wallet — managed by Coinflow, no additional setup required.
Advanced: Alternative settlement locations
If you want to settle directly to a destination you control, see Settlement Locations for the available options.
Quick Reference
Authorization Headers
| Header | Description |
|---|---|
Authorization |
Your API key from the merchant dashboard |
x-coinflow-auth-user-id |
Unique customer ID from your system |
x-coinflow-auth-session-key |
JWT token authorizing the payer (valid 24 hours) |
Helpful Resources
Choose Your Implementation
React SDK
Best for React applications. Provides a pre-built checkout component.
Step 1: Install the SDK
npm install @coinflowlabs/react
Step 2: Generate a session key
Create a JWT token to authorize the payer. Call this from your backend.
Request
GET https://api-sandbox.coinflow.cash/api/auth/session-key
curl https://api-sandbox.coinflow.cash/api/auth/session-key \
-H "x-coinflow-auth-user-id: <apiKey>" \
-H "Content-Type: application/json"
import requests
url = "https://api-sandbox.coinflow.cash/api/auth/session-key"
payload = {}
headers = {
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {
method: 'GET',
headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
body: '{}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/auth/session-key"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/auth/session-key")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/auth/session-key")
.header("x-coinflow-auth-user-id", "<apiKey>")
.header("Content-Type", "application/json")
.body("{}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/auth/session-key', [
'body' => '{}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-user-id' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/auth/session-key");
var request = new RestRequest(Method.GET);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/auth/session-key")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"key": "a1b2c3d4e5f67890abcdef1234567890"
}
Session keys expire after 24 hours. Refresh them before expiration.
Step 3: Tokenize checkout parameters
Encrypt checkout parameters to prevent tampering. Call this from your backend.
Request
POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token \
-H "Authorization: <apiKey>" \
-H "Content-Type: application/json" \
-d '{}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"
payload = {}
headers = {
"Authorization": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token';
const options = {
method: 'POST',
headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
body: '{}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
.header("Authorization", "<apiKey>")
.header("Content-Type", "application/json")
.body("{}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token', [
'body' => '{}',
'headers' => [
'Authorization' => '<apiKey>',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/jwt-token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"Authorization": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/jwt-token")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{}
Step 4: Render the checkout component
import { CoinflowPurchase, Currency } from '@coinflowlabs/react';
function Checkout() {
return (
<CoinflowPurchase
merchantId="your-merchant-id"
env="sandbox"
sessionKey="SESSION_KEY_FROM_STEP_2"
jwtToken="JWT_TOKEN_FROM_STEP_3"
subtotal={{ cents: 500, currency: Currency.USD }}
email="customer@example.com"
webhookInfo={{
itemName: "sword",
price: "10.99"
}}
chargebackProtectionData={[{
productName: 'Sword',
productType: 'inGameProduct',
quantity: 1,
rawProductData: {
productID: "sword12345",
productDescription: "A legendary sword"
}
}]}
onSuccess={(paymentId) => {
console.log('Payment successful:', paymentId);
// Redirect user to success page
}}
/>
);
}
Step 5: Configure your dashboard
- Customize the UI to match your brand from your dashboard
- Whitelist your domain 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
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/link \
-H "x-coinflow-auth-user-id: <apiKey>" \
-H "Content-Type: application/json" \
-d '{}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/link"
payload = {}
headers = {
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/link';
const options = {
method: 'POST',
headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
body: '{}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/link"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/link")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/link")
.header("x-coinflow-auth-user-id", "<apiKey>")
.header("Content-Type", "application/json")
.body("{}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/link', [
'body' => '{}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-user-id' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/link");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/link")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"link": "string"
}
Step 2: Use the checkout link
Embed in an iframe
<iframe
allow="payment"
src="CHECKOUT_LINK_FROM_STEP_1"
style="width: 100%; height: 600px; border: none;"
/>
Step 3: Handle success events
Listen for payment completion when using an iframe:
window.addEventListener('message', (event) => {
if (typeof event.data === 'string') {
const data = JSON.parse(event.data);
if (data.data === 'success') {
console.log('Payment ID:', data.info.paymentId);
// Handle successful payment
}
}
});
Step 4: Configure your dashboard
- Customize the UI to match your brand from your dashboard
- Whitelist your domain to prevent unauthorized embedding
API Only
Best for custom checkout UIs. Full control over the payment flow.
Step 1: Get a session key
Authorize the payer with a JWT token.
Request
GET https://api-sandbox.coinflow.cash/api/auth/session-key
curl https://api-sandbox.coinflow.cash/api/auth/session-key \
-H "x-coinflow-auth-user-id: <apiKey>" \
-H "Content-Type: application/json"
import requests
url = "https://api-sandbox.coinflow.cash/api/auth/session-key"
payload = {}
headers = {
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.get(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/auth/session-key';
const options = {
method: 'GET',
headers: {'x-coinflow-auth-user-id': '<apiKey>', 'Content-Type': 'application/json'},
body: '{}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/auth/session-key"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("x-coinflow-auth-user-id", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/auth/session-key")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-coinflow-auth-user-id"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/auth/session-key")
.header("x-coinflow-auth-user-id", "<apiKey>")
.header("Content-Type", "application/json")
.body("{}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/auth/session-key', [
'body' => '{}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-user-id' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/auth/session-key");
var request = new RestRequest(Method.GET);
request.AddHeader("x-coinflow-auth-user-id", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-user-id": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/auth/session-key")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"key": "a1b2c3d4e5f67890abcdef1234567890"
}
Step 2: Get pricing totals
Show the customer a quote including all fees.
Request
POST https://api-sandbox.coinflow.cash/api/checkout/totals/{merchantId}
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId \
-H "x-coinflow-auth-session-key: <apiKey>" \
-H "Content-Type: application/json" \
-d '{
"subtotal": {
"cents": 1,
"currency": "USD"
}
}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId"
payload = { "subtotal": {
"cents": 1,
"currency": "USD"
} }
headers = {
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId';
const options = {
method: 'POST',
headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
body: '{"subtotal":{"cents":1,"currency":"USD"}}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId"
payload := strings.NewReader("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n }\n}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")
.header("x-coinflow-auth-session-key", "<apiKey>")
.header("Content-Type", "application/json")
.body("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n }\n}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId', [
'body' => '{
"subtotal": {
"cents": 1,
"currency": "USD"
}
}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-session-key' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = ["subtotal": [
"cents": 1,
"currency": "USD"
]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/totals/merchantId")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"card": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"ach": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"fasterPayments": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"sepa": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"pix": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"usdc": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"googlePay": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"applePay": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"credits": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"crypto": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"wire": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"cashApp": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"apa": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"paypal": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"venmo": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"interac": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"settlement": {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"creditCardFees": {
"cents": 1,
"currency": "USD"
},
"chargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"gasFees": {
"cents": 1,
"currency": "USD"
},
"fxFees": {
"cents": 1,
"currency": "USD"
},
"total": {
"cents": 1,
"currency": "USD"
},
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
},
"basis": {
"cents": 1,
"currency": "USD"
},
"exchangeRate": 1.1,
"networkFees": {
"cents": 1,
"currency": "USD"
},
"payInFees": {
"cents": 1,
"currency": "USD"
},
"reserve": {
"cents": 1,
"currency": "USD"
},
"merchantPaidCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidGasFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidFxFees": {
"cents": 1,
"currency": "USD"
},
"merchantPaidNetworkFees": {
"cents": 1,
"currency": "USD"
},
"invoicedCreditCardFees": {
"cents": 1,
"currency": "USD"
},
"invoicedChargebackProtectionFees": {
"cents": 1,
"currency": "USD"
},
"invoicedGasFees": {
"cents": 1,
"currency": "USD"
},
"invoicedFxFees": {
"cents": 1,
"currency": "USD"
},
"invoicedNetworkFees": {
"cents": 1,
"currency": "USD"
}
}
}
Step 3: Tokenize the credit card
Securely collect and tokenize the card number. See PCI-compliant card tokenization for implementation details.
Step 4: Tokenize checkout parameters
Encrypt checkout parameters to prevent tampering.
Request
POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/jwt-token \
-H "Authorization: <apiKey>" \
-H "Content-Type: application/json" \
-d '{}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"
payload = {}
headers = {
"Authorization": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token';
const options = {
method: 'POST',
headers: {Authorization: '<apiKey>', 'Content-Type': 'application/json'},
body: '{}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/jwt-token"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/jwt-token")
.header("Authorization", "<apiKey>")
.header("Content-Type", "application/json")
.body("{}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/jwt-token', [
'body' => '{}',
'headers' => [
'Authorization' => '<apiKey>',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/jwt-token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"Authorization": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/jwt-token")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{}
Step 5: Process the payment
For new cards:
Request
POST https://api-sandbox.coinflow.cash/api/checkout/card/{merchantId}
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/card/merchantId \
-H "x-coinflow-auth-session-key: <apiKey>" \
-H "Content-Type: application/json" \
-d '{
"subtotal": {
"cents": 1,
"currency": "USD"
},
"card": {
"cardToken": "string",
"expYear": "string",
"expMonth": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"address1": "string",
"city": "string",
"country": "string"
}
}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId"
payload = {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"card": {
"cardToken": "string",
"expYear": "string",
"expMonth": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"address1": "string",
"city": "string",
"country": "string"
}
}
headers = {
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/card/merchantId';
const options = {
method: 'POST',
headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
body: '{"subtotal":{"cents":1,"currency":"USD"},"card":{"cardToken":"string","expYear":"string","expMonth":"string","email":"string","firstName":"string","lastName":"string","address1":"string","city":"string","country":"string"}}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId"
payload := strings.NewReader("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"card\": {\n \"cardToken\": \"string\",\n \"expYear\": \"string\",\n \"expMonth\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"address1\": \"string\",\n \"city\": \"string\",\n \"country\": \"string\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"card\": {\n \"cardToken\": \"string\",\n \"expYear\": \"string\",\n \"expMonth\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"address1\": \"string\",\n \"city\": \"string\",\n \"country\": \"string\"\n }\n}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")
.header("x-coinflow-auth-session-key", "<apiKey>")
.header("Content-Type", "application/json")
.body("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"card\": {\n \"cardToken\": \"string\",\n \"expYear\": \"string\",\n \"expMonth\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"address1\": \"string\",\n \"city\": \"string\",\n \"country\": \"string\"\n }\n}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/card/merchantId', [
'body' => '{
"subtotal": {
"cents": 1,
"currency": "USD"
},
"card": {
"cardToken": "string",
"expYear": "string",
"expMonth": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"address1": "string",
"city": "string",
"country": "string"
}
}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-session-key' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/card/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"card\": {\n \"cardToken\": \"string\",\n \"expYear\": \"string\",\n \"expMonth\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"address1\": \"string\",\n \"city\": \"string\",\n \"country\": \"string\"\n }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [
"subtotal": [
"cents": 1,
"currency": "USD"
],
"card": [
"cardToken": "string",
"expYear": "string",
"expMonth": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"address1": "string",
"city": "string",
"country": "string"
]
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/card/merchantId")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"paymentId": "string",
"authorizationExpiration": "string"
}
For saved cards:
Re-tokenize the saved card with CVV first (see card tokenization docs), then:
Request
POST https://api-sandbox.coinflow.cash/api/checkout/token/{merchantId}
curl -X POST https://api-sandbox.coinflow.cash/api/checkout/token/merchantId \
-H "x-coinflow-auth-session-key: <apiKey>" \
-H "Content-Type: application/json" \
-d '{
"subtotal": {
"cents": 1,
"currency": "USD"
},
"token": "string"
}'
import requests
url = "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId"
payload = {
"subtotal": {
"cents": 1,
"currency": "USD"
},
"token": "string"
}
headers = {
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/checkout/token/merchantId';
const options = {
method: 'POST',
headers: {'x-coinflow-auth-session-key': '<apiKey>', 'Content-Type': 'application/json'},
body: '{"subtotal":{"cents":1,"currency":"USD"},"token":"string"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId"
payload := strings.NewReader("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"token\": \"string\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-coinflow-auth-session-key", "<apiKey>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-coinflow-auth-session-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"token\": \"string\"\n}"
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.post("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")
.header("x-coinflow-auth-session-key", "<apiKey>")
.header("Content-Type", "application/json")
.body("{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"token\": \"string\"\n}")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api-sandbox.coinflow.cash/api/checkout/token/merchantId', [
'body' => '{
"subtotal": {
"cents": 1,
"currency": "USD"
},
"token": "string"
}',
'headers' => [
'Content-Type' => 'application/json',
'x-coinflow-auth-session-key' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/checkout/token/merchantId");
var request = new RestRequest(Method.POST);
request.AddHeader("x-coinflow-auth-session-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"subtotal\": {\n \"cents\": 1,\n \"currency\": \"USD\"\n },\n \"token\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import Foundation
let headers = [
"x-coinflow-auth-session-key": "<apiKey>",
"Content-Type": "application/json"
]
let parameters = [
"subtotal": [
"cents": 1,
"currency": "USD"
],
"token": "string"
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/checkout/token/merchantId")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"paymentId": "string"
}
Step 6: Verify the payment (optional)
Request
GET https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/{paymentId}
curl https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId \
-H "Authorization: <apiKey>"
import requests
url = "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId"
headers = {"Authorization": "<apiKey>"}
response = requests.get(url, headers=headers)
print(response.json())
const url = 'https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId';
const options = {method: 'GET', headers: {Authorization: '<apiKey>'}};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<apiKey>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
require 'uri'
require 'net/http'
url = URI("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<apiKey>'
response = http.request(request)
puts response.read_body
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.get("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")
.header("Authorization", "<apiKey>")
.asString();
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId', [
'headers' => [
'Authorization' => '<apiKey>',
],
]);
echo $response->getBody();
using RestSharp;
var client = new RestClient("https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
import Foundation
let headers = ["Authorization": "<apiKey>"]
let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.coinflow.cash/api/merchant/payments/enhanced/paymentId")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Response (200)
{
"info": {
"deviceInfo": {
"ua": "string",
"browser": {
"name": "string",
"version": "string",
"major": "string"
},
"device": {
"model": "string",
"type": "string",
"vendor": "string"
},
"engine": {
"name": "string",
"version": "string"
},
"os": {
"name": "string",
"version": "string"
},
"cpu": {
"architecture": "string"
}
},
"secureDS": {
"transactionId": "string",
"customer": "string",
"merchantId": "string",
"cardType": "VISA",
"authenticationStatus": "Frictionless",
"challengeState": "NotApplicable",
"createdAt": "2024-01-15T09:30:00Z",
"updatedAt": "2024-01-15T09:30:00Z",
"authenticationStatusReasonCode": "string",
"errorResponse": {
"threeDSecureResponse": {
"transStatusReason": "string",
"transStatus": "string"
}
},
"cavv": "string",
"eci": "string",
"dsTransactionId": "string",
"acsTransactionId": "string",
"version": "string"
},
"firstName": "string",
"lastName": "string",
"streetAddress": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string",
"email": "string",
"bin": "string",
"ip": "string",
"userAgent": "string",
"expMonth": "string",
"expYear": "string",
"eci": "string",
"avsResponseCode": "A",
"cvvResponseCode": "M",
"binLocation": {
"cardType": "credit",
"cardName": "string",
"cardSegment": "consumer",
"country": "AF",
"bankName": "string"
},
"ipLocation": {
"zip": "string",
"city": "string",
"isp": "string",
"region": "string",
"country": "string",
"lon": "string",
"lat": "string",
"hosting": true,
"mobile": true,
"proxy": true
},
"declineExplanation": {
"summary": "string",
"explanation": "string",
"keyFactors": [
"string"
],
"remediation": "string",
"model": "string",
"promptVersion": 1.1,
"generatedAt": "2024-01-15T09:30:00Z"
},
"declineExplanationFailure": {
"reason": "string",
"failedAt": "2024-01-15T09:30:00Z"
},
"orchestrationInfo": {
"ruleId": "string",
"ruleUsed": "string",
"resolvedPath": "string",
"graphTraversal": [
{
"nodeId": "string",
"nodeType": "action",
"outcome": "string",
"operation": "string"
}
],
"processorList": [
"payarc"
],
"successfulProcessor": "payarc",
"usedFallback": true,
"failedAttempts": [
{
"processor": "payarc",
"paymentId": "string",
"authCode": "string"
}
]
}
}
}
Chargeback Protection
Coinflow handles fraud detection and chargeback indemnification automatically. To enable it, render the <CoinflowPurchaseProtection> component on every page of your site — that’s all you need to do. Coinflow collects the signals it needs from there.
import { CoinflowPurchaseProtection } from '@coinflowlabs/react';
// Mount on every page of your app
<CoinflowPurchaseProtection merchantId="your-merchant-id" />
Once the component is mounted, Coinflow handles device fingerprinting, payer scoring, lifecycle event capture, and approval/decline decisions on every transaction. Approved transactions are covered by chargeback indemnification.
For React Native and mobile-app integrations, see the in-depth Implement Chargeback Protection guide.
Next Steps
Test Your Integration
Use sandbox test cards to verify your implementation
Configure Webhooks
Receive real-time payment notifications
Go Live
Create your production merchant account
API Reference
Explore the complete API documentation