Create a PSE Avanza Transfer

PSE (Pagos Seguros en Línea) is Colombia's centralized bank transfer system. The PSE Avanza modality allows your Colombian customers to make online payments by debiting the amount directly from their bank accounts securely.

This documentation details the parameters required to generate a PSE Avanza transaction through the PagSeguro International (PSI) API.

Payment flow

Recommended flow

  1. Display the bank list: Present the list of available PSE banks to the customer and capture their selection.
  2. Create the transaction. Send a POST /v3/transactions with charge.method: "PSE_AVANZA" and the customer's bank_code.
  3. Redirect the customer. Use the redirect URL returned in the response to send the customer to PSE's bank portal for authentication.
  4. Wait for the webhook. PSI will POST the final status (APPROVED or REJECTED) to your notification_url.
  5. Display the result. Redirect the customer to your success or failure URL based on the webhook status.

Endpoint

POST /v3/transactions

Headers

  • Authorization: Bearer {access_token}
  • Content-Type: application/json
  • Idempotency-Key: {{UUID4}}

Step 1: Make a request

Key fields

Object / ParameterRequiredDescription
integrationYesTransaction settings and return URLs.
integration.referenceYesUnique reference ID or code for the order in your system.
integration.notification_urlYesWebhook URL where PSI will send status updates.
integration.languageYesPayment interface language (e.g., es_CO).
integration.redirect_urlsYesURLs for user redirection after the flow.
chargeYesPayment method specifications.
charge.countryYesISO country code. Must be CO for Colombia.
charge.methodYesPayment method. Must be PSE_AVANZA.
charge.pse_avanzaYesObject containing PSE-specific details.
charge.pse_avanza.bank_codeYesClearing code of the bank selected by the customer (e.g., "1059").
payerYesInformation about the customer making the payment.
payer.addressYesPayer's address (street, number, district, city, etc.).

Request example

{
  "integration": {
    "reference": "REF-XXX-1234567890",
    "notification_url": "https://www.merchantwebsite.com/notify? type=transaction",
    "language": "es_CO",
    "redirect_urls": {
      "success": "https://example.com/payment/success",
      "failure": "https://example.com/payment/failure"
    }
  },
  "order": {
    "currency": "COP",
  },
  "charge": {
    "country": "CO",
    "method": "PSE_AVANZA",
    "pse_avanza": {
      "bank_code": "0000"
    }
  },
  "payer": {
    "address": {
      "street": "Cl. 77",
      "number": "112",
      "complement": "",
      "district": "Bogota",
      "state": "BO",
      "city": "Bogota",
      "country": "CO",
      "zip-code": "110541"
    }
  }
}

Step 2: Process the API Response

The API response will confirm the creation of the payment intent. For PSE, the customer usually needs to be redirected to the bank's interface to complete the transfer. The return will detail the processed data.

Key fields

Object / ParameterRequiredDescription
integrationYesConfirmation of the integration data sent.
integration.redirect_urlsYesSuccess and failure URLs for final redirection.
orderYesDetails of the order processed by the API.
order.currencyYesProcessed currency (COP for Colombian Pesos).
chargeYesConfirmation of the registered payment method.
charge.countryYesCountry (CO for Colombia).
charge.methodYesPayment method (PSE_AVANZA).
charge.pse_avanzaYesConfirms the registered bank_code (e.g., "0000").
payerYesConsolidated payer data.
payer.person.documentYesContains type (e.g., CE) and document number.

Response example

{
  "integration": {
    "reference": "Ref-9d52a4be-dd1d-4644-b83c-5bb5873db992-test-glauco4",
    "notification_url": "https://www.merchant.com/notify",
    "language": "pt_BR",
    "redirect_urls": {
      "success": "https://www.merchant.com/success",
      "failure": "https://www.merchant.com/failure"
    }
  },
  "order": {
    "currency": "COP",
    "items": [
      {
        "quantity": 1,
        "description": "Test",
        "unit_price": 4000
      }
    ]
  },
  "charge": {
    "country": "CO",
    "method": "PSE_AVANZA",
    "pse_avanza": {
      "bank_code": "1059"
    }
  },
  "payer": {
    "email": "[email protected]",
    "ip": "64.237.155.62",
    "person": {
      "name": "JOAO DA SILVA",
      "birth_date": "1999-11-04",
      "document": {
        "type": "CE",
        "number": "Z778899"
      },
      "phone": {
        "country_code": "59",
        "number": "6999343434"
      }
    },
    "address": {
      "street": "Avenida Brasil",
      "state": "PR",
      "city": "Maringá"
    }
  }
}

Next steps

  1. Redirection: The customer must be redirected to the bank's interface to authenticate the transaction.
  2. Webhooks: Wait for the final status update at your notification_url (e.g., PENDINGAPPROVED or REJECTED).