Skip to main content

Create charge

Quick Reference

WhatCreate a charge for any payment method
WhyProcess payments across 11 methods, 6 countries, and 29 acquirers with a single endpoint
Reading Time10 min
DifficultyBeginner
PrerequisitesAuthentication → Environment
POST/api/v1/bank/wallet/charge/Bearer TokenCreate a new charge

When to use this endpoint

ScenarioHow create charge helps
Accept a credit card paymentSet type_charge: "credit_card" with card fields or let SDK/Checkout handle them
Offer PIX instant paymentSet type_charge: "pix" — response includes QR code and copy-paste code
Generate a Boleto bank slipSet type_charge: "boleto" — response includes barcode and due date
Accept Apple Pay / Google PaySet type_charge: "applepay" or "googlepay" with token data
Set up recurring billingAdd a subscription object to create a charge + subscription in one call
Authorization-only flowSet capture: false for hotels, car rentals, pre-auth patterns

Choose your payment method

Select a method below. The page will show only the fields, code, and response relevant to that method.


Request parameters (all methods)

These fields are required for every payment method:

FieldTypeRequiredDescription
wallet_uuidstring (UUID)YesWallet that receives the funds
merchant_idstringYesMerchant identifier
payer_namestringYesPayer full name
payer_emailstringYesPayer email address
payer_tax_idstringYesTax ID (CPF in Brazil, RFC in Mexico, RUT in Chile, CUIT in Argentina)
payer_cell_phonestringYesPayer mobile phone with country code
installment_valuenumberYesCharge amount per installment. For zero-decimal currencies (CLP, COP), use integers — see currency rules below
installment_countintegerYesNumber of installments (use 1 for single payment)
currencystringYesISO 4217 currency code: BRL, MXN, CLP, COP, PEN, ARS, USD
due_datestringYesDue date in YYYY-MM-DD format
descriptionstringYesCharge description shown to the payer
type_chargestringYesPayment method — see selector above
payer_addressobjectYesBilling address (see below)

Payer address object

FieldTypeRequiredDescription
streetstringYesStreet name
address_numberstringYesStreet number
complementstringYesApartment, suite, floor
neighborhoodstringYesNeighborhood or district
citystringYesCity
statestringYesState code (e.g., SP, CDMX)
postal_codestringYesPostal / ZIP code
countrystringNoISO 3166-1 alpha-2 (e.g., BR). Defaults to wallet country

Currency-specific amount rules

CurrencyDecimalsAmount formatExampleBackend behavior
BRL2150.00"installment_value": 150.00Stored as Numeric(11,2)
MXN22500.00"installment_value": 2500.00Stored as Numeric(11,2)
USD2100.00"installment_value": 100.00Stored as Numeric(11,2)
PEN2350.00"installment_value": 350.00Stored as Numeric(11,2)
ARS285000.00"installment_value": 85000.00Stored as Numeric(11,2)
CLP050000"installment_value": 50000Truncated to integer before sending to acquirer
COP0200000"installment_value": 200000Truncated to integer before sending to acquirer
Zero-decimal currencies

CLP (Chilean Peso) and COP (Colombian Peso) have no fractional units. The backend converts amounts to integers before sending to acquirers. Sending 50000.50 for CLP results in 50000. Always send whole numbers for these currencies to avoid unexpected truncation.

Optional fields (all methods)

FieldTypeDefaultDescription
webhook_urlstringOverride the default webhook URL for this charge
redirect_urlstringReturn URL after checkout page or 3DS challenge
reference_external_idstringYour internal order ID for reconciliation
is_asyncbooleanfalseAsync processing where supported
shipping_addressobjectShipping address (same structure as payer_address)

Card-specific fields

FieldTypeRequiredDescription
card_numberstringH2H onlyCard PAN (SDK and Checkout handle this)
card_namestringH2H onlyName printed on the card
card_expiry_monthstringH2H onlyExpiry month MM
card_expiry_yearstringH2H onlyExpiry year YYYY
card_cvvstringH2H onlyCard verification value
capturebooleanNotrue (default) = auto-capture; false = authorize only
threeds_authenticationbooleanNotrue to force 3DS authentication
device_infoobject3DSBrowser/device fingerprint for 3DS (see below)
antifraud_infoobjectNoBehavioral data for anti-fraud scoring
subscriptionobjectNoCreates a recurring subscription with this charge
When are card fields required?
  • H2H integration: You send card_number, card_name, card_expiry_month, card_expiry_year, card_cvv directly.
  • SDK integration: The SDK collects card data in the browser. You only send the universal fields.
  • Checkout Page: A55's hosted page collects everything. You only send universal fields + redirect_url.

Device info object (3DS)

Required when threeds_authentication: true in H2H flows:

FieldTypeDescription
ip_addressstringPayer's IP address
user_agentstringBrowser user-agent string
device_idstringSDK-generated device fingerprint
session_idstringDDC session ID from issuer
http_accept_contentstringBrowser Accept header
http_browser_languagestringBrowser language (e.g., en-US)
http_browser_java_enabledbooleanJava enabled in browser
http_browser_javascript_enabledbooleanJavaScript enabled
http_browser_color_depthstringColor depth (e.g., 24)
http_browser_screen_heightstringScreen height in pixels
http_browser_screen_widthstringScreen width in pixels
http_browser_time_differencestringUTC offset (e.g., -3)

Antifraud info object

Improves fraud scoring and approval rates:

FieldTypeDescription
sales_channelstringweb, app, pos, marketplace, link, subscription, api
cardholder_logged_inbooleanWhether payer was logged in
cardholder_since_daysintegerDays since account creation
purchase_historyintegerTotal past purchases
days_since_last_purchase_merchantintegerDays since last purchase with you

Subscription object

Creates a recurring subscription attached to this charge:

FieldTypeRequiredDescription
cyclestringYesweekly, biweekly, monthly, quarterly, semiannually, yearly
end_datestringNoSubscription end date YYYY-MM-DD (omit for indefinite)

Code examples

Credit card charge

curl -s -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "Maria Silva",
"payer_email": "maria@example.com",
"payer_tax_id": "123.456.789-09",
"payer_cell_phone": "+5511999999999",
"installment_value": 150.00,
"installment_count": 3,
"currency": "BRL",
"due_date": "2026-12-31",
"description": "Order #42 — 3x installments",
"type_charge": "credit_card",
"card_number": "4024007153763191",
"card_name": "MARIA SILVA",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"capture": true,
"webhook_url": "https://your-app.com/webhooks/a55",
"payer_address": {
"street": "Av. Paulista",
"address_number": "1000",
"complement": "Sala 101",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postal_code": "01310-100",
"country": "BR"
}
}'

Response

Charge lifecycle

Response fields

FieldTypeDescription
charge_uuidstringUnique charge identifier
statusstringissued, pending, confirmed, paid, error, canceled, refunded
local_currencynumberAmount in the wallet's settlement currency
currencystringISO 4217 currency code
usd_currencynumberEquivalent amount in USD
eur_currencynumberEquivalent amount in EUR
typestringPayment method used
datestringCharge creation date
descriptionstringCharge description
due_datestringPayment due date
installment_countintegerNumber of installments
installmentsarrayPer-installment breakdown
charge_payment_urlstringCheckout/SDK payment URL (when applicable)
url_3dsstring3DS challenge redirect URL (H2H only)
messagearray/nullError details when status: "error"
subscriptionobjectSubscription details (when subscription was included)

Card response example

{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"local_currency": 150.00,
"currency": "BRL",
"usd_currency": 26.90,
"eur_currency": 23.58,
"type": "credit_card",
"date": "2026-03-20",
"description": "Order #42 — 3x installments",
"due_date": "2026-12-31",
"status": "confirmed",
"message": null,
"installment_count": 3,
"installments": [
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2026-12-31",
"status": "confirmed",
"installment_number": 1
},
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2027-01-31",
"status": "confirmed",
"installment_number": 2
},
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2027-02-28",
"status": "confirmed",
"installment_number": 3
}
]
}

Error response

{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"status": "error",
"message": [
{
"code": "error_threeds_authentication",
"source": "authentication",
"description": "Issuing bank declined the authentication"
}
]
}

Error codes

CodeMeaningWhat to do
INVALID_TYPE_CHARGEUnsupported type_charge valueCheck the allowed values in the selector above
errors.wallet.not_foundWallet UUID does not existVerify wallet_uuid
errors.unexpectedInternal server errorRetry with exponential backoff; contact support if persistent
error_threeds_authentication3DS authentication failedAsk the payer to retry or use a different card
Always use webhooks

Never rely on the synchronous response alone for final payment status. The charge may move through several states asynchronously. Set webhook_url and treat the webhook as the source of truth.

Set data_only: true on your credit card charges to share enriched transaction data with issuers through 3DS rails — without any cardholder challenge. Merchants have seen up to +646 basis points approval rate improvement.

Works with Visa and Mastercard. Requires device_info with browser/device signals.

Learn how to activate Data Only →