One-Cent Check

Boost conversion rates by using One-Cent Check to get user's bank accounts before processing deposits or withdrawals.

Identifying accurate bank account details is being a challenge in the market, with users often unaware of their account ISPBs, branch or numbers. To tackle this issue, we’ve developed the One-Cent Check, a solution that streamlines bank account verification and enhances transaction accuracy.

Flows

Without One-Cent Check

With One-Cent Check

How it Works

1. Generate a Cash-In Request

Create a cash-in request with a small, cents-level amount, accompanied by a QR code for the user to pay. This process here is similar to Pix Deposit.

First, let’s start by using this endpoint.

POST /partners-int/accounts/pix/cashin

Request Body

Include "validateAccount": true to your Body Request.

{
  "transaction": {
    "orderId": "<string>",
    "orderDescription": "<string>"
  },
  "payment": {
    "value": {
      "original": "<string>", //Here you can specify 0.01 BRL i.e.
    },
    "payer": {
      "name": "<string>",
      "cpf": "<string>",
    },

    //👇👇👇👇👇👇
    "validateAccount": "<boolean>" //TRUE: To validate account and automatically refund the value requested.
  
  },
  "webhook": {
    "url": "<string>",
    "customHeaderName": "<string>",
    "customHeaderValue": "<string>"
  }
}

👍

QRCode Value

You can use small values i.e. 0.01-0.05 BRL to create the One-Cent Check

You can check the response of this payload here, where you will receive the QRCode to be paid.


2. User Payment

With the QRCode Return from the previous request, you will have few steps to follow.

Add One-Cent Check step to your Onboarding

Include the QR code step where users register their bank accounts. Reinforce the necessity of this step to avoid issues with incorrect account inputs, as skipping it may lead to conversion problems.

👍

Reinforce QRCode Payment

To avoid issues with incorrect account inputs, as skipping it may not fix your conversion problems

Bettor Payment

  • Ensure the user pays from an individual account matching the CPF used to generate the QR code.
  • Highlight that mismatched CPFs will cause the validation to fail.

👍

Instant Refund

Inform the Bettor that the payment amount will be promptly refunded after the platform confirms the transaction.


3. Webhook Payment Info

Now that the user has paid the validation QRCode (And probably already received the refund), PayBrokers will send a webhook notification to the configured URL (webhook_urlprovided when the transaction was created). This webhook contains information about the transaction status, allowing the client system to track and update the payment status accurately and the payer object that will contain the bank info of the bettor's.

📘

Note:

Learn more about webhook parameters in the Webhook Event Verification guide.

The webhook returned from the status change will follow this format.

{
  "id": "<string>",
  "transactionState": "Completed",
  "transactionDate": "<date>",
  "transactionAmount": "<value>",
  "transactionType": "<string>",
  "transactionPaymentType": "<string>",
  "transactionOrderId": "",
  "transactionOrderDescription": "<string>",
  "transactionCharges": "<value>",
  "webhookUrl": "<string>",
  "transactionReceipt": "<string>",
  "transactionReceiptDate": "<date>",
  "transactionReceiptVoucher": "<string>",
  "stateRegisteredDate": "<date>",
  "stateCompletedDate": "<date>",
  
  //👇 HERE
  "payer": {
    "name": "<string>",
    "taxNumber": "<string>",
    "bankCode": "<string>",
    "accountAgency": "<string>",
    "accountNumber": "<string>",
    "accountDigit": "<string>"
  }
}

5. Future Transactions Simplified

With the webhook information, you can now use the payer object to enrich the user’s profile and seamlessly leverage this data for future Cash IN and OUT transactions.

👍

PAYER OBJECT (From WebHook)

"payer": {
"name": "",
"taxNumber": "",
"bankCode": "",
"accountAgency": "",
"accountNumber": "",
"accountDigit": ""
}

CASHIN REQUEST

{
  "transaction": {
    "orderId": "<string>",
    "orderDescription": "<string>"
  },
  "payment": {
    "value": {
      "original": "<string>",
    },
    "payer": {
      "name": "<string>",
      "cpf": "<string>",
      
      //👇 YOU CAN REPLACE IT HERE
      "account": {
        "ispb": "<string>", //bankCode
        "branch": "<string>",//accountAgency
        "number": "<string>",//accountNumber
        "digit":"<string>"//accountDigit
      }
      
    }
  },
  "webhook": {
    "url": "<string>",
    "customHeaderName": "<string>",
    "customHeaderValue": "<string>"
  }
}

CASHOUT REQUEST

{
  "payment": {
    "value": "<string>",
    "recipient": {
      "name": "<string>",
      "cpf": "<string>",
      
      //👇 YOU CAN REPLACE IT HERE
      "account": {
        	"ispb": "<string>",//bankCode
        	"branch": "<string>",//accountAgency
        	"number": "<string>",//accountNumber
        	"digit": "<string>",//accountDigit
          "type": "<string>"
      }
    }
  },
  "transaction": {
    "orderId": "<string>",
    "orderDescription": "<string>"
  },
  "webhook": {
    "url": "<string>",
    "customHeaderName": "<string>",
    "customHeaderValue": "<string>"
  }
}