Docs

The Charge object

The Charge object represents a single attempt to move money into your Zoneless account. PaymentIntent confirmation is the most common way to create Charges. Some legacy payment flows create Charges directly, which is not recommended for new integrations.

Attributes

id string

Unique identifier for the object. Zoneless charge IDs are prefixed with ch_z_.

object string

String representing the object's type. Objects of the same type share the same value.

amount integer

Amount intended to be collected by this payment. A positive integer in the smallest currency unit. For USDC, this is cents (e.g., 100 = $1 USDC). The amount value supports up to eight digits.

amount_captured integer

Amount in the smallest currency unit captured (can be less than amount if a partial capture was made).

amount_refunded integer

Amount in the smallest currency unit refunded (can be less than amount if a partial refund was issued).

applicationnullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the Connect application that created the charge.

application_feenullable string Expandable This can be expanded into an object with the expand request parameter.

The application fee (if any) for the charge.

application_fee_amountnullable integer

The amount of the application fee (if any) requested for the charge, in the smallest currency unit.

balance_transactionnullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).

billing_details object

Billing information associated with the payment method at the time of the transaction.

calculated_statement_descriptornullable string

The full statement descriptor after static and dynamic portions are combined. Retained for API compatibility; USDC transfers on Solana do not display bank statement descriptors.

Difference from Stripe: Blockchain payments have no card network statement descriptor. This field is typically null.

captured boolean

If the charge was created without capturing, this Boolean represents whether it is still uncaptured or has since been captured.

created timestamp

Time at which the object was created. Measured in seconds since the Unix epoch.

currency string

Three-letter currency code, in lowercase. For Zoneless, this is typically usdc.

Difference from Stripe: Uses usdc instead of fiat currency codes like usd.

customernullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the customer this charge is for, if one exists.

descriptionnullable string

An arbitrary string attached to the object. Often useful for displaying to users.

disputed boolean

Whether the charge has been disputed.

failure_balance_transactionnullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the balance transaction that describes the reversal of the balance on your account due to payment failure.

failure_codenullable string

Error code explaining the reason for charge failure, if available.

failure_messagenullable string

Message further explaining the reason for charge failure, if available.

fraud_detailsnullable object

Information on fraud assessments for the charge.

livemode boolean

Has the value true if the object exists in live mode or the value false if the object exists in test mode.

metadata object

Set of key-value pairs that you can attach to an object. Useful for storing additional information in a structured format.

on_behalf_ofnullable string Expandable This can be expanded into an object with the expand request parameter.

The connected account (if any) the charge was made on behalf of without triggering an automatic transfer.

outcomenullable object

Details about whether the payment was accepted, and why.

paid boolean

true if the charge succeeded, or was successfully authorized for later capture.

payment_intentnullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the PaymentIntent associated with this charge, if one exists.

payment_methodnullable string

ID of the payment method used in this charge.

payment_method_detailsnullable object

Details about the payment method at the time of the transaction.

Difference from Stripe: Zoneless charges typically use type: "crypto" with USDC wallet details. Other payment method hashes may appear for API compatibility but are not used for settlement.

presentment_detailsnullable object

Information about the currency presentation to the customer, including the displayed currency and amount used for conversion.

radar_optionsnullable object

Options used for fraud/risk assessment, when provided.

receipt_emailnullable string

The email address that the receipt for this charge was sent to.

receipt_numbernullable string

The transaction number that appears on email receipts sent for this charge. This attribute is null until a receipt has been sent.

receipt_urlnullable string

URL to view the receipt for this charge, when available.

refunded boolean

Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute remains false.

refundsnullable object Expandable This can be expanded into an object with the expand request parameter.

A list of refunds that have been applied to the charge.

reviewnullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the review associated with this charge, if one exists.

shippingnullable object

Shipping information for the charge.

source_transfernullable string Expandable This can be expanded into an object with the expand request parameter.

The transfer ID which created this charge. Only present if the charge came from another Zoneless account.

statement_descriptornullable string

Text that appears as the statement descriptor for non-card charges. Retained for API compatibility; Solana USDC transfers do not display bank statement descriptors.

statement_descriptor_suffixnullable string

Suffix concatenated with the account statement descriptor prefix. Retained for API compatibility.

status enum

The status of the payment.

Possible enum values
succeededThe charge succeeded.
pendingThe charge is authorized but not yet captured, or still processing.
failedThe charge failed.
transfernullable string Expandable This can be expanded into an object with the expand request parameter.

ID of the transfer to the destination account (only applicable if the charge was created using destination / transfer data).

transfer_datanullable object

An optional dictionary including the account to automatically transfer to as part of a destination charge.

transfer_groupnullable string

A string that identifies this transaction as part of a group.

More attributes

THE CHARGE OBJECT
{
  "id": "ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a",
  "object": "charge",
  "amount": 2500,
  "amount_captured": 2500,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "application_fee_amount": null,
  "balance_transaction": "txn_z_3NqR2xLkdIwHu7ix2bR9nT4c",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": "ava.chen@example.com",
    "name": "Ava Chen",
    "phone": null,
    "tax_id": null
  },
  "calculated_statement_descriptor": null,
  "captured": true,
  "created": 1716234567,
  "currency": "usdc",
  "customer": "cus_z_NffrFeUfNV2Hib",
  "description": "Order #4821",
  "disputed": false,
  "failure_balance_transaction": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "outcome": {
    "advice_code": null,
    "network_advice_code": null,
    "network_decline_code": null,
    "network_status": "approved_by_network",
    "reason": null,
    "risk_level": "normal",
    "risk_score": null,
    "rule": null,
    "seller_message": "Payment complete.",
    "type": "authorized"
  },
  "paid": true,
  "payment_intent": "pi_z_3NqR2xLkdIwHu7ix1aK8vL3d",
  "payment_method": "pm_z_1NqR2xLkdIwHu7ixWallet9",
  "payment_method_details": {
    "type": "crypto",
    "crypto": {
      "buyer_address": "8xK2Nv3FpQ7mR9sT1uVwXyZ4aBcDeFgH",
      "fingerprint": null,
      "network": "solana",
      "token_currency": "usdc",
      "transaction_hash": "5xK9mNpQ2rStUvWxYzAbCdEfGhIjKlMnOpQr"
    }
  },
  "presentment_details": null,
  "radar_options": null,
  "receipt_email": "ava.chen@example.com",
  "receipt_number": null,
  "receipt_url": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [],
    "has_more": false,
    "url": "/v1/charges/ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a/refunds"
  },
  "review": null,
  "shipping": null,
  "source_transfer": null,
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "transfer": null,
  "transfer_data": null,
  "transfer_group": null,
  "platform_account": "acct_z_Platform123abc"
}

Create a charge

This method is no longer recommended—use the Payment Intents API to initiate a new payment instead. Confirmation of the PaymentIntent creates the Charge object used to request payment.

ENDPOINTS
POST /v1/charges

Parameters

amount integer Required

Amount intended to be collected by this payment. A positive integer in the smallest currency unit. For USDC, this is cents (e.g., 100 = $1 USDC). Supports up to eight digits.

currency string Required

Three-letter currency code, in lowercase. For Zoneless, use usdc.

Difference from Stripe: Use usdc instead of fiat currencies.

customer string

The ID of an existing customer that will be charged in this request.

description string

An arbitrary string which you can attach to a Charge object. It is displayed in the dashboard alongside the charge.

metadata object

Set of key-value pairs that you can attach to an object. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

source string

A payment source to be charged, such as a payment method or wallet ID. For new integrations, prefer PaymentIntents with payment_method.

More attributes

Returns

Returns the charge object if the charge succeeded. This call raises an error if something goes wrong—for example, an invalid source or insufficient available balance.

POST/v1/charges
import { Zoneless } from '@zoneless/node';
const zoneless = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const charge = await zoneless.charges.create({
  amount: 2500,
  currency: 'usdc',
  source: 'pm_z_1NqR2xLkdIwHu7ixWallet9',
  customer: 'cus_z_NffrFeUfNV2Hib',
  description: 'Order #4821',
});
RESPONSE
{
  "id": "ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a",
  "object": "charge",
  "amount": 2500,
  "amount_captured": 2500,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "application_fee_amount": null,
  "balance_transaction": "txn_z_3NqR2xLkdIwHu7ix2bR9nT4c",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": "ava.chen@example.com",
    "name": "Ava Chen",
    "phone": null,
    "tax_id": null
  },
  "calculated_statement_descriptor": null,
  "captured": true,
  "created": 1716234567,
  "currency": "usdc",
  "customer": "cus_z_NffrFeUfNV2Hib",
  "description": "Order #4821",
  "disputed": false,
  "failure_balance_transaction": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "outcome": {
    "advice_code": null,
    "network_advice_code": null,
    "network_decline_code": null,
    "network_status": "approved_by_network",
    "reason": null,
    "risk_level": "normal",
    "risk_score": null,
    "rule": null,
    "seller_message": "Payment complete.",
    "type": "authorized"
  },
  "paid": true,
  "payment_intent": "pi_z_3NqR2xLkdIwHu7ix1aK8vL3d",
  "payment_method": "pm_z_1NqR2xLkdIwHu7ixWallet9",
  "payment_method_details": {
    "type": "crypto",
    "crypto": {
      "buyer_address": "8xK2Nv3FpQ7mR9sT1uVwXyZ4aBcDeFgH",
      "fingerprint": null,
      "network": "solana",
      "token_currency": "usdc",
      "transaction_hash": "5xK9mNpQ2rStUvWxYzAbCdEfGhIjKlMnOpQr"
    }
  },
  "presentment_details": null,
  "radar_options": null,
  "receipt_email": "ava.chen@example.com",
  "receipt_number": null,
  "receipt_url": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [],
    "has_more": false,
    "url": "/v1/charges/ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a/refunds"
  },
  "review": null,
  "shipping": null,
  "source_transfer": null,
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "transfer": null,
  "transfer_data": null,
  "transfer_group": null,
  "platform_account": "acct_z_Platform123abc"
}

Update a charge

Updates the specified charge by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

ENDPOINTS
POST /v1/charges/:id

Parameters

customer string

The ID of an existing customer that will be associated with this request. This field may only be updated if there is no existing associated customer with this charge.

description string

An arbitrary string which you can attach to a charge object. It is displayed in the dashboard alongside the charge.

fraud_details object

A set of key-value pairs you can attach to a charge giving information about its riskiness. If you believe a charge is fraudulent, include a user_report key with a value of fraudulent. If you believe a charge is safe, include a user_report key with a value of safe.

metadata object

Set of key-value pairs that you can attach to an object. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

receipt_email string

The email address that the receipt for this charge will be sent to. If this field is updated, a new email receipt is sent to the updated address.

shipping object

Shipping information for the charge. Helps prevent fraud on charges for physical goods.

transfer_group string

A string that identifies this transaction as part of a group. transfer_group may only be provided if it has not already been set.

Returns

Returns the charge object if the update succeeded. This call raises an error if update parameters are invalid.

POST/v1/charges/:id
import { Zoneless } from '@zoneless/node';
const zoneless = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const charge = await zoneless.charges.update(
  'ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a',
  {
    metadata: {
      shipping: 'express',
    },
  }
);
RESPONSE
{
  "id": "ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a",
  "object": "charge",
  "amount": 2500,
  "amount_captured": 2500,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "application_fee_amount": null,
  "balance_transaction": "txn_z_3NqR2xLkdIwHu7ix2bR9nT4c",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": "ava.chen@example.com",
    "name": "Ava Chen",
    "phone": null,
    "tax_id": null
  },
  "calculated_statement_descriptor": null,
  "captured": true,
  "created": 1716234567,
  "currency": "usdc",
  "customer": "cus_z_NffrFeUfNV2Hib",
  "description": "Order #4821",
  "disputed": false,
  "failure_balance_transaction": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "livemode": false,
  "metadata": {
    "shipping": "express"
  },
  "on_behalf_of": null,
  "outcome": {
    "advice_code": null,
    "network_advice_code": null,
    "network_decline_code": null,
    "network_status": "approved_by_network",
    "reason": null,
    "risk_level": "normal",
    "risk_score": null,
    "rule": null,
    "seller_message": "Payment complete.",
    "type": "authorized"
  },
  "paid": true,
  "payment_intent": "pi_z_3NqR2xLkdIwHu7ix1aK8vL3d",
  "payment_method": "pm_z_1NqR2xLkdIwHu7ixWallet9",
  "payment_method_details": {
    "type": "crypto",
    "crypto": {
      "buyer_address": "8xK2Nv3FpQ7mR9sT1uVwXyZ4aBcDeFgH",
      "fingerprint": null,
      "network": "solana",
      "token_currency": "usdc",
      "transaction_hash": "5xK9mNpQ2rStUvWxYzAbCdEfGhIjKlMnOpQr"
    }
  },
  "presentment_details": null,
  "radar_options": null,
  "receipt_email": "ava.chen@example.com",
  "receipt_number": null,
  "receipt_url": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [],
    "has_more": false,
    "url": "/v1/charges/ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a/refunds"
  },
  "review": null,
  "shipping": null,
  "source_transfer": null,
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "transfer": null,
  "transfer_data": null,
  "transfer_group": null,
  "platform_account": "acct_z_Platform123abc"
}

Retrieve a charge

Retrieves the details of a charge that has previously been created. Supply the unique charge ID that was returned from your previous request, and Zoneless will return the corresponding charge information. The same information is returned when creating or refunding the charge.

ENDPOINTS
GET /v1/charges/:id

Parameters

No parameters.

Returns

Returns a charge if a valid identifier was provided, and raises an error otherwise.

GET/v1/charges/:id
import { Zoneless } from '@zoneless/node';
const zoneless = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const charge = await zoneless.charges.retrieve(
  'ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a'
);
RESPONSE
{
  "id": "ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a",
  "object": "charge",
  "amount": 2500,
  "amount_captured": 2500,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "application_fee_amount": null,
  "balance_transaction": "txn_z_3NqR2xLkdIwHu7ix2bR9nT4c",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": "ava.chen@example.com",
    "name": "Ava Chen",
    "phone": null,
    "tax_id": null
  },
  "calculated_statement_descriptor": null,
  "captured": true,
  "created": 1716234567,
  "currency": "usdc",
  "customer": "cus_z_NffrFeUfNV2Hib",
  "description": "Order #4821",
  "disputed": false,
  "failure_balance_transaction": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "outcome": {
    "advice_code": null,
    "network_advice_code": null,
    "network_decline_code": null,
    "network_status": "approved_by_network",
    "reason": null,
    "risk_level": "normal",
    "risk_score": null,
    "rule": null,
    "seller_message": "Payment complete.",
    "type": "authorized"
  },
  "paid": true,
  "payment_intent": "pi_z_3NqR2xLkdIwHu7ix1aK8vL3d",
  "payment_method": "pm_z_1NqR2xLkdIwHu7ixWallet9",
  "payment_method_details": {
    "type": "crypto",
    "crypto": {
      "buyer_address": "8xK2Nv3FpQ7mR9sT1uVwXyZ4aBcDeFgH",
      "fingerprint": null,
      "network": "solana",
      "token_currency": "usdc",
      "transaction_hash": "5xK9mNpQ2rStUvWxYzAbCdEfGhIjKlMnOpQr"
    }
  },
  "presentment_details": null,
  "radar_options": null,
  "receipt_email": "ava.chen@example.com",
  "receipt_number": null,
  "receipt_url": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [],
    "has_more": false,
    "url": "/v1/charges/ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a/refunds"
  },
  "review": null,
  "shipping": null,
  "source_transfer": null,
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "transfer": null,
  "transfer_data": null,
  "transfer_group": null,
  "platform_account": "acct_z_Platform123abc"
}

List all charges

Returns a list of charges you've previously created. The charges are returned in sorted order, with the most recent charges appearing first.

ENDPOINTS
GET /v1/charges

Parameters

customer string

Only return charges for the customer specified by this customer ID.

payment_intent string

Only return charges that were created by the PaymentIntent specified by this PaymentIntent ID.

transfer_group string

Only return charges for this transfer group, limited to 100.

More attributes

Returns

A dictionary with a data property that contains an array of up to limit charges, starting after charge starting_after. Each entry in the array is a separate Charge object. If no more charges are available, the resulting array will be empty. If you provide a non-existent customer ID, this call raises an error.

GET/v1/charges
import { Zoneless } from '@zoneless/node';
const zoneless = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const charges = await zoneless.charges.list({
  limit: 3,
});
RESPONSE
{
  "object": "list",
  "url": "/v1/charges",
  "has_more": false,
  "data": [
    {
      "id": "ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a",
      "object": "charge",
      "amount": 2500,
      "amount_captured": 2500,
      "amount_refunded": 0,
      "application": null,
      "application_fee": null,
      "application_fee_amount": null,
      "balance_transaction": "txn_z_3NqR2xLkdIwHu7ix2bR9nT4c",
      "billing_details": {
        "address": {
          "city": null,
          "country": null,
          "line1": null,
          "line2": null,
          "postal_code": null,
          "state": null
        },
        "email": "ava.chen@example.com",
        "name": "Ava Chen",
        "phone": null,
        "tax_id": null
      },
      "calculated_statement_descriptor": null,
      "captured": true,
      "created": 1716234567,
      "currency": "usdc",
      "customer": "cus_z_NffrFeUfNV2Hib",
      "description": "Order #4821",
      "disputed": false,
      "failure_balance_transaction": null,
      "failure_code": null,
      "failure_message": null,
      "fraud_details": {},
      "livemode": false,
      "metadata": {},
      "on_behalf_of": null,
      "outcome": {
        "advice_code": null,
        "network_advice_code": null,
        "network_decline_code": null,
        "network_status": "approved_by_network",
        "reason": null,
        "risk_level": "normal",
        "risk_score": null,
        "rule": null,
        "seller_message": "Payment complete.",
        "type": "authorized"
      },
      "paid": true,
      "payment_intent": "pi_z_3NqR2xLkdIwHu7ix1aK8vL3d",
      "payment_method": "pm_z_1NqR2xLkdIwHu7ixWallet9",
      "payment_method_details": {
        "type": "crypto",
        "crypto": {
          "buyer_address": "8xK2Nv3FpQ7mR9sT1uVwXyZ4aBcDeFgH",
          "fingerprint": null,
          "network": "solana",
          "token_currency": "usdc",
          "transaction_hash": "5xK9mNpQ2rStUvWxYzAbCdEfGhIjKlMnOpQr"
        }
      },
      "presentment_details": null,
      "radar_options": null,
      "receipt_email": "ava.chen@example.com",
      "receipt_number": null,
      "receipt_url": null,
      "refunded": false,
      "refunds": {
        "object": "list",
        "data": [],
        "has_more": false,
        "url": "/v1/charges/ch_z_3NqR2xLkdIwHu7ix8kP4mQ2a/refunds"
      },
      "review": null,
      "shipping": null,
      "source_transfer": null,
      "statement_descriptor": null,
      "statement_descriptor_suffix": null,
      "status": "succeeded",
      "transfer": null,
      "transfer_data": null,
      "transfer_group": null,
      "platform_account": "acct_z_Platform123abc"
    }
  ]
}

Capture a charge

Capture the payment of an existing, uncaptured charge that was created with the capture option set to false. Uncaptured payments expire a set number of days after they are created (7 by default), after which they are marked as refunded and capture attempts will fail. Don't use this method to capture a PaymentIntent-initiated charge—use Capture a PaymentIntent instead.

ENDPOINTS
POST /v1/charges/:id/capture

Parameters

amount integer

The amount to capture, which must be less than or equal to the original amount.

application_fee_amount integer

An application fee amount to add on to this charge, which must be less than or equal to the capture amount.

receipt_email string

The email address to send this charge's receipt to. This overrides the previously specified email address for this charge, if one was set. Receipts are not sent in test mode.

statement_descriptor string

Text that appears as the statement descriptor. Limited to 22 characters. Retained for API compatibility.

statement_descriptor_suffix string

Suffix concatenated with the account statement descriptor prefix. Retained for API compatibility.

transfer_data object

An optional dictionary including the account to automatically transfer to as part of a destination charge.

transfer_group string

A string that identifies this transaction as part of a group. transfer_group may only be provided if it has not already been set.

Returns

Returns the charge object, with an updated captured property (set to true). Capturing a charge succeeds unless the charge is already refunded, expired, captured, or an invalid capture amount is specified, in which case this method raises an error.

POST/v1/charges/:id/capture
import { Zoneless } from '@zoneless/node';
const zoneless = new Zoneless('sk_live_z_YOUR_API_KEY', 'https://api.zoneless.com');

const charge = await zoneless.charges.capture(
  'ch_z_3NrW8kLkdIwHu7ix4mH2pL9b'
);
RESPONSE
{
  "id": "ch_z_3NrW8kLkdIwHu7ix4mH2pL9b",
  "object": "charge",
  "amount": 2500,
  "amount_captured": 2500,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "application_fee_amount": null,
  "balance_transaction": "txn_z_3NrW8kLkdIwHu7ix7cN1qR5e",
  "billing_details": {
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "email": null,
    "name": null,
    "phone": null,
    "tax_id": null
  },
  "calculated_statement_descriptor": null,
  "captured": true,
  "created": 1716401280,
  "currency": "usdc",
  "customer": null,
  "description": null,
  "disputed": false,
  "failure_balance_transaction": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "outcome": {
    "advice_code": null,
    "network_advice_code": null,
    "network_decline_code": null,
    "network_status": "approved_by_network",
    "reason": null,
    "risk_level": "normal",
    "risk_score": null,
    "rule": null,
    "seller_message": "Payment complete.",
    "type": "authorized"
  },
  "paid": true,
  "payment_intent": null,
  "payment_method": "pm_z_1NrW8kLkdIwHu7ixWallet3",
  "payment_method_details": {
    "type": "crypto",
    "crypto": {
      "buyer_address": null,
      "fingerprint": null,
      "network": "solana",
      "token_currency": "usdc",
      "transaction_hash": null
    }
  },
  "presentment_details": null,
  "radar_options": null,
  "receipt_email": null,
  "receipt_number": null,
  "receipt_url": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [],
    "has_more": false,
    "url": "/v1/charges/ch_z_3NrW8kLkdIwHu7ix4mH2pL9b/refunds"
  },
  "review": null,
  "shipping": null,
  "source_transfer": null,
  "statement_descriptor": null,
  "statement_descriptor_suffix": null,
  "status": "succeeded",
  "transfer": null,
  "transfer_data": null,
  "transfer_group": null,
  "platform_account": "acct_z_Platform123abc"
}