Private-Merchant-Id). Never expose it in client-side or frontend code — always call the token endpoint from your backend.| Mode | Description |
|---|---|
| One-time payout | Tokenize the card once and push funds immediately. |
| Subscription payout | Register the card as a subscription and push funds on demand at any time using the subscriptionId. |
POST /payouts/card/v1/tokens with the recipient's card data and the paymentType. Returns a one-time token.{
"card": {
"name": "Carlos Ramirez",
"number": "4111111111111111",
"expiryMonth": "12",
"expiryYear": "29"
},
"paymentType": "FD"
}{
"token": "8122eb4bda29476f8dc71b6426a7fd5d",
"maskedPan": "495703XXXXXX0454",
"brand": "VISA"
}POST /payouts/card/v1/pushFunds with the token (or card data directly), amount, and recipient details.{
"token": "8122eb4bda29476f8dc71b6426a7fd5d",
"paymentType": "FD",
"amount": {
"currency": "PEN",
"totalAmount": 250.00
},
"clientTransactionId": "a3f8d721-1b2c-4e5f-9a0d-123456789abc",
"recipient": {
"address": "Av. Larco 1301",
"city": "Lima",
"country": "PER",
"zipCode": "15046"
},
"fullResponse": "v2"
}transactionStatus: "APPROVAL" with a ticketNumber and transactionReference.GET /payouts/card/v1/transaction/{transactionReference} to confirm the final status.{
"transactionStatus": "APPROVAL",
"ticketNumber": "951738256068368362",
"transactionReference": "763274a1-b47b-493f-934f-047801cc04a0",
"amount": 250.00,
"processor": {
"code": "00",
"message": "Approved and completed successfully"
}
}POST /payouts/card/v1/subscriptions/tokens with the card data. Returns a subscriptionId you store on your side.{
"card": {
"name": "Carlos Ramirez",
"number": "4111111111111111",
"expiryMonth": "03",
"expiryYear": "27"
},
"paymentType": "FD"
}{
"subscriptionId": "956a8eb60epa4993b378e34488610e7f",
"maskedPan": "495703XXXXXX0454",
"brand": "VISA"
}POST /payouts/card/v1/subscriptions/pushFunds/{subscriptionId} whenever you want to disburse funds — no card data needed again.{
"paymentType": "FD",
"amount": {
"currency": "PEN",
"totalAmount": 250.00
},
"clientTransactionId": "b7e9c432-2d3e-5f6a-0b1c-234567890bcd",
"recipient": {
"address": "Av. Larco 1301",
"city": "Lima",
"country": "PER",
"zipCode": "15046"
},
"fullResponse": "v2"
}DELETE /payouts/card/v1/token/{subscriptionId} to remove the registered card when no further payouts are needed.paymentType values:| Value | Description |
|---|---|
FD | Funds Disbursement — general-purpose fund push |
OG | Online Gambling — for gaming/lottery platforms |
| Field | Required | Description |
|---|---|---|
token | One of token or card | One-time token from the payout token endpoint. |
card | One of token or card | Card data directly (name, number, expiryMonth, expiryYear). |
paymentType | Yes | FD or OG. |
amount.currency | Yes | Always PEN for Peru. |
amount.totalAmount | Yes | Amount to push to the card. |
clientTransactionId | Yes | Your unique UUID for this transaction — used for idempotency and status lookup. |
recipient.address | No | Recipient's street address. |
recipient.city | No | Recipient's city. |
recipient.country | No | Recipient's country code (e.g., "PER"). |
recipient.zipCode | No | Recipient's postal code. |
webhooks | No | Array of URLs to notify on transaction status changes. |
fullResponse | No | Pass "v2" to receive full transaction details including BIN info, approval code, and amounts. |
metadata | No | Custom key-value pairs for your own tracking. |
webhooks array in your push funds request to receive real-time notifications:{
"webhooks": ["https://yoursite.com/kushki/notify"]
}https://api.kushkipagos.com/Got a suggestion on this documentation? Contact us.