curl -X GET "https://api-sandbox.paywithsoap.com/api/v1/charges/ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK" \
-H "Authorization: Bearer YOUR_API_KEY"
require 'net/http'
require 'uri'
require 'json'
charge_id = 'ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK'
uri = URI.parse("https://api-sandbox.paywithsoap.com/api/v1/charges/#{charge_id}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
response = http.request(request)
puts response.body
const axios = require('axios');
const getCharge = async (chargeId) => {
try {
const response = await axios.get(`https://api-sandbox.paywithsoap.com/api/v1/charges/${chargeId}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
console.log(response.data);
} catch (error) {
console.error(error);
}
};
getCharge('ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK');
import requests
charge_id = "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"
url = f"https://api-sandbox.paywithsoap.com/api/v1/charges/{charge_id}"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
{
"id": "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"amount_cents": 2999,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"customer": {
"id": "cus_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"first_name": "Sarah",
"last_name": "Johnson"
},
"payment_method": {
"id": "pm_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"payment_type": "card",
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"saved": true,
"fingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"card": {
"last_four": "4242",
"card_brand": "visa",
"card_expiration_month": 12,
"card_expiration_year": 2027,
"card_issuer_country": "US",
"name_on_card": "Sarah Johnson",
"card_type": "credit",
"first_name": "Sarah",
"last_name": "Johnson",
"zip": "10001",
"google_pay": false,
"apple_pay": false,
"bin": "424242"
}
},
"avs_result": "Y",
"cvv_result": "M",
"network_authorization_code": "OK1234",
"processor_charge_id": "proc_5fNqQ8wRyzKp",
"threeds": {
"eci": "05",
"version": "2.2.0",
"liability_shifted": true,
"failure_reason": null,
"status": "success"
}
}
{
"id": "ch_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"amount_cents": 12000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"customer": {
"id": "cus_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"first_name": "Alice",
"last_name": "Brown"
},
"payment_method": {
"id": "pm_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"payment_type": "bank_account",
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"saved": true,
"fingerprint": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
"bank_account": {
"last_four": "1234",
"bank_brand": "chase",
"bank_account_type": "checking",
"bank_account_name": "Alice Brown",
"first_name": "Alice",
"last_name": "Brown"
}
}
}
{
"id": "ch_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"amount_cents": 50000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"customer": {
"id": "cus_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"first_name": "Maya",
"last_name": "Patel"
},
"payment_method": {
"id": "pm_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"payment_type": "crypto_wallet",
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"saved": false,
"fingerprint": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"crypto_wallet": {
"crypto_wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5"
}
}
}
{
"id": "ch_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"amount_cents": 4999,
"transaction_type": "credit",
"currency": "USD",
"status": "failed",
"failure_code": "card_declined",
"failure_message": "The card was declined by the issuing bank.",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"customer": {
"id": "cus_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"first_name": "Jordan",
"last_name": "Lee"
},
"payment_method": {
"id": "pm_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"payment_type": "card",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"saved": false,
"fingerprint": "4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce",
"card": {
"last_four": "0002",
"card_brand": "visa",
"card_expiration_month": 11,
"card_expiration_year": 2028,
"card_issuer_country": "US",
"name_on_card": "Jordan Lee",
"card_type": "credit",
"first_name": "Jordan",
"last_name": "Lee",
"zip": "94110",
"google_pay": false,
"apple_pay": false,
"bin": "400000"
}
},
"avs_result": "N",
"cvv_result": "N",
"network_authorization_code": null,
"processor_charge_id": "proc_DeClInE9876",
"threeds": null
}
Retrieve a Charge
Fetch a single charge by ID, including the customer and payment method used
curl -X GET "https://api-sandbox.paywithsoap.com/api/v1/charges/ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK" \
-H "Authorization: Bearer YOUR_API_KEY"
require 'net/http'
require 'uri'
require 'json'
charge_id = 'ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK'
uri = URI.parse("https://api-sandbox.paywithsoap.com/api/v1/charges/#{charge_id}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
response = http.request(request)
puts response.body
const axios = require('axios');
const getCharge = async (chargeId) => {
try {
const response = await axios.get(`https://api-sandbox.paywithsoap.com/api/v1/charges/${chargeId}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
console.log(response.data);
} catch (error) {
console.error(error);
}
};
getCharge('ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK');
import requests
charge_id = "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"
url = f"https://api-sandbox.paywithsoap.com/api/v1/charges/{charge_id}"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
{
"id": "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"amount_cents": 2999,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"customer": {
"id": "cus_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"first_name": "Sarah",
"last_name": "Johnson"
},
"payment_method": {
"id": "pm_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"payment_type": "card",
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"saved": true,
"fingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"card": {
"last_four": "4242",
"card_brand": "visa",
"card_expiration_month": 12,
"card_expiration_year": 2027,
"card_issuer_country": "US",
"name_on_card": "Sarah Johnson",
"card_type": "credit",
"first_name": "Sarah",
"last_name": "Johnson",
"zip": "10001",
"google_pay": false,
"apple_pay": false,
"bin": "424242"
}
},
"avs_result": "Y",
"cvv_result": "M",
"network_authorization_code": "OK1234",
"processor_charge_id": "proc_5fNqQ8wRyzKp",
"threeds": {
"eci": "05",
"version": "2.2.0",
"liability_shifted": true,
"failure_reason": null,
"status": "success"
}
}
{
"id": "ch_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"amount_cents": 12000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"customer": {
"id": "cus_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"first_name": "Alice",
"last_name": "Brown"
},
"payment_method": {
"id": "pm_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"payment_type": "bank_account",
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"saved": true,
"fingerprint": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
"bank_account": {
"last_four": "1234",
"bank_brand": "chase",
"bank_account_type": "checking",
"bank_account_name": "Alice Brown",
"first_name": "Alice",
"last_name": "Brown"
}
}
}
{
"id": "ch_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"amount_cents": 50000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"customer": {
"id": "cus_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"first_name": "Maya",
"last_name": "Patel"
},
"payment_method": {
"id": "pm_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"payment_type": "crypto_wallet",
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"saved": false,
"fingerprint": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"crypto_wallet": {
"crypto_wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5"
}
}
}
{
"id": "ch_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"amount_cents": 4999,
"transaction_type": "credit",
"currency": "USD",
"status": "failed",
"failure_code": "card_declined",
"failure_message": "The card was declined by the issuing bank.",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"customer": {
"id": "cus_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"first_name": "Jordan",
"last_name": "Lee"
},
"payment_method": {
"id": "pm_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"payment_type": "card",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"saved": false,
"fingerprint": "4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce",
"card": {
"last_four": "0002",
"card_brand": "visa",
"card_expiration_month": 11,
"card_expiration_year": 2028,
"card_issuer_country": "US",
"name_on_card": "Jordan Lee",
"card_type": "credit",
"first_name": "Jordan",
"last_name": "Lee",
"zip": "94110",
"google_pay": false,
"apple_pay": false,
"bin": "400000"
}
},
"avs_result": "N",
"cvv_result": "N",
"network_authorization_code": null,
"processor_charge_id": "proc_DeClInE9876",
"threeds": null
}
status value means, which transitions are possible, and which webhook each one emits, see Checkouts, Charges and Reviews.
Every Soap API request is authenticated with a bearer token in the Authorization header:
Authorization: Bearer YOUR_API_KEY
key_....
Requests with a missing or invalid API key return 422 — never 401 — with a JSON error field, usually {"error": "API key not found."}. Branch on the status code rather than the message: GET /api/v1/device_pings/latest_geo_check does not yet return the same wording.
Never expose your API key in client-side code — it is server-side only.
- Core:
id,amount_cents,transaction_type,currency,status,failure_code,failure_message,created_at,updated_at.failure_codeandfailure_messageare always present andnullunless the charge failed. - Related entities: a flattened
customerobject and apayment_methodobject.payment_methodalways containsid,payment_type,created_at,updated_at,saved, andfingerprint, plus exactly one ofcard,bank_account, orcrypto_wallet(matchingpayment_type). - Processor metadata (card charges only):
avs_result,cvv_result,network_authorization_code,processor_charge_id, and athreedskey that is an object when 3D Secure was performed andnullotherwise (it is omitted entirely on bank and crypto charges).
curl -X GET "https://api-sandbox.paywithsoap.com/api/v1/charges/ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK" \
-H "Authorization: Bearer YOUR_API_KEY"
require 'net/http'
require 'uri'
require 'json'
charge_id = 'ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK'
uri = URI.parse("https://api-sandbox.paywithsoap.com/api/v1/charges/#{charge_id}")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
response = http.request(request)
puts response.body
const axios = require('axios');
const getCharge = async (chargeId) => {
try {
const response = await axios.get(`https://api-sandbox.paywithsoap.com/api/v1/charges/${chargeId}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
console.log(response.data);
} catch (error) {
console.error(error);
}
};
getCharge('ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK');
import requests
charge_id = "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"
url = f"https://api-sandbox.paywithsoap.com/api/v1/charges/{charge_id}"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
{
"id": "ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"amount_cents": 2999,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"customer": {
"id": "cus_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"first_name": "Sarah",
"last_name": "Johnson"
},
"payment_method": {
"id": "pm_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK",
"payment_type": "card",
"created_at": "2026-05-31T10:30:00.000Z",
"updated_at": "2026-05-31T10:30:05.000Z",
"saved": true,
"fingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"card": {
"last_four": "4242",
"card_brand": "visa",
"card_expiration_month": 12,
"card_expiration_year": 2027,
"card_issuer_country": "US",
"name_on_card": "Sarah Johnson",
"card_type": "credit",
"first_name": "Sarah",
"last_name": "Johnson",
"zip": "10001",
"google_pay": false,
"apple_pay": false,
"bin": "424242"
}
},
"avs_result": "Y",
"cvv_result": "M",
"network_authorization_code": "OK1234",
"processor_charge_id": "proc_5fNqQ8wRyzKp",
"threeds": {
"eci": "05",
"version": "2.2.0",
"liability_shifted": true,
"failure_reason": null,
"status": "success"
}
}
{
"id": "ch_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"amount_cents": 12000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"customer": {
"id": "cus_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"first_name": "Alice",
"last_name": "Brown"
},
"payment_method": {
"id": "pm_8tRrL7zXqY3vMnB2wCkPjVgU6sHaDfEy",
"payment_type": "bank_account",
"created_at": "2026-05-31T11:02:14.000Z",
"updated_at": "2026-05-31T11:02:18.000Z",
"saved": true,
"fingerprint": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
"bank_account": {
"last_four": "1234",
"bank_brand": "chase",
"bank_account_type": "checking",
"bank_account_name": "Alice Brown",
"first_name": "Alice",
"last_name": "Brown"
}
}
}
{
"id": "ch_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"amount_cents": 50000,
"transaction_type": "credit",
"currency": "USD",
"status": "succeeded",
"failure_code": null,
"failure_message": null,
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"customer": {
"id": "cus_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"first_name": "Maya",
"last_name": "Patel"
},
"payment_method": {
"id": "pm_3vMnB2wCkPjVgU6sHaDfEy8tRrL7zXqY",
"payment_type": "crypto_wallet",
"created_at": "2026-05-31T12:18:42.000Z",
"updated_at": "2026-05-31T12:18:47.000Z",
"saved": false,
"fingerprint": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
"crypto_wallet": {
"crypto_wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5"
}
}
}
{
"id": "ch_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"amount_cents": 4999,
"transaction_type": "credit",
"currency": "USD",
"status": "failed",
"failure_code": "card_declined",
"failure_message": "The card was declined by the issuing bank.",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"customer": {
"id": "cus_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"first_name": "Jordan",
"last_name": "Lee"
},
"payment_method": {
"id": "pm_FaIl5DxYzNqPkWmV2cBnTjLgU6sHaDfE",
"payment_type": "card",
"created_at": "2026-05-31T13:44:01.000Z",
"updated_at": "2026-05-31T13:44:03.000Z",
"saved": false,
"fingerprint": "4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce",
"card": {
"last_four": "0002",
"card_brand": "visa",
"card_expiration_month": 11,
"card_expiration_year": 2028,
"card_issuer_country": "US",
"name_on_card": "Jordan Lee",
"card_type": "credit",
"first_name": "Jordan",
"last_name": "Lee",
"zip": "94110",
"google_pay": false,
"apple_pay": false,
"bin": "400000"
}
},
"avs_result": "N",
"cvv_result": "N",
"network_authorization_code": null,
"processor_charge_id": "proc_DeClInE9876",
"threeds": null
}
Authorizations
Bearer token authentication using your API key (key_...). Used for every endpoint except POST /api/v1/device_pings.
Path Parameters
Unique identifier of the charge to retrieve.
"ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"
Response
Charge retrieved.
"ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"
Charge amount in cents.
2999
Direction of the charge: credit for deposits (money into the customer balance), debit for withdrawals (money out).
credit, debit "debit"
"USD"
Current state of the charge. Not every value is reachable on every flow or processor: held occurs on withdrawals that place a hold; voided and returned follow a succeeded charge that the processor later reversed; cancelled is processor-specific — a transfer that was accepted (usually pending) and then cancelled by the rail, seen on bank-transfer deposits and payouts — and emits the opt-in checkout.cancelled event (ask Soap whether your rails emit it); refunded is set by a full refund of a succeeded NMI or Rapyd card deposit via POST /api/v1/charges/{id}/refund or the dashboard, and emits the opt-in checkout.refunded event. See the charge lifecycle for the full transition map and which webhook each transition emits.
created, pending, succeeded, failed, held, voided, returned, refunded, cancelled "succeeded"
Machine-readable failure code. Always present; null unless the charge failed (a cancelled charge may also carry one).
null
Human-readable failure reason. Always present; null unless the charge failed (a cancelled charge may also carry one).
null
"2026-05-31T10:30:00.000Z"
"2026-05-31T10:30:05.000Z"
Show child attributes
Show child attributes
Payment method used for the charge. Exactly one of card, bank_account, or crypto_wallet is populated, matching payment_type.
Show child attributes
Show child attributes
Address Verification System result from the processor. Card charges only.
null
CVV verification result from the processor. Card charges only.
null
Authorization code returned by the card network. Card charges only.
null
External processor's identifier for this charge. Card charges only.
null
3D Secure verification details. Card charges only: present as an object when 3DS was performed and as null otherwise. Absent on bank and crypto charges.
Show child attributes
Show child attributes

