EFT
Electronic funds transfer
Electronic funds transfer (EFT) is the electronic transfer of money from one bank account to another, either within a single financial institution or across multiple institutions, via computer-based systems, without the direct intervention of bank staff. Consumers pay for goods using their online banking facility. They are either redirected to their bank or select their bank from a provider’s page. In most cases the Authorization is immediately, especially when payment is made via an instant payment such as PIX.
Main differences from gateway mode
With gateway mode, the Merchant integrates directly with the payment provider through our Direct API, therefore, there are some changes in relation to validations of the PIX operation, including:
- There is no limit on the value of the transaction;
- There is no daily, monthly or annual limit per end-user;
Exclusive checks for betting with gateway mode
Considering the online betting segment, our payment platform offers additional functionalities focused on national norms and regulations for operations in Brazil, like:
- We validate the bank accounts provided in the payload;
- We perform payer validation based on the document provided in the request and the payer document returned to PIX;
Available Payment Methods
Payment Method | Countries | Refunds | Recurring | Chargebacks | Type | Sub-type |
---|---|---|---|---|---|---|
PIX | BR | Yes | No | No | eft | pix |
Brazil
PIX
Type: eft
Sub-type: pix
Pix is the Brazilian instant payment. The payment method created by the Central Bank (BC) in which funds are transferred between accounts in a few seconds, at any time or day. It's practical, fast and secure. Pix can be made from a checking account, savings account or prepaid payment account.
PIX always includes:
- Issuer bank information
- Payable amount value
- QR Code: This is the image of the QR Code generated for the payment, the payer can scan it using the Pix App of their choice.
- Payment Code: This is the code generated by the PIX, which can be used directly in the payer's PIX application or in their Internet Banking to process the payment.
Workflow
- Customer fills and submits all necessary payment information to the merchant server.
- The merchant submits to /transactions to create the transaction.
- PagSeguro creates an order and returns the transaction code, QR Code image and payment code to the merchant.
- The merchant displays the QR Code image and payment code to the customer.
Creating an PIX Payment
To create an PIX payment method, make a POST request as the example.
The minimum amount value is 1.00 BRL.
Request
Production URL:
https://api.boacompra.com/transactions
Method: POST
Sandbox URL:
https://api.sandbox.boacompra.com/transactions
Method: POST
Example of a request using PIX
{
"transaction": {
"reference": "REF-XXX-1234567890",
"project-number": 1,
"country": "BR",
"currency": "BRL",
"checkout-type": "direct",
"notification-url": "https://billing.checkout.com/processing",
"language": "pt-BR"
},
"charge": [
{
"amount": 1.00,
"payment-method": {
"type": "eft",
"sub-type": "pix"
}
}
],
"payer": {
"name": "John Doe",
"email": "[email protected]",
"birth-date": "1988-12-25",
"phone-number": "+5511987654321",
"document": {
"type": "CPF",
"number": "98765432101"
},
"address": {
"street": "Rua Teste",
"number": "1102",
"complement": "AP 302",
"district": "Bairro dos testes",
"state": "PR",
"city": "Maringá",
"country": "BR",
"zip-code": "87030000"
},
"ip": "200.221.118.80"
},
"shipping": {
"cost": 0,
"address": {
"street": "Rua Teste",
"number": "1102",
"complement": "AP 302",
"district": "Bairro dos testes",
"state": "PR",
"city": "Maringá",
"country": "BR",
"zip-code": "87030000"
}
},
"cart": [
{
"quantity": 1,
"description": "My Product",
"category": "Collectibles",
"type": "physical",
"unit-price": 1.00
}
]
}
{
"transaction": {
"reference": "REF-XXX-1234567890",
"project-number": 1,
"country": "BR",
"currency": "BRL",
"checkout-type": "direct",
"notification-url": "https://billing.checkout.com/processing",
"language": "pt-BR"
},
"charge": [
{
"amount": 1.00,
"payment-method": {
"type": "eft",
"sub-type": "pix"
}
}
],
"payer": {
"name": "John Doe",
"email": "[email protected]",
"birth-date": "1988-12-25",
"phone-number": "+5511987654321",
"ip": "200.221.118.80",
"document": {
"type": "CPF",
"number": "98765432101"
},
"banks": [
{
"code": "00000000",
"account": {
"type": "SVN",
"branch": "0001",
"number": "1234567"
}
},
{
"code": "00000000",
"account": {
"type": "SVN",
"branch": "0001",
"number": "1234567"
}
}
],
"address": {
"street": "Rua Teste",
"number": "1102",
"complement": "AP 302",
"district": "Bairro dos testes",
"state": "PR",
"city": "Maringá",
"country": "BR",
"zip-code": "87030000"
}
},
"shipping": {
"cost": 0,
"address": {
"street": "Rua Teste",
"number": "1102",
"complement": "AP 302",
"district": "Bairro dos testes",
"state": "PR",
"city": "Maringá",
"country": "BR",
"zip-code": "87030000"
}
},
"cart": [
{
"quantity": 1,
"description": "My Product",
"category": "Collectibles",
"type": "physical",
"unit-price": 1
}
]
}
Request Parameter List
Parameter | Description | Type | Size | Mandatory |
---|---|---|---|---|
transaction | Set of general transaction's information | Object | - | Yes |
transaction.reference | Merchant transaction identifier | String | Up to 64 | Yes |
transaction.project-number | Merchant project identifier. Default value is 1 | Integer | - | No |
transaction.country | Country of the payment. Accepts only BR | String | 2 | Yes |
transaction.currency | Currency transaction | String | 3 | e.g.: BRL |
transaction.checkout-type | Checkout type of the transaction. Accepts only direct | String | - | Yes |
transaction.notification-url | URL (must bind ports 80 or 443) used to send transaction status changes notifications by HTTP | String | Up to 200 | Yes |
transaction.language | Language used. Accepts pt-BR, en-US, es-ES, pt-PT and tr-TR | String | 5 | Yes |
charge[] | Set of payments. Currently accepting just one payment | Array | 1 | Yes |
charge[].amount | Amount of the transaction. Separating cents by point, with two decimal places. Amount sum must be equal to shipping.cost plus cart items value | Double | Min of 0.40 BRL | Yes |
charge[].payment-method.type | Payment Method type (credit-card, postpay , e-wallet or eft) | String | - | Yes |
charge[].payment-method.sub-type | Payment Method sub-type. Available payment methods (see more) | String | - | Yes |
payer | Set of customer's information | Object | - | Yes |
payer.name | Customer name | String | Up to 50 | Yes |
payer.email | Customer e-mail | String | Up to 60 | Yes |
payer.birth-date | Customer birth date. ISO-8601 Pattern (YYYY-MM-DD) | String | - | No |
payer.phone-number | Customer phone number. e.g (+5544999884455) | String | - | No |
payer.document.type | Customer document Type. accepts: cpf and cnpj | String | - | Yes |
payer.document.number | Customer identification document. No special characters allowed. | String | - | Yes |
payer.ip | Customer IP. accepts IPv4 or IPv6 | String | - | Yes |
payer.banks | Customer banks reference object | Object | Min: 1 Max: 3 | No |
payer.banks.[].code | Customer bank ISPB code. Only numbers. | String | Fixed 8 characters | Yes |
payer.banks.[].account | Customer bank account data object | Object | Yes | |
payer.banks.[].account.type | Customer bank account type, possible options: CRN: Current Account PAC: Payment Account SVN: Savings Account SAL: Salary Account | String | Yes | |
payer.banks.[].account.branch | Customer bank account branch. Only numbers. | String | FIxed 4 characters | Yes |
payer.banks.[].account.number | Customer bank account number. Only numbers, if number contains X replace to 0. | String | Min:2 Max:20 | Yes |
payer.address | Customer address object | Object | - | No [1] |
payer.address.street | Customer address street | String | 1 - 160 | Yes |
payer.address.number | Customer address number | String | 1 - 20 | Yes |
payer.address.complement | Customer address complement | String | Up to 40 | No |
payer.address.district | Customer address district | String | 1 - 60 | Yes |
payer.address.state | Customer address state or province | String | 2 | Yes |
payer.address.city | Customer address city | String | 1 - 60 | Yes |
payer.address.country | Customer address country (country iso 2) | String | 2 | Yes |
payer.address.zip-code | Customer address zip code | String | 8 | Yes |
shipping | Set of information that will be used to deliver the items in cart (see more) | Object | - | No [1] |
shipping.cost | Shipping cost. Separating cents by dot, with two decimal places | Double | Min of 0.01 | Yes |
shipping.address.street | Shipping address street | String | 3 - 160 | Yes |
shipping.address.number | Shipping address number | String | 1 - 20 | Yes |
shipping.address.complement | Shipping address complement | String | 5 - 40 | No |
shipping.address.district | Shipping address district | String | 4 - 60 | Yes |
shipping.address.state | Shipping address state or Province | String | 2 | Yes |
shipping.address.city | Shipping address city | String | 3 - 60 | Yes |
shipping.address.country | Shipping address country (country iso 2) | String | 2 | Yes |
shipping.address.zip-code | Shipping address zip Code | String | 8 | Yes |
cart.[] | Set of items (at least one Item) | Array | Min of 1 | Yes |
cart.[].quantity | Item quantity | Integer | Min of 1 | Yes |
cart.[].description | Item description | String | 1 - 200 | Yes |
cart.[].unit-price | Price per unit. Separating cents by dot, with two decimal places | Double | Min of 0.01 | Yes |
cart.[].type | Item type - must be one of the following: digital , physical , service , subscription | String | - | Yes |
cart.[].category | Item category | String | 1 - 64 | No |
[1] Required when cart[].type is physical
Some considerations about the payer name:
- Maximum length of 50 characters
- Minimum two words
- Each word must be separated by ONE space
- The first and last word must have at least 2 characters long
- Middle words can have only one character
- Accepted characters: A to Z, uppercase and/or lowercase letters
- Special characters accepted: éíóúãõâêôàèìòùäëïöüçñÁÉÍÓÚÃÕÂÊÔÀÈÌÒÙÄËÏÖÜÇÑ&/'.-
Some considerations about the payer email:
- On the local-part (before the @), only alphanumeric characters and the special characters - + . _ are allowed.
Response
Example of a response using PIX
{
"transaction": {
"code": "418824267",
"reference": "REF-XXX-1631109433",
"amount": 1,
"status": "PENDING",
"currency": "BRL",
"country": "BR",
"payer-email": "[email protected]",
"date-created": "2021-09-08T10:57:17.781893506-03:00",
"payment-code": "00020101021226830014br.gov.bcb.pix2561api.pagseguro.com/pix/v2/21D1BDC9-6ACF-4A94-B552-72A1D946EECD27600016BR.COM.PAGSEGURO013621D10000-6ACF-4A94-B552-72A1D946EECD52047994530398654041.005802BR5922BOA COMPRA TECNOLOGIA 6009Sao Paulo62070503***630412C3",
"qrcode-image": "https://payment.boacompra.com/img/V1kxd1Y1SUVuQjlUWk81d2kyNlhnZz09"
}
}
Response Parameter List
Property | Description | Type | Size | Format |
---|---|---|---|---|
transaction.code | PagSeguro´s reference | String | Up to 36 | e.g.: 111181153 |
transaction.reference | Merchant´s reference | String | Up to 64 | XXX-XXX-XX-XXXXXXXXXX |
transaction.amount | Transaction Amount | Number | - | e.g.: 50.0 |
transaction.status | Current status (see more) | String | - | e.g.: PAID |
transaction.currency | Currency transaction | String | 3 | e.g.: BRL |
transaction.country | Country transaction | String | 2 | e.g.: BR |
transaction.payer-email | Payer email | String | Up to 60 | e.g.: [email protected] |
transaction.date-created | Date of creation | String | - | e.g.: 2018-10-10T14:39:32.991217999-03:00 |
transaction.payment-code | Code generated for the payment, can be copied and pasted by the payer. | String | 250 | e.g.: 00020101021226830014br.gov.bcb.pix2561api.pagseguro.com/pix/v2/21D1BDC9-6ACF-4A94-B552-72A1D946EECD27600016BR.COM.PAGSEGURO013621D1BDC9-6ACF-4A94-B552-72A1D946EECD52047994530398654041.005802BR5922BOA COMPRA TECNOLOGIA 6009Sao Paulo62070503***630412C3 |
transaction.qrcode-image | URL with the image of the generated QR Code. | String | 64 | e.g.: https://payment.boacompra.com/img/V1kxd1Y1SUVuQjlUWk81d2kyNlhnZz09 |
PIX best practices
When providing an alternative payment method like PIX, it is required to include a confirmation page on the flow. Furthermore, this page may contain some features to increase the payment method conversion, as well as informing the particularities of the payment method chosen to the customer.
Points of attention for payment with PIX:
- The amount paid must be the same as the transaction amount if the amount paid is different the payment will not be recognized.
- The payer must use the option "pay with QR Code" in the app or internet banking.
- The payer cannot use the transfer option to complete the payment if this occurs the payment will not be recognized by the system.
- The Pix generated by the system is valid for 1 hour, after this period it will not be recognized and cannot be paid.
- The payment takes approximately 10 seconds to be confirmed.
Confirmation page example
Brazilian banks provide mobile apps with a feature to perform PIX payments where users have the option of either scan the PIX QR Code with their smartphone's camera or just insert the copy of the payment code.
-
Providing a high-resolution QR code can increase payment conversions. It allows the payer to easily complete the payment by simply pointing their phone and scanning the QR code.
INFO: To use this feature, use
transaction.qrcode-image
included in PIX's transaction response. -
Providing a copy of your payment code can help increase sales. If a payer cannot make a payment with the QR code, they can copy the payment code and enter it into their bank or wallet app to complete the payment.
**INFO**: To use this feature, use the `transaction.payment-code` line included in the Pix transaction response.
Those two options mentioned will definitely make you payment conversion increase so if you want higher volume of sale this mandatory for you.
Search API
Consult:
Updated 29 days ago