EFT
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.
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 buyer 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
}
]
}
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.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, on this page we can include 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 an average of 10 seconds to be confirmed.
Confirmation page example
In Brazil, Banks, Mobile Wallets APPs has the funcionallity to make payment with PIX, where users can scan the QR Code or just Inserting the Copy of Payment Code.
-
When you provide a QR Code with a good quality resolution it will make the convertion payment increase as it will allow the client make the payment easly just point their phone and scanning the QR Code to finalize the payment.
INFO: To use this feature, use
transaction.qrcode-image
included in PIX's transaction response. -
When you provide the Copy of your Payment Code it will also help to increase your sales if by any chance the user couldn´t make the payment with QR Code, in this case it will allow the client make a copy of the payment code and insert it in their Bank or Wallet App to finalize the payment.
**INFO**: To use this feature, use the `transaction.payment-code` line included in the Pix transaction response.
Those two options mentioned will definitly make you payment convertion increase so if you want higher volume of sale this mandatory for you.
Updated 9 months ago