REST API with 7 modules (accounts, Pix payments, invoices, customers, statements, login, notification), a JS widget for client-side integration and white-label docs. Your developers can integrate everything without knowing Ezcale exists.
# Create a charge in 3 lines curl https://plataforma.ezcale.com/p/api/v2/payments \ -H "Authorization: Bearer sk_test_..." \ -d amount=15000 \ -d currency="BRL" \ -d payment_method="pix" # Response { "id": "ch_1a2b3c4d", "status": "pending", "amount": 15000, "pix_qr_code": "00020126..." }
From API key to the first Pix charge in production.
The tenant receives API credentials during onboarding. Bearer token authentication for all requests.
Authorization: Bearer sk_live_...
Use API V2 to create a Pix charge. The config-driven engine handles routing and normalization automatically.
POST /api/v2/payments { method: "pix" }
Add the JS widget to the tenant's frontend for client-side checkout. White-label under the tenant's brand.
<script src="ezcale-widget.js"></script>
Integration tools your developers will want to use.
Accounts, Payments (Pix), Invoices, Customers, Statements, Login and Notification. Config-driven architecture: no custom code required per endpoint.
REST / JSON / Config-drivenJavaScript component for direct integration into the tenant's frontend. Checkout, payment links and data capture β white-label, no iframe.
Vanilla JS / EmbedSlate-style documentation, white-labeled under the tenant's brand. Request/response examples for each endpoint. Copy, paste and it works.
Slate / White-labelReceive transaction, transfer and onboarding events in real time. 5 specialized handlers with an OOP pipeline.
5 handlers / OOP pipelineExtensible engine for new endpoints: define routes, validation and handlers through configuration β no boilerplate code required. New features without breaking changes.
Config-driven / ExtensibleBearer token authentication with per-tenant isolation. Every request is automatically routed to the correct context. No cross-tenant leaks.
Bearer / Tenant isolationReal examples for each endpoint. No unnecessary abstractions.
# Create a Pix charge with a split curl -X POST https://plataforma.ezcale.com/p/api/v2/payments \ -H "Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc" \ -H "Content-Type: application/json" \ -d '{ "amount": 25000, "currency": "BRL", "payment_method": "pix", "customer": { "name": "Maria Silva", "tax_id": "123.456.789-00" }, "split": [ { "account": "acc_platform", "percentage": 10 }, { "account": "acc_merchant", "percentage": 90 } ] }' # Response 201 Created { "id": "ch_9x8w7v6u", "status": "pending", "amount": 25000, "pix_qr_code": "00020126580014br.gov.bcb...", "pix_qr_code_url": "https://api.ezcale.com/qr/ch_9x8w7v6u.png", "expires_at": "2026-03-31T23:59:59Z" }
// Illustrative example β SDK in development // For now, use cURL or fetch directly with the REST API const response = await fetch('https://plataforma.ezcale.com/p/api/v2/payments', { method: 'POST', headers: { 'Authorization': 'Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc', 'Content-Type': 'application/json' }, body: JSON.stringify({ amount: 25000, currency: 'BRL', payment_method: 'pix', customer: { name: 'Maria Silva', tax_id: '123.456.789-00' } }) }); const charge = await response.json(); console.log(charge.pix_qr_code);
<?php // Illustrative example β SDK in development // For now, use cURL directly with the REST API $ch = curl_init('https://plataforma.ezcale.com/p/api/v2/payments'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc', 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode([ 'amount' => 25000, 'currency' => 'BRL', 'payment_method' => 'pix', 'customer' => [ 'name' => 'Maria Silva', 'tax_id' => '123.456.789-00', ], ]) ]); $response = curl_exec($ch); $charge = json_decode($response); echo $charge->pix_qr_code;
When a developer integrates Ezcale into the tenant's platform, all of that tenant's merchants transact through us. Exceptional developer experience is not a cost — it is a better B2B2B acquisition channel. In Brazil, the bar is low: mediocre docs and sandboxes that do not work. We are the exception.
API V2 runs directly in production with the tenant's credentials. There is no separate sandbox environment β onboarding is done with the integration team to ensure everything works before go-live.
7 active modules: Accounts, Payments (Pix), Invoices (charges), Customers (customer records), Statements, Login (authentication) and Notification (alerts). All config-driven.
Ezcale operates as invisible infrastructure. Slate-style docs, the JS widget and transactional emails display the tenant's brand. Merchants never see "Ezcale" — only the client's brand.
There is no public self-service portal. The tenant provisions access to docs and credentials during onboarding. Slate documentation is white-labeled and available through the tenant's domain.
API V2 with 7 modules, a JS widget and white-label docs. Our integration team supports you from onboarding through go-live.