CCI/PHONE
CCI/PHONE are an essential aspect of modern payments in Peru, offering flexibility and security by using unique identifiers like phone numbers or emails to facilitate transactions. This method simplifies the payment process, reducing friction for users by enabling transfers without needing a QR code. CCI/PHONE are stored in a secure format and can be quickly accessed for various payment scenarios.
Types of CCI/PHONE
CCI/PHONE are unique identifiers used in Pix payments to facilitate transactions without needing QR codes. The following types are supported:
Phone Number: International format with country code, including the '+' prefix. e.g "+51..."
Payment Process Flow
The payment process begins when the user selects or enters a CCI/PHONE in their digital wallet, such as CCI, phone number. The wallet forwards this information to Depay, which validates the key and retrieves the necessary payment details. If the CCI/PHONE is valid, Depay sends the payment information back to the wallet.
The wallet then presents this information to the user for confirmation. Once confirmed, the wallet forwards the authorized transaction details back to Depay, which processes the payment. Finally, Depay communicates the payment status to the wallet, notifying the user of the successful completion or any issues encountered during the transaction. This ensures a secure and transparent process for the user.

Statuses of an Order
CREATED
The order has been created.
PROCESSING
The payment was accepted and is being processed.
COMPLETED
The payment was successfully completed.
CANCELED
The preview was not accepted by the user or it expired.
REFUNDED
The order has been refunded.
PARTIALLY_REFUNDED
The order was partially refunded.
REJECTED
The payment has been rejected by the destination bank account.
FAILED
The payment failed due to an unexepcted error.
Retrieve preview to Pay with a CCI/PHONE
POST https://stage.api.payments.depay.us/v2/payments/previews/dictkey/peru
Similar to the "Retrieve QR Code Preview" endpoint, this endpoint allows users to retrieve the necessary information to initiate a payment via CCI/PHONE. After the transaction details are retrieved, a preview is generated for the user to review and confirm before completing the payment.
Headers
Authorization*
String
Bearer Token
idempotency-key
String
An idempotent identifier provided by the client to ensure that a request is processed only once.
Request Body
dict_key*
String
The DICT Key (CCI or phone number) used for payment.
amount*
Decimal
Amount value of the operation. The currency is automatically set to PEN by the server.
external_reference*
String
The user-defined identifier used to link and track the payment. Length (max): 100.
notification_url*
String
The provided URL is a POST endpoint where payment information will be received. Length (max): 250.
user*
String
User information
full_name*
String
User name and surname
currency*
String
Represents the default currency the user will use to make the payment. It must be provided in ISO 4217 format
account_number*
String
User account from which the user wishes to make the payment
tax_id*
String
User tax identification number. Length (max): 50.
tax_id_type*
String
User tax ID type, most commonly used DNI. (DNI, CUIT, CUIL)
Response
{
"status": "success",
"external_reference": "e8a7a740-6f47-11ec-90d6-0242ac120003",
"message": "Preview is being processed.",
"local_currency": "PEN"
}{
"statusCode": 400,
"message": [
"dict_key invalid format. must be one of: CPF, CNPJ, Email, Phone Number, UUID"
]
}{
"statusCode": 400,
"message": [
"INVALID_DICT_KEY"
]
}{
"statusCode": 409,
"message": "Conflict error"
}Preview Callback Response
This response will be sent to the callback (notification_url). There are two possible responses: one for the open_amount QR code, which asks for the amount, and another for the closed_amount QR code, which sends the preview directly.
payment_type
String
Payment Type (always "DICT_KEY")
external_reference
String
This is the reference sent in the request, allowing the requester to internally identify the payment being performed. Length (max): 100.
collector
Object
Information object about the merchant (seller). This information is only available for successful read cases.
name
String
Name of the merchant.
identification_number
String
Unique Tax Identification Code of the administrator.
branch_office
String
Internal merchant or branch office number. Can be empty.
order
Object
Information object about the order to be paid. This information is only available for successful read cases.
id
String
Identifier of the order. This data is necessary when initiating the payment of this QR.
local_total_amount
Decimal
The total amount in the currency of the QR code's country. If it is an open amount QR (status: open_amount), the value will be null.
local_currency
String
Currency of the QR code's country. (ISO 4217 format).
user_total_amount
Decimal
The local_total_amount is converted into the user's currency. If it is an open amount QR (status: open_amount), the value will be null.
user_currency
String
User's currency (ISO 4217 format).
version
String
Version of the API you are woking with
Callback behavior when dict_key is a phone number
dict_key is a phone numberWhen dict_key is a phone number, the callback returns an array of eligible wallet_id values. Each wallet_id represents a merchant wallet that can receive the payment. The merchant selects the destination wallet and instructs the application to route the payment accordingly (e.g., to the store/branch where the user is paying).
payment_type
String
Payment Type (always "DICT_KEY")
external_reference
String
This is the reference sent in the request, allowing the requester to internally identify the payment being performed. Length (max): 100.
collector
Object
Information object about the merchant (seller). This information is only available for successful read cases.
name
String
Name of the merchant.
identification_number
String
Unique Tax Identification Code of the administrator.
branch_office
String
Internal merchant or branch office number. Can be empty.
order
Object
Information object about the order to be paid. This information is only available for successful read cases.
id
String
Identifier of the order. This data is necessary when initiating the payment of this QR.
local_total_amount
Decimal
The total amount in the currency of the QR code's country. If it is an open amount QR (status: open_amount), the value will be null.
local_currency
String
Currency of the QR code's country. (ISO 4217 format).
user_total_amount
Decimal
The local_total_amount is converted into the user's currency. If it is an open amount QR (status: open_amount), the value will be null.
user_currency
String
User's currency (ISO 4217 format).
wallets
Object
List of wallet options available for the merchant to receive a payment. Each item is a wallet record as defined below.
id
String
Unique identifier of the wallet in your platform. Use this value when selecting/routing the payment to a specific wallet. (UUIDV4)
brand
String
Wallet provider/brand name. Useful for UI display and provider-specific routing rules.
mobile
String
Mobile number linked to the wallet/account.
present
Boolean
Indicates support/intent for an in-person (“present”) flow (e.g., QR shown at a store).
directory
String
Network or bank directory code associated with the wallet/provider, used for payment routing. Country/network-specific.
participant_code
String
Financial institution/participant code used by the payment network for routing/settlement. May match directory depending on the scheme.
version
String
Version of the API you are woking with
Pay with a CCI/PHONE
POSThttps://stage.api.payments.depay.us/v2/payments
This endpoint initiates a transaction process using a CCI/PHONE. It requires the key provided by the user, such as CCI or phone number. Upon receiving the CCI, the system processes the transaction. In some cases, the final payment result may be available immediately. However, if additional processing time is needed, the final result can be retrieved either via a webhook that notifies the CCI/PHONE payment event or by querying the operation status directly to confirm the payment outcome.
Headers
Authorization*
String
Bearer Token
idempotency-key
String
An idempotent identifier provided by the client to ensure that a request is processed only once.
Request Body
order_id*
String
Order identifier. This field corresponds to the id field within the order object retrieved from the QR information retrieval endpoint. Required.
status*
String
This field is the value of the user's decision. The accepted values are 'accepted' or 'rejected'
notification_url*
String
The URL where notifications about QR payments events will be sent. Required. Length (max): 250.
wallet_id*
String
UUIDV4 – Identifies the merchant’s wallet to receive the payment (only phone)
Response
{
"status": "PROCESSING",
"message": "Payment in process"
}order_id
String
Identifier of the order. This data is necessary when initiating the payment of this QR.
external_reference
String
This is the reference sent in the QR preview request, allowing the requester to internally identify the payment. Length (max): 100.
external_reference_id
String
This is the reference sent in the QR preview request, allowing the requester to internally identify the payment. Length (max): 100.
status
String
A key that indicates the current status of the order.
date
String
Date and time when the notification is created. Format: YYYY-MM-DDTHH:MM:SSZ (ISO 8601).
payment_date
String or Null
Date and time when the payment was processed. Format: YYYY-MM-DDTHH:MM:SSZ (ISO 8601).
merchant_identification_number
String
Unique identifier assigned to the merchant by the payment processor.
merchant_name
String
Display name of the merchant associated with the transaction.
error_code
String or Null
Error code returned in case the payment fails. Null if the transaction was successful.
Order Refund
The refund can be either partial or full, as specified in the request. Depay will send updates regarding the refund status — such as whether it was successful or rejected — to the notification_url previously provided in the body of the Payment Request.
The refunded amount will be credited to your pre-funded account to ensure uninterrupted service.
REFUNDED
The refund has been successfully completed.
Yes
PARTIALLY_REFUNDED
The partial refund has been successfully completed.
No
Headers
idempotency-key
String
An idempotent identifier provided to ensure that a request is processed only once.
Webhook Notification
This notification will be sent to notification_url.
order_id
String
Order identifier. This field corresponds to the id field within the order object retrieved from the QR information retrieval endpoint.
external_reference
String
This is the reference sent in the QR preview request, allowing the requester to internally identify the payment. Length (max): 100.
status
String
A key that indicates the current status of the preview.
date
String
Date and time when the notification is created. Format: YYYY-MM-DDTHH:MM:SSZ (ISO 8601).
payment_date
String
Date and time when the payment was processed. Format: YYYY-MM-DDTHH:MM:SSZ (ISO 8601).
merchant_identification_number
String
Unique identifier assigned to the merchant by the payment processor.
merchart_name
String
Display name of the merchant associated with the transaction.
error_code
String or null
Error code returned in case the payment fails. Null if the transaction was successful.
amount
Number
Transaction amount to be paid by the user.
currency
String
ISO 4217 currency code representing the transaction currency (e.g., USD, EUR, BRL).
Get Payment Status
GET https://stage.api.payments.depay.us/v2/payments/{order_id}/status
Allows users to inquire about the current status of their payments.
Headers
Authorization*
String
Bearer Token
Query Parameters
order_id*
String
Order identifier. This field corresponds to the id field within the order object retrieved from the QR information retrieval endpoint. Required.
Response
{
"id":"cd17fff7-ed31-47b7-948f-9fdec0cda9ce",
"status": "COMPLETED",
"creation_date": "2025-03-21T14:15:06.657Z",
"update_date": "2025-03-21T14:20:00.000Z",
"local_amount": "7.0000",
"local_currency": "BRL",
"user_amount": "1637.3605",
"user_currency": "ARS",
"external_reference": "123123123",
"merchant_identification_number": "12345678987",
"merchant_name": "John Doe",
"statuses":[
{
"status": "CREATED",
"created_at": "2025-03-21 20:01:30.948423"
},
{
"status": "WAITING_AMOUNT",
"created_at": "2025-03-21 20:01:50.567650"
},
{
"status": "COMPLETED",
"created_at": "2025-03-21 20:02:00.343641"
}
]
}{
"eventId": "2105",
"details": "The receipt does not exist",
"correlationId": "0bf65191-a10b-4057-aeb8-a4bbb2facc29",
"errors": [
{
"code": "2105",
"title": "Receipt not found.",
"detail": "No receipt found for the id: X"
}
]
}
Last updated