1. Online Payments
  • API Docs Colombia 🇨🇴
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Void a transaction
      • Refund a transaction
      • Request deferred options
      • Authorize payments
      • Preauthorization (tokenless)
      • Reauthorize payments
      • Capture an authorized payment
      • Verify Account
      • Validate OTP
      • Bin Info
      • BIN info V2
    • One-Click & Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Make an One-click payment
      • Update recurring charge card data
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • 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
      • Delete a cash in transaction
      • Update a cash in transaction
    • Cash-out
      • Request a cash out token
      • Init Transaction
      • Transaction Status
      • Update a cash out transaction
      • Delete a cash out transaction
    • Smartlinks-v2
      • Create a Smartlink
      • Get a Smartlink
      • Update a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Gateway-status
      • Get gateway status
      • Get platform status
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Advanced search
      • Delete credential
      • Regenerate a credential
      • Activate or deactivate
      • Update credential
    • Payment Button
      • Create a payment button
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search — Online
        • Transaction Search — Local
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • API RAW CARD PRESENT PAYMENTS
    • Release Notes
    • Error Catalog
    • The Amount Object
    • Key Exchange Process
    • Test data
    • Card Information
      • Get BIN Info
      • Balance inquiries
      • BIN info V2
      • Request deferred options
    • One-time Payments
      • Single payment
    • Two-step Payments
      • Authorization and capture
    • Voids & Refunds
      • Void & Reverse
      • Refund a transaction
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good Practices
      • Webhooks-Card Payments
      • Webhooks-Refunds
      • Check your webhooks
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • SubscriptionTransactionsResponse
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • SettlementDateRangeRequest
    • AmountWithTaxes
    • PrintJobRequest
    • card
    • SubscriptionTransaction
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • AmountCore
    • CommandText
    • amount
    • ErrorResponse
    • currency
    • webhooksItem
    • ErrorResponse400
    • SettlementResponse
    • ExtraTaxes
    • CommandColumns
    • extra_taxes
    • Amount
    • ErrorResponse401
    • SettlementRecord
    • ColumnItem
    • pos_details
    • extraTaxes
    • ErrorResponse403
    • TransactionResponse
    • CommandDivider
    • card_details
    • Deferred
    • Country
    • payment_method
    • ErrorResponse500
    • RawResponse
    • CommandFeed
    • enc_tlv
    • Metadata
    • CardData
    • CommandSpace
    • contact_details
    • ContactDetails
    • AmountWithTip
    • CommandCut
    • deferred
    • sub_merchant
    • documentType
    • Subscription
    • LinkFailure
    • CommandImage
    • metadata
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • PrinterError
    • product
    • SubscriptionUpdate
    • PrintJobStatus
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • PrintWebhookPayload
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • transactionType
    • ExternalReferenceId
    • ExternalSubscriptionId
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
  1. Online Payments

CASH-IN

Cash In lets your customers pay with cash at thousands of physical locations across Colombia — no bank account or card required. The customer receives a PIN (payment reference number) that they present at any participating payment point to complete the transaction.
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 Flow#

A Cash In payment consists of 3 steps: tokenization, initialization (PIN delivery), and confirmation.
Request a Cash In Token
Your backend calls the token endpoint using your Public Merchant ID, passing the customer's identification data and the payment amount.
Token rules: Tokens expire in 30 minutes and are single-use. Request a new one if the transaction fails or the token expires.
Required fields:
FieldDescription
nameCustomer's first name
lastNameCustomer's last name
identificationCustomer's document number
documentTypeSee document types below
totalAmountTotal amount to charge
currencyAlways COP for Colombia
Document types accepted in Colombia:
ValueDocument
CCCédula de Ciudadanía 🇨🇴
NITNúmero de Identificación Tributaria 🇨🇴
CECédula de Extranjería 🇨🇴
TITarjeta de Identidad 🇨🇴
PPPassport 🇨🇴
Init Transaction
Using your Private Merchant ID, call the Init Transaction endpoint with the token. Kushki validates the token and returns:
A PIN (pin) — the reference number the customer presents at the payment point.
A PDF receipt URL (pdfUrl) — printable receipt to give the customer.
An agreementDetails object listing all available payment points and their agreement numbers.
A ticketNumber to track the transaction.
Optional fields:
FieldDescription
expirationDateCustom PIN expiry date (YYYY-MM-DD HH:mm:ss, UTC). Must be at least 1 day after creation. Defaults to 7 days.
amountBreakdown with subtotalIva, subtotalIva0, iva, and optional extraTaxes
webhooksReal-time notification configuration
fullResponseSet to "v2" to receive the full details object in the response
metadataCustom key-value pairs for your internal use
Payment points available in Colombia:
The agreementDetails object in the response lists the active payment networks. Typical Colombia networks include:
NetworkProcessor
BalotoBancoBogota
CarullaBancoBogota
EfectyPayvalida
BancolombiaPayvalida
Customer Pays at a Payment Point
Share the PIN and the receipt with your customer. They go to any participating payment point and present the PIN to complete the cash payment.
This step happens entirely on the customer's side — no backend action is required.
Get Transaction Status
Call the Transaction Status endpoint with the ticketNumber to confirm whether the payment was completed.
Possible statuses:
StatusMeaning
initializedTransactionPIN generated — awaiting payment at the counter
approvedTransactionCash payment received and confirmed
expiredTransactionPIN expired without payment

Amount Object#

The amount object is optional in the Init Transaction request. If omitted, the amount from the token request is used.
With IVA taxes
Without taxes (IVA 0)
With extra taxes
{
  "amount": {
    "subtotalIva": 42017,
    "subtotalIva0": 0,
    "iva": 7983
  }
}
Set subtotalIva to the taxable base and iva to the tax value. All amounts in COP.

Webhook Notifications#

Include the webhooks object in your Init Transaction request to receive real-time payment notifications:
{
  "webhooks": [
    {
      "events": ["approvedTransaction", "declinedTransaction"],
      "headers": [
        { "label": "Authorization", "value": "Bearer your-token" }
      ],
      "urls": [
        "https://merchant.example.com/webhooks/cash-in"
      ]
    }
  ]
}
If you already have a Webhook configured in the Console, adding the webhooks object in the API request will trigger both channels simultaneously.

Sandbox Testing#

In the UAT environment, you can simulate the full Cash In flow using specific identification numbers:
Scenarioidentification value
✅ Successful transactionAny valid number
⏳ Initialized (pending)9999999999
❌ Declined transaction1000000000

Authentication#

StepHeaderKey type
Request a TokenPublic-Merchant-IdPublic Key (from Kushki Console → Credentials)
Init TransactionPrivate-Merchant-IdPrivate Key
Get StatusPrivate-Merchant-IdPrivate Key
Update TransactionPrivate-Merchant-IdPrivate Key
Delete TransactionPrivate-Merchant-IdPrivate Key
Never expose your Private-Merchant-Id in client-side or frontend code. Token requests using the Public Key can be made from the frontend; all other calls must come from your backend.

Using the API#

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

Available Endpoints#

Request a Cash In Token
Tokenizes the customer's data and payment amount. Requires Public Merchant ID. Token is valid for 30 minutes and single-use.
Init Transaction
Initializes the cash payment and returns the PIN, PDF receipt URL, and available payment points.
Transaction Status
Retrieves the current status of a Cash In transaction using its ticketNumber.
Update a Transaction
Updates the amount of an existing Cash In transaction before the customer pays.
Delete a Transaction
Cancels a Cash In transaction and invalidates the PIN.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-11 00:04:31
Previous
Balance for Payouts
Next
Request a cash in token
Built with