1. Online Payments
  • Developer Docs Ecuador 🇪🇨
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Refund a transaction
      • Void a transaction
      • Request deferred options
      • Validate OTP
      • Bin Info V2
      • Bin Info
    • One Click and 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
      • Get recurring charge Info
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Subscription Transactions
      • Get subscription transactions
    • Transfer in
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Cash in
      • Request a cash in token
      • Init Transaction
      • Update a cash in transaction
      • Transaction Status
      • Delete a cash in transaction
    • Smartlinks
      • Create a Smartlink
      • Update a Smartlink
      • Get a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Status
      • Get gateway status
      • Get platform status
    • Commissions
      • Get Commission Configuration
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Activate or deactivate
      • Delete credential
      • Update credential
      • Regenerate a credential
      • Advanced search
    • Payment Button
      • Create a payment button
    • Settlement
      • Query settlement
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • threeDomainSecure
    • webhooks
    • Card-old
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • Card
    • currency
    • networkToken
    • ChargebackItem
    • ErrorResponse
    • SettlementTicketRequest
    • SubscriptionTransaction
    • Subscription
    • Amount
    • ErrorResponse400
    • SettlementResponse
    • extraTaxes
    • Country
    • ErrorResponse401
    • SettlementRecord
    • Language
    • Deferred
    • ErrorResponse403
    • Metadata
    • payment_method
    • ErrorResponse500
    • ContactDetails
    • documentType
    • orderDetails
    • Shipping Address
    • Billing-Address
    • payment_submethod
    • SubscriptionUpdate
    • product
    • SubscriptionAdjustmentRequest
    • threeDomainSecure
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • ExternalReferenceId
    • transactionType
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Cash in

Allow your customers without a bank account to purchase your products or services from your website.
If your users do not have a bank account, or prefer to avoid additional charges such as interest or fees, the cash payment option is ideal. With this method, customers only need a payment reference and cash to complete a purchase at any authorized collection point.
Keep in mind!
Due to our risk policies, the available payment methods and the integration type may vary once you complete the affiliation. We will tell you how to proceed if this process applies to your merchant.

Payment Process#

The cash payment process consists of three main stages: generating a payment reference, making the payment at a physical point, and confirming receipt.
Cash In EN
Cash In payment flow
Request a Cash In Token
The customer selects cash as their payment method at checkout. Your frontend calls the token endpoint using your Public Merchant ID and the customer's identity data.
Required fields:
FieldTypeDescription
namestringCustomer's first name
lastNamestringCustomer's last name
identificationstringCustomer's ID number (numeric only)
documentTypestringCI, RUC, or PP (see below)
totalAmountnumberTotal transaction amount
currencystringAlways USD for Ecuador
emailstringCustomer's email (optional)
descriptionstringPayment description (optional)
Document types accepted in Ecuador:
ValueDocument
CICédula de Identidad 🇪🇨
RUCRegistro Único de Contribuyentes 🇪🇨
PPPassport 🇪🇨
Init Transaction
Your backend calls the Init Transaction endpoint using the token from the previous step and your Private Merchant ID. Kushki generates a PIN and a payment receipt (PDF) that the customer will present at the collection point.
Request fields:
FieldRequiredDefaultDescription
token✅—Token from the previous step
amount✅—Amount object (see structure below)
expirationDate❌7 daysDate until which the PIN is valid. Format: YYYY-MM-DD HH:mm:ss (UTC). Must be at least 1 day after token creation.
metadata❌—Custom key-value pairs for your records
webhooks❌—Real-time notification URLs
fullResponse❌—Send "v2" to receive the extended response
Response fields:
FieldDescription
pinPayment reference code the customer presents at the collection point
pdfUrlURL of the printable payment receipt
ticketNumberKushki transaction identifier — use this for status checks
transactionReferenceUnique UUID-based reference for this transaction
details.expirationUnix timestamp (ms) of the PIN expiration date
details.transactionStatusAlways initializedTransaction at this point
details.agreementDetailsList of authorized collection points and their agreement numbers
Share both pin and pdfUrl with the customer — they can use either to pay at a collection point.
Customer Pays at a Collection Point
The customer goes to any authorized physical collection point with their PIN or printed receipt. The cashier validates the reference and accepts the cash payment for the transaction amount.
No backend action is required during this step.
Check Transaction Status
After the payment window, poll the Transaction Status endpoint using the ticketNumber as a path parameter to confirm whether the payment was completed.
Transaction statuses in Ecuador:
StatusMeaning
initializedTransactionPIN generated — payment not yet made
approvedTransactionCash received — funds credited to your account
expiredTransactionPIN expired before the customer paid

Amount Object#

The amount object is required in the Init Transaction step. The structure depends on whether the transaction has taxes:
Without taxes (IVA 0)
With IVA taxes
With ICE tax
{
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 100.00,
    "iva": 0,
    "ice": 0,
    "currency": "USD"
  }
}
Set the full amount in subtotalIva0. Set all other fields to 0.

Manage a Transaction#

Once a transaction is initialized, you can update or cancel it before the customer completes the payment.
Update Amount
Use the Update endpoint (PATCH /cash/v1/charges/{ticketNumber}) to modify the totalAmount of an existing cash-in transaction before the customer pays.
Only the totalAmount field can be updated.
Delete Transaction
Use the Delete endpoint (DELETE /cash/v1/charges/{ticketNumber}) to cancel a transaction and invalidate the PIN before the customer makes the payment.

Webhook Notifications#

Include the webhooks object in your Init Transaction request to receive real-time payment notifications. This is independent of any webhooks configured in the Kushki Console — both channels fire simultaneously.
{
  "webhooks": [
    {
      "events": ["approvedTransaction", "declinedTransaction"],
      "headers": [
        { "label": "Authorization", "value": "Bearer your-token" }
      ],
      "urls": [
        "https://merchant.example.com/webhooks/cash-in"
      ]
    }
  ]
}

Sandbox Testing#

Test scenarios
Use these identification values to simulate different outcomes in the Sandbox environment:
identificationSimulated result
Any valid numberapprovedTransaction
9999999999initializedTransaction (pending payment)
1000000000declinedTransaction
After initializing the transaction, use the Transaction Status endpoint to verify the simulated result.

Authentication#

StepHeaderKey type
Request a TokenPublic-Merchant-IdPublic Key (Kushki Console → Credentials)
Init TransactionPrivate-Merchant-IdPrivate Key (Kushki Console → Credentials)
Transaction StatusPrivate-Merchant-IdPrivate Key
Update TransactionPrivate-Merchant-IdPrivate Key
Delete TransactionPrivate-Merchant-IdPrivate Key
Never expose your Private-Merchant-Id in client-side code. Only the token request uses the Public Key and can be called from the frontend.

Error Codes#

CodeMessageCause
C001Cuerpo de la petición inválidoMalformed or missing required fields
C003Token inválidoThe token provided is invalid or expired
C005Id de transacción no válidoInvalid ticketNumber in the path
C006Monto de la transacción inválidoInvalid transaction amount
C017La fecha de expiración no es válidaexpirationDate is in the past or less than 1 day from creation
C018La transacción no existe o ha sido eliminadaTransaction was already deleted or does not exist
C023No es posible actualizar la transacciónTransaction cannot be updated (already paid or expired)
C040El ID de comercio no corresponde a la credencial enviadaPublic and Private keys belong to different merchants
C066Las credenciales no son correctas o no coincidenCredentials are incorrect or mismatched
K004ID de comercio o credencial no válidoInvalid merchant ID or credential

Using the API#

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

Available Endpoints#

Request a Cash In Token
Tokenizes the customer and amount data. Requires Public Merchant ID.
Init Transaction
Generates the payment PIN and receipt URL. Requires Private Merchant ID.
Transaction Status
Returns the current status of a cash-in transaction by ticketNumber.
Update a Cash In Transaction
Updates the totalAmount of an initialized transaction before payment.
Delete a Cash In Transaction
Cancels and invalidates the PIN of an initialized transaction.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-11 00:04:25
Previous
Get Status
Next
Request a cash in token
Built with