Webhooks Event types
Once a payment link is created and the US sender (User) begins the payment process, your registered webhook URL will start receiving real-time updates. These webhook events allow your system to stay synchronized with each stage of the transaction from creation to payout.
Webhooks Sequence
sequenceDiagram
participant Sender as EE.UU. Sender
participant Kira as Kira
participant Webhook as Kira Client webhook URL
Note over Sender, Webhook: User Creation & KYC Verification
Sender->>Kira: Completes Payment Link<br/>KYC verification
Kira->>Webhook: Event: user.created
Kira->>Webhook: Event: user.verification.accepted
Note over Sender, Webhook: Payment
Sender->>Kira: Completes payment via the<br/>Payment Link using card or cash.
Kira->>Webhook: Event: card_payment /<br/>barcode_generated
Note over Sender, Webhook: Payout
Kira->>Webhook: Event: transaction_update
Step 1: User Creation & KYC Verification Webhooks
Before the US sender can complete a payment, they must first be onboarded as a user and go through identity verification (KYC). The following webhook events are sent to your system to track this process.
1.1 user.created
user.createdSent right after a user is created. Initially, the user will be marked as "unverified".
Body Schema
| Field | Description |
|---|---|
event | Name of the event sent to the registered webhook URL. |
type | User type — can be an individual (person) or a business (company). |
email | User’s email address. |
phone | User’s phone number. |
user_id | Unique identifier of the registered user. |
event_id | Unique identifier of the event. |
ip_address | User’s device unique IP address. |
ext_reference | External identifier you linked to this user. |
created_at | Timestamp indicating when the user was created. |
verification_status | Current KYC/KYB verification status of the user. |
User Creation Event
{
"event": "user.created",
"data": {
"type": "individual",
"email": "[email protected]",
"phone": "+15550000000",
"status": "active",
"user_id": "00000000-0000-0000-0000-000000000000",
"event_id": "11111111-1111-1111-1111-111111111111",
"metadata": {
"ip_address": "192.0.2.123",
"ext_reference": "YOUR_INTERNAL_REFERENCE"
},
"created_at": "2025-09-23T18:09:05.017Z",
"verification_status": "unverified"
}
}1.2 user.verification.accepted
user.verification.acceptedSent when the user completes identity verification. This webhook may be triggered twice:
- Once for
kyc_type: simplified or full - Again (if applicable) for
kyc_type: full
Body Schema
| Field | Description |
|---|---|
event | Name of the event sent to the registered webhook URL. |
id | Unique identifier of the KYC/KYB verification process. |
kyc_type | Level of KYC completed by the user — either Full or Simplified. |
user_id | Unique identifier of the registered user. |
event_id | Unique identifier of the event. |
verification_status | Current KYC/KYB verification status of the user after they complete the verification. |
User Verification Event
{
"event": "user.verification.accepted",
"data": {
"id": "22222222-2222-2222-2222-222222222222",
"kyc_type": "simplified",
"user_id": "00000000-0000-0000-0000-000000000000",
"event_id": "33333333-3333-3333-3333-333333333333",
"verification_status": "verified"
}
}Step 2: Payment Webhooks
Once a payment is initiated via a Payment Link, your system will receive real-time webhook updates according to the payment method used and status progression.
This section describes the expected webhook events for:
- Card Payments
- Cash Deposits
2.1 card_payment
card_paymentThis flow is triggered when the sender chooses to pay using a card.
| Event Type | Status | Description |
|---|---|---|
card_payment | CREATED | Payment was initiated by the sender |
card_payment | PROCESSING / FAILED | Payment is being validated by the provider or was declined |
card_payment | DEPOSITED | Payment was approved and funds were received |
Body Schema
| Field | Description |
|---|---|
event | Name of the event sent to the registered webhook URL. |
pct_fee | Percentage-based commission on the transaction base_amount. |
user_id | Unique Identifier of the user who owns the recipient and is the originator of the transaction. |
event_id | Unique identifier of the event. |
rate | Market rate for the conversion between the base_currency and the quote_currency. |
quote_id | Unique Identifier of the quote used for the transaction. |
fixed_fee | Fixed fee applied to the conversion, represented in base currency. |
balam_rate | Final market rate applied to the transaction for the conversion between the base_currency and the quote_currency. |
pct_fx_fee | Additional percentage fee for currency conversion. |
quote_amount | Final converted amount in quote_currency. |
requestid | |
base_amount | Amount to be quoted and converted. |
client_uuid | Your unique client identifier provided by Kira. |
referenceid | Your internal reference or identifier used to track the transaction. |
recipient_id | Unique Identifier of the recipient of the transaction. |
base_currency | Base currency code according to ISO-4217. It refers to the currency to be converted. |
Allowed value: USD | |
quote_currency | Currency code to be quoted according to ISO-4217. It refers to the target currency for the conversion. |
Allowed values: MXN, COP, USDC, PEN, PAUSD, ARS, CLP, ECUSD, UYU, PYG, CRC, BRL, DOP, USD, GTQ, PEUSD | |
card_request_id | Unique Identifier of the card transaction. |
payment_link_id | Unique Identifier of the payment link through which the card transaction was executed. |
card_request_status | Status of the card transaction. |
Card Payment Event
{
"event": "card_payment",
"data": {
"pct_fee": "0.0100",
"user_id": "00000000-0000-0000-0000-000000000000",
"event_id": "11111111-2222-3333-4444-555555555555",
"metadata": {
"rate": "0.0000",
"quote_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"fixed_fee": "0.00",
"balam_rate": "0.0000",
"pct_fx_fee": "0.000",
"quote_amount": "0.00"
},
"requestid": "",
"base_amount": "0.00",
"client_uuid": "12345678-1234-1234-1234-123456789abc",
"referenceid": "YOUR_INTERNAL_REFERENCE",
"recipient_id": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbbb",
"base_currency": "USD",
"quote_currency": "USD",
"card_request_id": "99999999-8888-7777-6666-555555555555",
"payment_link_id": "44444444-3333-2222-1111-000000000000",
"card_request_status": "CREATED"
}
}
2.2 barcode_generated
barcode_generatedThis flow is triggered when the sender chooses to pay in cash using a barcode.
| Event Type | Status | Description |
|---|---|---|
barcode_generated | CREATED | Barcode was generated |
barcode_generated | PENDING | User completed the cash deposit at a physical location |
barcode_generated | PROCESSING | Payment is being validated by the provider |
barcode_generated | DEPOSITED | Payment was approved and funds received |
barcode_generated | EXPIRED / CANCELLED / VOIDED | Payment was not completed (due to timeout, cancellation, or error) |
Body Schema
| Field | Description |
|---|---|
event | Name of the event sent to the registered webhook URL. |
pct_fee | Percentage-based commission on the transaction base_amount. |
user_id | Unique Identifier of the user who owns the recipient and is the originator of the transaction. |
rate | Market rate for the conversion between the base_currency and the quote_currency. |
quote_id | Unique Identifier of the quote used for the transaction. |
fixed_fee | Fixed fee applied to the conversion, represented in base currency. |
balam_rate | Final market rate applied to the transaction for the conversion between the base_currency and the quote_currency. |
pct_fx_fee | Additional percentage fee for currency conversion. |
quote_amount | Final converted amount in quote_currency. |
requestid | NA |
base_amount | Amount to be quoted and converted. |
client_uuid | Your unique client identifier provided by Kira. |
referenceid | Your internal reference or identifier used to track the transaction. |
recipient_id | Unique Identifier of the recipient of the transaction. |
base_currency | Base currency code according to ISO-4217. It refers to the currency to be converted. |
Allowed value: USD | |
quote_currency | Currency code to be quoted according to ISO-4217. It refers to the target currency for the conversion. |
Allowed values: MXN, COP, USDC, PEN, PAUSD, ARS, CLP, ECUSD, UYU, PYG, CRC, BRL, DOP, USD, GTQ, PEUSD |
| cash_request_id | Unique Identifier of the cash transaction. |
| payment_link_id | Unique Identifier of the payment link through which the cash transaction was executed. |
| cash_request_status | Status of the cash transaction. |
Cash Payment Event
{
"event": "barcode_generated",
"data": {
"pct_fee": "0.01",
"user_id": "00000000-0000-0000-0000-000000000000",
"metadata": {
"rate": "0.0000",
"quote_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"fixed_fee": "0",
"balam_rate": "0.0000",
"pct_fx_fee": "0.000",
"quote_amount": "0.00"
},
"requestid": "",
"base_amount": "0.00",
"client_uuid": "11111111-2222-3333-4444-555555555555",
"referenceid": "YOUR_INTERNAL_REFERENCE",
"recipient_id": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbbb",
"base_currency": "USD",
"quote_currency": "MXN",
"cash_request_id": "cshdprq_XXXXXX000000GENERIC",
"payment_link_id": "99999999-8888-7777-6666-555555555555",
"cash_request_status": "CREATED"
}
}Step 3: Payout Webhooks
Once the user has completed the payment — either in cash or by card — Kira will process the payout to the designated bank account. You will then receive status updates regarding the status of the transfer of the collected funds to the recipient’s bank account.
3.1 transaction_update
transaction_updateThis flow applies to instant or individual settlement payouts after the payment is confirmed.
| Event Type | Status | Description |
|---|---|---|
transaction_update | CREATED | Transfer created in the Balam system |
transaction_update | PENDING | Transfer is in queue for the payout provider |
transaction_update | PROCESSING | Transfer approved and in progress |
transaction_update | COMPLETED | Funds were successfully sent to the recipient |
Body Schema
| Field | Description |
|---|---|
event | Name of the event sent to the registered webhook URL. |
event_id | Unique identifier of the event. |
status | Status of the payout. |
reference | Your internal reference or identifier used to track the transaction. |
created_ts | Timestamp when the payout was initially created. |
updated_ts | Timestamp when the payout status was last updated. |
transfer_uuid | Unique Identifier of the payout. |
payment_link_uuid | Unique Identifier of the payment link through which the payout was executed. |
Payout Event
{
"event": "transaction_update",
"data": {
"event_id": "11111111-2222-3333-4444-555555555555",
"transfer_data": {
"status": "CREATED",
"reference": "YOUR_INTERNAL_REFERENCE",
"created_ts": "2025-01-01T00:00:00.000Z",
"updated_ts": "2025-01-01T00:00:00.000Z",
"transfer_uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"extra_info": {
"payment_link_uuid": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbbb"
}
}
}
}Final Notes
- Always track the
statusandeventvalues to update your internal transaction state. - You may receive
PROCESSINGorFAILEDin intermediate steps depending on the provider’s response.
Updated 21 days ago
