Skip to main content
GET
Retrieve a single charge by its ID. The charge must belong to the merchant whose API key is used; otherwise the API responds with a 422 indistinguishable from “not found”, by design. A charge is a single payment attempt, so one checkout can have several. For what each 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:
Your API key is in the Soap Dashboard under the Developers section. It looks like 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.
The response object groups into three field clusters:
  • Core: id, amount_cents, transaction_type, currency, status, failure_code, failure_message, created_at, updated_at. failure_code and failure_message are always present and null unless the charge failed.
  • Related entities: a flattened customer object and a payment_method object. payment_method always contains id, payment_type, created_at, updated_at, saved, and fingerprint, plus exactly one of card, bank_account, or crypto_wallet (matching payment_type).
  • Processor metadata (card charges only): avs_result, cvv_result, network_authorization_code, processor_charge_id, and a threeds key that is an object when 3D Secure was performed and null otherwise (it is omitted entirely on bank and crypto charges).

Authorizations

Authorization
string
header
required

Bearer token authentication using your API key (key_...). Used for every endpoint except POST /api/v1/device_pings.

Path Parameters

id
string
required

Unique identifier of the charge to retrieve.

Example:

"ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"

Response

Charge retrieved.

id
string
Example:

"ch_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"

amount_cents
integer

Charge amount in cents.

Example:

2999

transaction_type
enum<string>

Direction of the charge: credit for deposits (money into the customer balance), debit for withdrawals (money out).

Available options:
credit,
debit
Example:

"debit"

currency
string
Example:

"USD"

status
enum<string>

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.

Available options:
created,
pending,
succeeded,
failed,
held,
voided,
returned,
refunded,
cancelled
Example:

"succeeded"

failure_code
string | null

Machine-readable failure code. Always present; null unless the charge failed (a cancelled charge may also carry one).

Example:

null

failure_message
string | null

Human-readable failure reason. Always present; null unless the charge failed (a cancelled charge may also carry one).

Example:

null

created_at
string<date-time>
Example:

"2026-05-31T10:30:00.000Z"

updated_at
string<date-time>
Example:

"2026-05-31T10:30:05.000Z"

customer
object
payment_method
object

Payment method used for the charge. Exactly one of card, bank_account, or crypto_wallet is populated, matching payment_type.

avs_result
string | null

Address Verification System result from the processor. Card charges only.

Example:

null

cvv_result
string | null

CVV verification result from the processor. Card charges only.

Example:

null

network_authorization_code
string | null

Authorization code returned by the card network. Card charges only.

Example:

null

processor_charge_id
string | null

External processor's identifier for this charge. Card charges only.

Example:

null

threeds
object | 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.