1. Online Payments
  • API Docs Peru 🇵🇪
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Preauthorization (tokenless)
      • Create payment (tokenless)
      • Void a transaction
      • Refund a transaction
      • Verify Account
      • Request deferred options
      • Authorize payments
      • Reauthorize payments
      • Capture an authorized payment
      • Validate OTP
      • Bin Info V2
      • Bin Info
    • One-Click & Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Update recurring charge card data
      • Make an One-click payment
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Card Out
      • Get Card Payout Token
      • Get Subscription Token
      • Push funds
      • Push Funds in subscriptions
      • Get transaction status
      • Delete Subscription
    • Transfer In
      • Get Bank List
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Transfer Out
      • Get Bank List
      • Get Bank List V2
      • Request a Transfer Out token
      • Init Transaction
      • Get Status
      • Balance for Payouts
    • Cash In
      • Request a cash in token
      • Init Transaction
      • Transaction Status
    • Smartlinks V2
      • Create a Smartlink
      • Update a Smartlink
      • Get a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Gateway Status
      • Get gateway status
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Advanced search
      • Activate or deactivate
      • Delete credential
      • Update credential
      • Regenerate a credential
    • Payment Button
      • Create a payment button
    • Platform Status
      • Get platform status
    • Subscription Transactions
      • Get subscription transactions
    • Settlement
      • Query settlement
  • Card Present Payments (API Raw)
    • Release notes
    • Key Exchange Process
    • Test data
    • Kushki Error Catalog for POS transactions
    • The Amount Object
    • One-time Payments
      • Single payment
    • Two-step Payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
      • Void & Reverse
    • Card information
      • Get BIN Info
      • Bin Info V2
      • Request deferred options
      • Balance inquiries
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
  • Kushki One
    • Cloud Services
      • Payment Cloud
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print Cloud
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment Local
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Transaction Search — Local
        • Transaction Search — Online
        • Abort
      • Print Local
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Raíz
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • Amount-cash-in
      • GetConfigurationRequest
    • Identity & Contact
      • Shipping Address
    • Card & Payments
      • ChargesVoidCardResponse
      • Promotions
      • Submerchant
    • Subscriptions
      • SubscriptionUpdate
      • SubscriptionAdjustmentRequest
      • SubscriptionTransactionsResponse
    • Webhooks
    • Analytics
      • AnalyticsTransactionItem
      • AnalyticsListResponse
    • Settlement
      • SettlementDateRangeRequest
      • SettlementTicketRequest
      • SettlementResponse
    • Chargebacks
      • ChargebackListResponse
      • ChargebackSearchRequest
    • Cash
      • CashChargeInitRequest
      • CashStatusResponse
    • Transfer
      • TransferTokenRequest
      • TransferInitRequest
      • TransferStatusResponse
    • Payouts
      • PayoutsWebhooksItem
    • Smart Link
      • SmartLinkAmount
    • Terminal
      • AmountWithTaxes
      • AmountCore
      • AmountWithTip
      • TerminalCardDetails
      • TerminalPosDetails
      • TerminalContactDetails
      • TerminalCardData
      • TransactionResponse
      • LinkFailure
      • TransactionSearchRequest
      • PrintJobRequest
      • PrinterError
      • PrintJobStatus
      • PrintWebhookPayload
    • RequestBodies
      • one-and-two-step-payment
    • currency
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • card-old
    • AmountWithTaxes-old
    • Card
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SettlementTicketRequest
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • networkToken
    • Language
    • extra_taxes
    • card_details
    • currency
    • ErrorResponse400-old
    • webhooksItem
    • ErrorResponse
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • currency
    • card
    • orderDetails-old
    • Country
    • ContactDetails-old
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • Amount
    • amount
    • documentType
    • extraTaxes-old
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • extraTaxes
    • enc_tlv
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • Deferred
    • pos_details
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • paymentMethod-old
    • Metadata
    • contact_details
    • Billing-Address-old
    • Deferred-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • ContactDetails
    • sub_merchant
    • headers
    • Amount-old
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • metadata
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • messageFields
    • PrinterError-old
    • Billing Address
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • currency-cash-in-old
    • product
    • webhooks
    • networkToken-old
    • PrintWebhookPayload-old
    • currency-CL-old
    • threeDomainSecure
    • webhooks
    • product-old
    • headers
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • citMit
    • network
    • Card-old-old
    • Submerchant-old
    • binInfo
    • Shipping-Address-old
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • transactionType
    • InvalidBinResponse-old
    • GetConfigurationRequest-old
    • BadRequestResponse-old
    • Amount-CL-old
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Transfer Out

Transfer Out lets you send funds from your Kushki wallet to a recipient's bank account. Use it for disbursements, supplier payments, refunds, or any payout flow where you need to push money out.
Keep in mind!
Token generation requires your Private Key (Private-Merchant-Id). Never expose it in client-side or frontend code — always call the token endpoint from your backend.

Payment flow#

1
Get the bank list
Call GET /payouts/transfer/v1/bankList (or v2 for extended metadata) to retrieve available destination banks. Use the code value as bankId in the token request.
2
Request a Transfer Out token
Call POST /payouts/transfer/v1/tokens with the recipient's account details and payment information. Returns a one-time token.
{
  "bankId": "002",
  "accountType": "CC",
  "accountNumber": "1234567890123",
  "currency": "PEN",
  "totalAmount": 500.00,
  "documentType": "DNI",
  "documentNumber": "12345678",
  "name": "Carlos Ramirez",
  "mail": "user@example.com",
  "paymentDescription": "Supplier payment #789"
}
3
Initiate the disbursement
Call POST /payouts/transfer/v1/init with the token. The response returns a ticketNumber and transactionReference.
{
  "token": "V0OzRB100000xhxQB8035251pHLBQsq5",
  "fullResponse": "v2"
}
Response:
{
  "status": "INITIALIZED",
  "ticketNumber": "1574298975417951",
  "transactionReference": "aef8884f-cd4d-4b9b-9efa-ad582629e4f2"
}
4
Check the transaction status
Call GET /payouts/transfer/v1/transaction/{ticketNumber} to verify the disbursement was processed.
Check the status field:
ValueMeaning
INITIALIZEDTransfer accepted and queued for processing
APPROVALFunds successfully sent to the recipient
DECLINEDTransfer rejected
VOIDEDTransfer cancelled before processing

Currencies#

CurrencyCode
Peruvian SolPEN
US DollarUSD

Document types#

ValueDescription
DNIDocumento Nacional de Identidad 🇵🇪
CECarné de Extranjería 🇵🇪
PASPasaporte 🇵🇪
RUCRegistro Único de Contribuyentes 🇵🇪

Account types#

Peru supports the following bank account types for ACH transfers:
ValueDescription
CCCuenta Corriente (checking account)
CACuenta Ahorros (savings account)
CMCuenta maestra (master account — Peru only)

Account number format#

ConditionFormat
BCP (bankId: "002") with CCExactly 13 digits
BCP (bankId: "002") with CAExactly 14 digits
Any other bankCCI (Código de Cuenta Interbancaria) — exactly 20 digits, no spaces, hyphens, or special characters

Token request fields#

FieldRequiredDescription
bankIdYesCode of the destination bank from the bank list endpoint.
accountTypeYesBank account type: CC, CA, or CM.
accountNumberYesRecipient's bank account number. See format rules above.
currencyYesPEN or USD.
totalAmountYesTotal amount to disburse.
documentTypeYesRecipient's document type.
documentNumberYesRecipient's document number.
nameYesFull name of the recipient. No special characters allowed in Peru.
mailNoRecipient's email address.
paymentDescriptionNoDescription of the payment, shown on the bank statement.

Void a transfer#

To cancel a Transfer Out transaction before it is processed, call:
DELETE /payouts/transfer/v1/transaction/{ticketNumber}
Pass the ticketNumber returned by the status endpoint. Voids are only possible while the transaction is in INITIALIZED status.

Check wallet balance#

Before initiating a disbursement, verify that your Kushki wallet has sufficient funds:
GET /wallet/v1/merchant/balance
Response:
{
  "balanceDate": 1687371952224,
  "currency": "PEN",
  "currentBalance": 717169.22
}

Webhooks#

Include a webhooks array in your init request to receive real-time status notifications:
{
  "webhooks": ["https://yoursite.com/kushki/notify"]
}

Bank List v1 vs v2#

EndpointDescription
GET /payouts/transfer/v1/bankListReturns bank code and name. Use for standard ACH transfers.
GET /payouts/transfer/v2/bankListExtended response with internationalCodes and additional metadata.

Authentication#


Using the API#

🟢 Production
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

Available Endpoints#

Get Bank List
Returns the list of supported destination banks with code and name.
Get Bank List V2
Extended bank list with international codes and additional metadata.
Request a Transfer Out Token
Tokenize the disbursement with recipient account details. Returns a one-time token.
Init Transaction
Start the bank transfer disbursement. Returns a ticket number for tracking.
Get Status
Check the current status of a Transfer Out transaction by ticket number.
Void a Transaction
Cancel a Transfer Out transaction before it is processed.
Wallet Balance
Retrieve the current available balance in your Kushki payout wallet.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-11 00:04:35
Previous
Get Status
Next
Get Bank List
Built with