Existem duas formas de migrar para o Toktus API. Escolha a que melhor se encaixa na sua situação:
Abordagem Alterações de código Ideal para Compatibility Mode Nenhuma — só muda URL e autenticação Quem quer migrar rápido e adaptar o código depois Migração manual Adaptar payload e parsing de resposta Novas integrações ou quem quer usar todos os recursos do Toktus API
[!NOTE]
O Compatibility Mode e a migração manual não são mutuamente exclusivos. Você pode ativar o Compatibility Mode para migrar agora, e gradualmente adaptar os endpoints para o formato nativo usando o header X-Payload-Format: native por chamada.
Se você já tem uma integração funcionando com um gateway e quer migrar sem mexer no código:
1. Configure o gateway e o modo de compatibilidade na conta:
Bash
curl -X PATCH https://api.toktus.com/api/v1/clients/settings \
-H "x-api-key: tk_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"primaryGateway": "asaas",
"gatewayFallbacks": ["stripe"],
"compatibilityMode": "pagarme"
}'
2. Mude a URL base e a autenticação no seu sistema:
Text Text
URL: https://api.pagar.me/core/v5/orders
Auth: Authorization: Basic <base64(sk_test_xxx:)>
```
## Depois (Toktus API)
URL: https://api.toktus.com/api/v1/charges
Auth: x-api-key: tk_SUA_CHAVE
```
3. Pronto. O payload que você envia e a resposta que você lê continuam no mesmo formato do gateway anterior.
Para detalhes sobre como o Compatibility Mode funciona, incluindo headers de rastreabilidade e migração gradual, veja o Guia de Configuração de Gateway da Conta .
Esta opção exige ajustes no código, mas dá acesso completo a todos os recursos do Toktus API: fallback automático, coprodutores, responseFormat, e payload mais simples.
Campo Pagar.me Campo Toktus API Observação payments[0].payment_methodpaymentMethodcredit_card, boleto, pixpayments[0].credit_card.card.numbercreditCard.numberpayments[0].credit_card.card.holder_namecreditCard.holderNamepayments[0].credit_card.card.exp_monthcreditCard.expMonthpayments[0].credit_card.card.exp_yearcreditCard.expYearpayments[0].credit_card.card.cvvcreditCard.cvvpayments[0].credit_card.installmentscreditCard.installmentspayments[0].credit_card.tokencreditCard.tokenpayments[0].pix.expires_inpix.expiresInSecondspayments[0].boleto.due_atboleto.dueDateSomente a data: AAAA-MM-DD payments[0].boleto.instructionsboleto.instructionsitems[0].amount (soma de todos)amountEm centavos nos dois casos items[0].descriptiondescriptioncustomer.namecustomer.namecustomer.emailcustomer.emailcustomer.documentcustomer.documentcustomer.phones.mobile_phonecustomer.phoneConcatenar area_code + number customer_idcustomerId
Campo Pagar.me Campo Toktus API data.iddata.externalIddata.statusdata.statusdata.charges[0].last_transaction.qr_codedata.pixQrCodedata.charges[0].last_transaction.qr_code_urldata.pixCopyPastedata.amountdata.amountdata.currencydata.currency
Campo Pagar.me Campo Toktus API data.charges[0].last_transaction.urldata.boletoUrldata.charges[0].last_transaction.linedata.boletoBarcode
Campo Pagar.me Campo Toktus API data.charges[0].iddata.externalIddata.charges[0].amountdata.amountdata.charges[0].paid_amountdata.paidAmountdata.statusdata.status
Status Pagar.me Status Toktus API paidapprovedpending / waiting_payment / pending_paymentpendingprocessingprocessingrefuseddeclinedcanceledcancelledrefunded / chargedbackrefundedfailed / with_errorfailed
Campo Asaas Campo Toktus API Observação customercustomerIdID do customer no Asaas billingTypepaymentMethodVer tabela de conversão abaixo value (reais, float) amount (centavos, inteiro) Multiplicar por 100 dueDateboleto.dueDatePara boletos descriptiondescriptioninstallmentCountcreditCard.installmentscreditCard.holderNamecreditCard.holderNamecreditCard.numbercreditCard.numbercreditCard.expiryMonthcreditCard.expMonthcreditCard.expiryYearcreditCard.expYearcreditCard.ccvcreditCard.cvv
Conversão de billingType:
billingType AsaaspaymentMethod Toktus APICREDIT_CARDcredit_cardDEBIT_CARDdebit_cardBOLETOboletoPIXpix
Campo Asaas Campo Toktus API Observação idexternalIdvalue (reais) amount (centavos) Multiplicar por 100 statusstatusVer conversão abaixo pixQrCodeImagepixQrCodepixCopiaEColapixCopyPastebankSlipUrlboletoUrlnossoNumeroboletoBarcode
Status Asaas Status Toktus API PENDINGpendingCONFIRMED / RECEIVEDapprovedREFUSEDdeclinedCANCELLEDcancelledREFUNDEDrefunded
Campo Stripe Campo Toktus API Observação payment_methodcreditCard.paymentMethodIdsourcecreditCard.tokenamountamountMesma unidade: centavos currencycurrencydescriptiondescriptioncapture_method: "manual"capture: falsePré-autorização customercustomerIdpayment_method_types[0]paymentMethodcard → credit_card
Campo Stripe Campo Toktus API idexternalIdstatus (succeeded)status (approved)amountamount (mesma unidade: centavos) amount_receivedpaidAmountamount_refundedrefundedAmountnext_action.boleto_display_details.hosted_voucher_urlboletoUrlnext_action.pix_display_qr_code.image_url_pngpixQrCodenext_action.pix_display_qr_code.datapixCopyPaste
Status Stripe Status Toktus API succeededapprovedprocessingprocessingrequires_payment_method / requires_actionpendingcanceledcancelled
Campo Mercado Pago Campo Toktus API Observação transaction_amount (reais, float) amount (centavos, inteiro) Multiplicar por 100 tokencreditCard.tokenObrigatório para cartãopayment_method_idcreditCard.paymentMethodIdAlternativo ao token installmentscreditCard.installmentsdescriptiondescriptionpayer.emailcustomer.emailpayer.first_name + payer.last_namecustomer.nameConcatenar payer.identification.numbercustomer.documentpayment_method_id: "pix"paymentMethod: "pix"
Campo Mercado Pago Campo Toktus API idexternalIdstatusstatustransaction_amount (reais) amount (centavos) point_of_interaction.transaction_data.qr_codepixCopyPastepoint_of_interaction.transaction_data.qr_code_base64pixQrCodetransaction_details.external_resource_urlboletoUrl
Status Mercado Pago Status Toktus API approvedapprovedin_processprocessingpendingpendingrejecteddeclinedcancelledcancelledrefundedrefunded
Campo PagSeguro Campo Toktus API Observação charges[0].amount.value (reais, float) amount (centavos, inteiro) Multiplicar por 100 charges[0].payment_method.typepaymentMethodVer conversão abaixo charges[0].payment_method.card.encryptedcreditCard.tokencharges[0].payment_method.card.holder.namecreditCard.holderNamecharges[0].payment_method.installmentscreditCard.installmentsitems[0].namedescriptioncustomer.namecustomer.namecustomer.emailcustomer.emailcustomer.tax_idcustomer.documentcharges[0].boleto.due_dateboleto.dueDate
Conversão de payment_method.type:
type PagSeguropaymentMethod Toktus APICREDIT_CARDcredit_cardBOLETOboletoPIXpix
Campo PagSeguro Campo Toktus API charges[0].idexternalIdcharges[0].statusstatuscharges[0].amount.value (reais) amount (centavos) charges[0].boleto.links[0].hrefboletoUrlcharges[0].boleto.formatted_barcodeboletoBarcodecharges[0].qr_codes[0].textpixCopyPastecharges[0].qr_codes[0].links[0].hrefpixQrCode
Status PagSeguro Status Toktus API PAIDapprovedWAITINGpendingIN_ANALYSISprocessingDECLINEDdeclinedCANCELLEDcancelledREFUNDEDrefunded
JavaScript
// Chamada direta à Pagar.me
const response = await axios.post('https://api.pagar.me/core/v5/orders', {
customer: { name: 'João', email: '[email protected] ', document: '12345678900' },
items: [{ amount: 10000, description: 'Produto', quantity: 1 }],
payments: [{
payment_method: 'pix',
pix: { expires_in: 3600 }
}]
}, {
auth: { username: 'sk_test_xxx', password: '' }
});
// Parsing específico da Pagar.me
const pixCode = response.data.charges[0].last_transaction.qr_code_url;
const status = response.data.status; // "paid"
const isPaid = status === 'paid';
```
## Depois (Toktus API)
```javascript
// Chamada ao Toktus API (campo gateway opcional se primaryGateway configurado)
const response = await axios.post(
'https://api.toktus.com/api/v1/charges',
{
paymentMethod: 'pix',
amount: 10000,
description: 'Produto',
pix: { expiresInSeconds: 3600 },
customer: { name: 'João', email: '[email protected] ', document: '12345678900' }
},
{ headers: { 'x-api-key': 'tk_SUA_CHAVE' } }
);
// Parsing normalizado — funciona com qualquer gateway e fallback
const pixCode = response.data.data.pixCopyPaste;
const status = response.data.data.status; // "approved"
const isPaid = status === 'approved';
```
---
## Transparência do fallback
Quando um fallback é acionado, a resposta inclui campos extras:
```json
{
"success": true,
"data": {
"gateway": "asaas",
"gatewayFallbackUsed": true,
"primaryGateway": "pagarme",
"status": "approved",
"pixCopyPaste": "00020126...",
"externalId": "pay_asaas_xxx"
}
}
Use gatewayFallbackUsed para logar ou alertar quando o fallback for acionado.
Independente do compatibilityMode, os headers X-RG-* sempre indicam o gateway real que processou — sem precisar parsear o body:
X-RG-Gateway: asaas
X-RG-Fallback-Used: true
X-RG-Charge-Id: ch-rg-uuid-interno
JSON
"split": [
{ "type": "percentage", "amount": 92, "recipient_id": "re_abc123" }
]
Se o fallback cair no Asaas, re_abc123 não existe lá — o split falha silenciosamente.
JSON
"split": [
{ "type": "percentage", "amount": 92, "coproducerEmail": "[email protected] " }
]
O sistema resolve o recipient_id correto para qualquer gateway, incluindo fallbacks.
Veja o Guia de Coprodutores para configurar.