QR (Perú)

This payment solution is only available in Perú.

How does it works?

Generation of the QR Code: To accept payments via QR code, the seller must generate a QR code linked to the transaction amount.

Scanning the Code: Once the QR code has been generated, the customer must scan it with their mobile device. This can be done using their bank's app

Confirmation and Authorization: When the code is scanned, a payment screen will open on the customer's device, allowing them to review the transaction details and complete the payment.

Transaction Processing: The information is transmitted through a secure network, and the transaction is processed. The funds are transferred from the customer's account to the operator's account.

Payment Confirmation: Both parties involved receive instant notifications confirming the success of the transaction.

Info

  • A QR Bank Transfer payment order expires by default within 1 days after the creation date.

  • However, the expiration date can be set according to our clients requirements between 1 to 7 days.

QR

POST https://api.stage.localpayment.com/api/payin

Headers

Name
Type
Description

Authorization*

string

Mandatory. JWT token in format Bearer eyJ0.... For more information about authentication, please refer to Authentication.

Request Body

Name
Type
Description

externalId*

string

Mandatory. An ID that is meaningful to you and your system. It must be unique and alphanumeric, no characters allowed.

paymentMethod*

object

Mandatory. Payment method details.

paymentMethod.type*

string

Mandatory. ”BankTransfer".

paymentMethod.code*

string

Mandatory. “6080" (QR).

paymentMethod.flow*

string

Mandatory. “DIRECT".

country*

string

Mandatory. "PER" Peru in ISOCode3 format.

currency*

string

Mandatory. The currency in which the amount is expressed. It could be he local currency of the selected country (PEN).

accountNumber*

string

Mandatory. Your Localpayment account number in which the amount will be credited.

conceptCode*

string

Mandatory. Choose the suitable concept code from our Concept Code List. Based on our experience, the most usual are 0039 (remittances) and 0040 (corporate payments).

comment

string

Optional. A comment related to the transaction. It should be something meaningful to your business.

merchant*

object

Mandatory. Merchat details.

merchant.type*

string

Mandatory. Possible value: COMPANY.

merchant.name*

string

Mandatory. Name of business.

payer*

object

Mandatory. Information related to the payer.

payer.type*

string

Mandatory. Possible values: COMPANY, INDIVIDUAL.

payer.name*

string

Mandatory. Individual first name / company name.

payer.lastName*

string

Mandatory for individuals / Ignored for companies.

payer.document*

object

payer.document.type*

string

Mandatory. Document types.

payer.document.id*

string

Mandatory. Identity document Id. Usually numbers or combination of numbers and letters.

email

string

Mandatory. Email payer.

commercialData

array object

Optional. Extra information related to the goods or services traded.

items.id

string

Mandatory. Item ID.

items.title

string

Mandatory. Item title.

items.description

string

Mandatory. Item description.

items.quantity

number

Mandatory. Item quantity.

item.unitPrice

number

Mandatory. Item unit price.

Example

Request Body

{
      "externalId": "{{externalId}}",
      "paymentMethod": {
        "type": "BankTransfer",
        "code": "6080",
        "flow": "DIRECT"
      },
      "country": "PER",
      "currency": "PEN",
      "amount": 300.00,
      "accountNumber": "{{yourAccountNumber}}",
      "conceptCode": "0001",
      "comment": "",
      "merchant": {
        "type": "COMPANY",
        "name": "Name"
      },
      "payer": {
        "type": "INDIVIDUAL",
        "name": "Name",
        "lastName": "LastName",
        "document": {
          "type": "DNI",
          "id": "12345678"
        },
        "email": "[email protected]"
      },
      "commercialData": {
        "items": [
          {
            "id": "001",
            "title": "test",
            "description": "test",
            "quantity": "6",
            "unitPrice": 50
          }
        ]
      }
    }

Response Body 200 OK

{
    "transactionType": "PayIn",
    "externalId": "{{externalId}}",
    "internalId": "{{internalId}}",
    "paymentMethod": {
        "type": "BankTransfer",
        "code": "6080",
        "flow": "DIRECT"
    },
    "country": "PER",
    "currency": "PEN",
    "amount": 300.00,
    "accountNumber": "{{yourAccountNumber}}",
    "confirmed": {
        "currency": "PEN",
        "amount": 300.00,
        "fxQuote": 0.00
    },
    "payment": {
        "currency": "PEN",
        "fxQuote": 0.00,
        "financingFee": 0.00,
        "amount": 300.00
    },
    "localTaxes": [],
    "withHoldings": [],
    "fees": {},
    "status": {
        "code": "100",
        "description": "INPROGRESS",
        "detail": "The payin is pending the confirmation"
    },
    "qr": {
        "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsAQAAAABRBrPYAAADRUlEQVR4Xu2XbY7bMAxEeQPe/5a8Acs3dBaxdoH2TzsBaiF1Hek5ED9m5I3+k1Fxzvw4HuwYD3aMBzvGgx3jf8MqIjoyMruq5y6LT6QWzFizXHzLiOyoIbMH1ZoXq6ie9dm04Lmt1/UTsFmevTc5DuYnhP4UjL2TWPbepDZI7wdgkAM1WQaf5dSDWvNiU+b6cXxT1gns+IuYBllFwWycuk8UX2tGbHaqG7KaSCXJNZaDqr0Y2wdIbLBWOI0TTiO4sZKKm9wWaNKjfImNxYrNJNDAE0yR38amCejKvw1rloMGaFD8L/YuFYETUw75F9dpJpducstDVmymr5M2VsvF6Tup3YCsWHFWkN0irynV8NxkWw5txuQyazVFAAQip7mHYMCYZvOIBHsBURuQcDdGJoNuhJTTFCPoTy/GKx7+MhrZJgBuqduOlY4zHCbJMiQfWc299P8e0wmWePR26Kyp5vNEXL9jw4oZXWbDQEVDgq6arZg2r2/IebugOEEQkxfbHpxpNSTVVn9S+HovvQVT2TEXVEyW6c9E45tfJ1akkdzSlUEsBIKS7pEasFlsGpEpsjyx8MejQnBjFH4deRKrBLPKe0LRB1bsldGJBQXLAzHq7xZtwCj93HGmBXfYs5rgXnoHpk0jGAJRvWciddytZpwYrajyr6JBCKOurnRieg9GMjCq+2B8aE031myewwKAYBA0qsl3G/RgxfY5LBolA8kNg3DcmKLozSdmGLKYYe6ld2Aa8jx1IjtP9MLNW+k9WJFOAsFjSPDAaFoHixlLmhJ32RPjKr2u+zNWrPakDUqu+aQVetVsxbgiYKymYAYvgqJjvdhan0KA4pM8kvSnGZv/k87EAy/N6OHzaHNgyqgMkGl2/VILGTdjVyB6SVGquRYJvlXBgnH8hyY4Rnjni+tY82O82dGTgWbUooXh6IXPjHFDF8pq1v+Qsm7v+bdguntZjSybcBScFyuOjUsq0nPJZJLbr99wYfr0vq6wb4im7kRkxuTO1Jl19egqmi74CEzbxakLTaOXvNbtGAJWpdWcs39yK7vxYpCw64LklzQTzy0EC7aSIZRELLxBYYbQ76V3YL8dD3aMBzvGgx3jwY7xYMeoX9xXVTGl7tqkAAAAAElFTkSuQmCC",
        "expirationDate": "2025-04-21T16:14:26.0596069",
        "paymentInstructions": "<b><i>From Yape, Plin or other entity aplications, scan the QR code and complete the payment process</i></b>"
    },
    "merchant": {
        "type": "COMPANY",
        "name": "LocalPayment"
    },
    "payer": {
        "type": "INDIVIDUAL",
        "name": "Name",
        "lastname": "Lastname",
        "document": {
            "type": "DNI",
            "id": "12345678"
        },
        "email": [email protected]"
    },
    "date": {
        "creationDate": "2025-04-14T16:14:25.517+00:00",
        "processedDate": "2025-04-14T16:14:28.1901483",
        "expirationDate": "2025-04-21T16:14:26.0596069"
    },
    "paymentInstructions": "<b><i>From Yape, Plin or other entity aplications, scan the QR code and complete the payment process</i></b>",
    "errors": []
}

Response Body 400 Bad Request

{
    "externalId": "{{externalId}}",
    "internalId": "{internalId{}}",
    "status": {
        "code": "300",
        "description": "REJECTED"
    },
    "errors": [
        {
            "code": "300",
            "detail": "Invalid param + [paymentMethod] + doesn´t exists for PER"
        }
    ]
}

QR image

QR payment order response will return, among others, an OBJECT named "qr". The elements that compose the "qr" object are: "image" (QR image in base64),"expirationDate" and "paymentInstructions".

Info

  • To complete the payment you must scan the QR in the digital wallet application, where you are previously registered as a user.

  • You will be able to use with the following affiliated digital wallet application:

    • YAPE

    • PLIM

    • DALE

    • LIGO

  • QR payments have a minimum amount of 1 PEN and a maximum amount of 500 PEN per transaction, the daily limit is 2000 PEN in total and applies per user.

Complete the Payment with YAPE

Last updated

Was this helpful?