Skip to main content

Overview

The PayOut Form API for Peru enables secure disbursements to bank accounts and digital wallets through bank transfer methods. The initiate response always includes a form_url for the beneficiary to complete banking data; transactions are processed asynchronously with webhook notifications for status updates.

Key Features

  • Bank Transfer Support: Standard BANK_TRANSFER method
  • Currency: Peruvian Sol (PEN)
  • Asynchronous Processing: Background processing with webhook notifications
  • Wide Bank Coverage: Support for major Peruvian banks and digital wallets (Yape, Plin, BIM)
  • CCI Support: Interbank account code (CΓ³digo de Cuenta Interbancaria) for transfers

Quick Reference

ParameterValueDescription
EndpointPOST /api/v1/payout/formInitiate PayOut Form transaction
CompletePOST /api/v1/partial-payout/{uuid}/completeComplete beneficiary banking data
CurrencyPENPeruvian Sol
Country CodePEPeru
Auth RequiredYesToken-Top + Basic Auth
ProcessingAsyncStatus updates via webhook

Request Parameters

Required Fields

FieldTypeDescriptionExample
payment_methodstringDisbursement method"BANK_TRANSFER"
referencestringUnique transaction identifier from your system"3cNPNGbX7meiMppXzVz7g781ysektqq5X"
amountfloatTransaction amount in PEN1.50 (= S/ 1.50 PEN)
currencystringThree-letter currency code (ISO 4217)"PEN"
countrystringTwo-letter country code (ISO 3166-1 alpha-2)"PE"
ipn_urlstringWebhook URL for transaction status updates"http://example.com/tu-webhook"
customer_dataobjectCustomer and account information (see below)-

Customer Data Object

FieldTypeRequiredDescriptionExample
legal_doc_typestringβœ…Document type: DNI, RUC, CE, PPN"DNI"
phone_codestringβœ…Country calling code"51"
phone_numberstringβœ…Phone number without country code"900000001"
emailstringβœ…Customer email address"johndoe@email.com"
full_namestringβœ…Customer full name"John Doe"
legal_docstringOptionalCustomer’s legal document number"12345678"
bankstringOptionalDestination bank code"BCP", "YAPE", "PLIN", etc.
account_numberstringOptionalBank account number or wallet ID"1234567890123"
account_typestringOptionalAccount type: AHORRO, CORRIENTE, WALLET"AHORRO"
ccistringOptionalInterbank account code (20 digits)"12345678912345678910"

Response Structure

Success Response

FieldTypeDescription
codestringResponse code ("01" = success)
statusstringTransaction status ("SUCCESS")
messagestringDescription of the response
dataobjectTransaction data object

Data Object

FieldTypeDescription
ticketstringUnique transaction identifier (TumiPay ID)
datestringTransaction timestamp (YYYY-MM-DD HH:MM:SS)
transactionobjectTransaction details echo
form_urlstringURL for the beneficiary to complete banking data in the hosted form

Transaction Status Flow

StatusDescription
PENDINGTransaction created, processing initiated
APPROVEDFunds successfully transferred to recipient
REJECTEDTransaction rejected by bank or validation failure

Examples

Request Example

cURL
curl --request POST 'https://api-empresas.staging.topup.com.co/production/api/v1/payout/form' \
--header 'Token-Top: your_auth_token' \
--header 'Authorization: Basic your_auth_key' \
--header 'Content-Type: application/json' \
--data-raw '{
    "payment_method": "BANK_TRANSFER",
    "reference": "3cNPNGbX7meiMppXzVz7g781ysektqq5X",
    "amount": 150,
    "currency": "PEN",
    "country": "PE",
    "ipn_url": "http://example.com/tu-webhook",
    "customer_data": {
        "legal_doc_type": "DNI",
        "phone_code": "51",
        "phone_number": "900000001",
        "email": "johndoe@email.com",
        "full_name": "John Doe"
    }
}'

Response Example

{
    "code": "01",
    "status": "SUCCESS",
    "message": "Operacion exitosa",
    "data": {
        "ticket": "1achNGuPvS9B9v6",
        "date": "2025-10-15 17:42:25",
        "transaction": {
            "reference": "3cNPNGbX7meiMppXzVz7g781ysektqq5X",
            "amount": 150,
            "currency": "PEN",
            "payment_method": "BANK_TRANSFER"
        },
        "form_url": "https://checkout.tumipay.co/payout/form?uuid=550e8400-e29b-41d4-a716-446655440000"
    }
}

POST /api/v1/partial-payout/{uuid}/complete

Use {uuid} from form_url. Headers: Token-Top, Authorization: Basic …, Content-Type: application/json.

Request Parameters β€” Bank transfer

FieldTypeRequiredDescriptionExample
legal_docstringβœ…Customer’s legal document number"12345678"
legal_doc_typestringβœ…Document type: DNI, RUC, CE, PPN"DNI"
bankstringβœ…Destination bank code"BCP"
account_numberstringβœ…Bank account number"19171017707056"
account_typestringβœ…AHORRO or CORRIENTE"AHORRO"
ccistringConditionalInterbank account code (20 digits)"00219117101770705655"
The cci field is required for traditional bank accounts but optional for digital wallets (YAPE, PLIN, BIM).

Request Parameters β€” Wallet

FieldTypeRequiredDescriptionExample
legal_docstringβœ…Customer’s legal document number"12345678"
legal_doc_typestringβœ…Document type: DNI, RUC, CE, PPN"DNI"
bankstringβœ…Wallet code"YAPE"
account_typestringβœ…WALLET"WALLET"
phone_numberstringβœ…Registered wallet phone number (9 digits)"915579718"

Response Structure

FieldTypeDescription
codestringResponse code ("01" = success)
statusstringTransaction status ("SUCCESS")
messagestringDescription of the response
dataobjectTransaction data object

Data Object

FieldTypeDescription
ticketstringUnique transaction identifier (TumiPay ID)
datestringTransaction timestamp (YYYY-MM-DD HH:MM:SS)

Examples

cURL β€” Bank
curl --request POST 'https://api-empresas.staging.topup.com.co/production/api/v1/partial-payout/550e8400-e29b-41d4-a716-446655440000/complete' \
--header 'Token-Top: your_auth_token' \
--header 'Authorization: Basic your_auth_key' \
--header 'Content-Type: application/json' \
--data-raw '{
    "legal_doc": "12345678",
    "legal_doc_type": "DNI",
    "bank": "BCP",
    "account_number": "19171017707056",
    "account_type": "AHORRO",
    "cci": "00219117101770705655"
}'

Response Example

{
    "code": "01",
    "status": "SUCCESS",
    "message": "Operacion exitosa",
    "data": {
        "ticket": "1achNGuPvS9B9v6",
        "date": "2025-10-15 17:42:25"
    }
}