🗄️DataOnly
DataOnly – Visa & Mastercard
📋 Overview
DataOnly is an authentication-like data pass‑through available for Visa and Mastercard that lets merchants send rich cardholder and device information to issuers without a customer challenge. It can be used with both credit and debit cards and typically improves approval rates for e‑commerce transactions.
Important: Because there is no challenge, there is no liability shift. Fraud and chargeback risk remains with the merchant.
Important Notice To send a transaction using the DataOnly flow, you must include the attribute:
"data_only": true
When using DataOnly, do not send the threeds_authentication object for 3DS — a transaction can be either 3DS or DataOnly, not both.
🎯 Benefits
- ✅ Debit & Credit: works for Visa and Mastercard
- ✅ Higher approval rate by sharing richer data with issuers
- ✅ Frictionless: no 3DS challenge for the customer
⚠️ Risks & Considerations
- ❌ No liability shift: chargeback liability remains with the merchant
- ❌ Issuer behavior may vary for debit; some issuers may decline without a challenge
- ❌ Requires a complete, accurate payload (payer data, address,
device_info, description, items) to maximize approval
🧭 How it works (High‑level flow)
sequenceDiagram autonumber participant C as Customer participant M as Merchant Backend participant A as A55 API participant I as Issuer/Network C->>M: Initiates checkout M->>A: POST /bank/wallet/charge (with full payer + device_info) A->>I: DataOnly authorization (no challenge) I-->>A: Approve/Decline decision A-->>M: Status (confirmed/error) M-->>C: Show result
Pro‑tip: Pair DataOnly with Device Data Collection (DDC) to strengthen issuer risk signals and approval odds.
🔌 Request (example)
Use this payload to create a charge. Make sure to send complete payer_*, address, items and device_info`.
Note:
card_numbermust be Visa or Mastercard for DataOnly.
{
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "John Doe",
"payer_email": "[email protected]",
"payer_tax_id": "38899334821",
"payer_cell_phone": "+5511999999999",
"items": [
{
"name": "Sample Product",
"description": "Description of the sample product",
"quantity": 1,
"total_amount": 100,
"unit_amount": 100,
"sku": "SAMPLE-SKU-123",
"code": "SAMPLE-CODE-456"
}
],
"payer_address": {
"street": "Sample Street",
"address_number": "123",
"complement": "Apt 101",
"neighborhood": "Sample Neighborhood",
"city": "Sample City",
"state": "SP",
"postal_code": "00000-000",
"country": "BR"
},
"currency": "BRL",
"installment_value": 100,
"installment_count": 1,
"due_date": "2025-12-31",
"description": "Sample transaction description",
"type_charge": "credit_card",
"card_name": "John Doe",
"card_number": "4111111111111111",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"data_only": true, // This will send your transaction through the DataOnly flow
"device_info": {
"session_id": "18e9905d-a5d1-49ee-95bc-fa06c3f4f44f", // Use the SDK in your frontend to retrieve this information.
"ip_address": "192.168.0.1",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.0.0 Safari/537.36",
"http_accept_content": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"http_browser_language": "en-US",
"http_browser_java_enabled": true,
"http_browser_javascript_enabled": true,
"http_browser_color_depth": "24",
"http_browser_screen_height": "1080",
"http_browser_screen_width": "1920",
"http_browser_time_difference": "-180",
"http_accept_browser_value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
},
"webhook_url": "https://webhook-test.com/sample-webhook"
}🔎 Required fields for DataOnly (summary)
| Group | Field(s) | Notes |
|---|---|---|
| data_only | True | This will send your transaction through the DataOnly flow |
| Payer | payer_name, payer_email, payer_cell_phone, payer_tax_id | Contact details used by issuer risk systems |
| Address | street, address_number, neighborhood, city, state, postal_code, country | Full, valid address improves approval |
| Order | items[] (name, description, quantity, unit_amount, total_amount, sku/code) | Provide SKU/code for clarity |
| Card | card_name, card_number, card_expiry_month, card_expiry_year, card_cvv | Visa/Mastercard only |
| Device | All device_info.* shown above | Critical for issuer decisioning |
| Routing | webhook_url | Final status is delivered here |
🧩 Using the SDK (payV2) with DataOnly
You can use A55Pay SDK to automate DDC and device fingerprinting. Unlike 3DS, no challenge/modal is expected in DataOnly.
Load the SDK
<script src="https://cdn.jsdelivr.net/npm/a55pay-sdk"></script>Minimal call
<script>
A55Pay.payV2({
charge_uuid: "<your-charge-uuid>",
userData: {
payer_name: "John Doe",
payer_email: "[email protected]",
payer_tax_id: "38899334821",
holder_name: "JOHN DOE",
number: "4111 1111 1111 1111",
expiry_month: "12",
expiry_year: "2030",
ccv: "123",
postal_code: "00000-000",
street: "Sample Street",
address_number: "123",
neighborhood: "Sample Neighborhood",
city: "Sample City",
state: "SP",
country: "BR"
},
onReady: () => console.log('Collecting device data (DDC)...'),
onSuccess: (result) => console.log('Approved:', result),
onError: (err) => console.error('Error:', err)
});
</script>📬 Responses (typical)
Approved
{
"status": "confirmed",
"currency": "BRL",
"charge_uuid": "..."
}Declined
{
"status": "error",
}You will always receive the final status via your
webhook_url.
✅ Best Practices
- Provide complete data: payer, address, items, description, and device_info
- Use HTTPS everywhere; avoid mixed content and blocked signals
- Pair with DDC (via SDK) to strengthen issuer signals
- Monitor your webhook for final status transitions
❓ FAQ
Is DataOnly the same as 3DS?
No. DataOnly is a frictionless data pass‑through with no challenge and no liability shift.
Which brands are supported?
Visa and Mastercard.
What happens with debit cards?
Issuer behavior varies. Some issuers may decline without a challenge.
Can I enable DataOnly and 3DS together?
No. Only one can be active at a time for your account.
Do I still need device_info?
Yes. Rich device and browser data is essential for issuer risk decisioning.
Updated 23 days ago
