1. Webhook's
Artha All Module Api's
  • Introduction
  • Authentication
  • KYC/KYB Requirements
  • API Setup Guide
  • Products
    • List Products
      GET
    • Get Product
      GET
    • Get Customer Product Status
      GET
  • Customers
    • Create Customer
      POST
    • List Customers
      GET
    • Get Customer
      GET
    • Submit Applicant (KYC/KYB)
      POST
    • Create Onboarding Session
      POST
  • Wallets
    • Beneficiary
      • Create Crypto Beneficiary
      • Update Crypto Beneficiary
      • List Crypto Withdraw Beneficiaries
    • Create Wallet
      POST
    • Get Wallet Address
      GET
    • Get Customer Balances
      GET
    • List Wallets
      GET
    • List Withdrawals
      GET
    • List Withdrawal Networks
      GET
    • Preview Withdrawal Summary
      POST
    • Create Crypto Withdrawal
      POST
  • Cards
    • Issuance
      • Issue Card
      • List Cards
      • List Customer Cards
      • Get Card Details
      • Get Sensitive Card Details
    • Funding
      • Top Up Card
      • Get Card Balance
      • Get Top-Up Status
      • List Top-Up History
    • Operations
      • Resend Activation Code
      • Activate Card
      • Set Card PIN
      • Change Card PIN
      • Update Card Limits
      • Freeze Card
      • Unfreeze Card
      • Replace Card
      • Cancel Card
      • Get Card Limits
      • Show Card PIN Details
      • Get PIN View Iframe URL
      • Get PIN Change Iframe URL
      • Get PIN Set Iframe URL
      • Get Card View Iframe URL
      • Show Card PIN
  • Payees
    • Create a payee for a customer.
    • List a customer's payees.
    • Update a payee.
    • Retrieve a payee by id.
    • Look up an existing payee.
    • List the currencies a payee can be created in.
    • List the accepted payment purpose codes for a payee.
    • List the countries a payee can be created in.
    • List currency/country pairings for payees.
    • List the accepted beneficiary relationship codes.
  • Payments
    • Onboarding
      • List the customer's payout-currency configuration sections.
      • Enable a payout-currency section for the customer.
      • Get the customer's terms-of-service acceptance status.
      • Enable or disable a payout-currency section.
    • Quote
      • List the currencies a beneficiary can be paid in under a product.
      • List the payout rails available for a product and beneficiary.
      • Create an FX quote giving the rate and fee for a cross-currency payout.
    • Order
      • Submit a payout order to send money to a beneficiary.
      • Retrieve the on-chain address to fund an order.
      • Retrieve the status and settlement detail of a payout order.
    • Lookups
      • List the accepted payment purpose codes for a payout.
      • List the accepted source-of-funds codes for a payout.
      • List the document types accepted on a payout order.
  • Banks
    • Accounts
      • Create Bank Account
      • Get Account Details
      • Get Account Issuance Status
    • Withdraw
      • Create Withdrawal Quote
      • List Withdrawal Purposes
      • Get Payment Schemes
      • Execute Withdrawal
  • Exchange
    • Quote
      • Get Exchange Rate
      • Create Price Quote
    • Order
      • Place Exchange Order
  • Transactions
    • List Transactions
    • Get Transaction Details
  • Utilities
    • List Currencies
    • List Countries
    • Get Fee Schedule
    • List Product Occupations
    • List Product Industry Codes
    • Upload File
  • Webhook's
    • Wallets Webhooks
    • Banks Webhooks
    • Payments Webhooks
    • Exchange Webhooks
    • Card Webhooks
  1. Webhook's

Payments Webhooks

Overview#

This document describes all outgoing webhook event payloads sent for payment/payout transactions, covering all 3 payment providers. Webhooks are HTTP POST requests with a Content-Type: application/json header delivered to your configured endpoint URL.
Note: All 3 providers follow the same functional lifecycle (customer → beneficiary → order/payout), but each provider may use different field names, casing, or nesting in their raw payloads. This doc defines the normalized schema your endpoint should expect after mapping. Once real provider payloads are shared, this doc will be updated with provider-specific raw formats + mapping notes.

Payload Conventions#

ConventionDetail
FormatJSON
HTTP MethodPOST
Content-Typeapplication/json
Null fieldsIncluded as null (not omitted)
TimestampsISO 8601 — YYYY-MM-DDTHH:mm:ssZ
AmountsDecimal string or number in the currency's minor/major unit as configured

Event Categories#

CategoryEvents
Customercustomer.approved, customer.rejected, customer.pending
Beneficiarybeneficiary.approved, beneficiary.rejected, beneficiary.pending
Order / Payoutorder.created, order.cancelled, order.rejected, order.sent_to_beneficiary

1. Customer Events#

Applicable event types: customer.approved · customer.rejected · customer.pending
Fired when a customer's KYC/onboarding application status changes with a payment provider.

Payload#

{
  "id": "evt_9f2a1c4e8b3d4f2a9c1e8b3d4f2a9c1e",
  "type": "customer.approved",
  "createdAt": "2026-04-02T14:26:37.872Z",
  "data": {
    "customer_id": "f51b8db9-0bbf-4a91-b5fe-bf9d7b16f070",
    "reference_id": "ref_customer_00123",
    "first_name": "tarun",
    "last_name": "kumar",
    "email": "tarunkumar@yopmail.com",
    "status": "approved",
    "reason": "KYC verification successful",
    "performed_at": "2026-04-02T14:26:37.872Z"
  }
}

Field Reference#

FieldTypeDescription
idstringUnique identifier of this webhook event
typestringEvent type. One of customer.approved, customer.rejected, customer.pending
created_atstringISO 8601 timestamp when the event was generated
customer_idstringProvider-side unique identifier of the customer
reference_idstringYour internal/merchant reference ID for this customer, if sent during creation
first_namestringCustomer's first name
last_namestringCustomer's last name
emailstringCustomer's email address
statusstringCurrent status (approved, rejected, pending)
reasonstringHuman-readable reason accompanying the status
performed_atstringISO 8601 timestamp when the status change occurred

2. Beneficiary Events#

Applicable event types: beneficiary.approved · beneficiary.rejected · beneficiary.pending
Fired when a beneficiary (payout recipient) added under a customer is validated by the provider.

Payload#

{
  "id": "evt_3c990d0027974a269d69ecbbc6252934",
  "type": "beneficiary.approved",
  "createdAt": "2026-04-01T12:14:27.827Z",
  "data": {
    "beneficiary_id": "b6aa7a4c-ac4f-43ca-9030-9c6936f7913c",
    "customer_id": "a850b57a-23c8-48f5-846c-a25c8869ffe8",
    "reference_id": "ref_bene_00456",
    "beneficiary_name": "John Doe",
    "account_number": "XXXXXXXX1234",
    "bank_code": "HDFC0001234",
    "country": "IN",
    "status": "approved",
    "reason": "Bank account verified",
    "performed_at": "2026-04-01T12:14:27.819Z"
  }
}

Field Reference#

FieldTypeDescription
idstringUnique identifier of this webhook event
typestringEvent type. One of beneficiary.approved, beneficiary.rejected, beneficiary.pending
created_atstringISO 8601 timestamp when the event was generated
beneficiary_idstringProvider-side unique identifier of the beneficiary
customer_idstringCustomer that owns this beneficiary
reference_idstringYour internal/merchant reference ID for this beneficiary, if sent during creation
beneficiary_namestringName of the payout recipient
account_numberstringMasked bank account / wallet identifier
bank_codestringBank routing / IFSC / SWIFT code, as applicable
countrystringISO 3166-1 alpha-2 country code of the beneficiary
statusstringCurrent status (approved, rejected, pending)
reasonstringHuman-readable reason accompanying the status
performed_atstringISO 8601 timestamp when the status change occurred

3. Order Events#

Applicable event types: order.created · order.cancelled · order.rejected · order.sent_to_beneficiary
Fired across the lifecycle of a payout order — from initial creation through to funds being sent to the beneficiary (or the order being cancelled/rejected along the way).

Payload#

{
  "id": "evt_5377f5d53323457688ea939284e13406",
  "type": "order.sent_to_beneficiary",
  "createdAt": "2026-04-01T12:07:51.279Z",
  "data": {
    "order_id": "ord_7f3e9c2a1b4d4e5f8a9c1e8b3d4f2a9c",
    "reference_id": "ref_order_00789",
    "customer_id": "a850b57a-23c8-48f5-846c-a25c8869ffe8",
    "beneficiary_id": "b6aa7a4c-ac4f-43ca-9030-9c6936f7913c",
    "amount": "1500.00",
    "currency": "INR",
    "fee": "5.00",
    "fee_currency": "INR",
    "status": "sent_to_beneficiary",
    "reason": "Funds successfully credited to beneficiary account",
    "utr_number": "UTR20260401123456",
    "performed_at": "2026-04-01T12:07:51.265Z"
  }
}

Field Reference#

FieldTypeDescription
idstringUnique identifier of this webhook event
typestringEvent type. One of order.created, order.cancelled, order.rejected, order.sent_to_beneficiary
created_atstringISO 8601 timestamp when the event was generated
order_idstringProvider-side unique identifier of the payout order
reference_idstringYour internal/merchant reference ID for this order, if sent during creation
customer_idstringCustomer that initiated this order
beneficiary_idstringBeneficiary this order is being paid out to
amountstringOrder/payout amount
currencystringISO 4217 currency code of the order
feestringProvider/platform fee applied to this order
fee_currencystringCurrency of the fee
statusstringCurrent status (created, cancelled, rejected, sent_to_beneficiary)
reasonstringHuman-readable reason accompanying the status
utr_numberstringBank UTR / transaction reference number (present once funds are sent)
performed_atstringISO 8601 timestamp when the status change occurred

Status Values Quick Reference#

Customer Status#

ValueDescription
approvedCustomer KYC/onboarding approved
rejectedCustomer KYC/onboarding rejected
pendingCustomer application under review

Beneficiary Status#

ValueDescription
approvedBeneficiary account verified and usable
rejectedBeneficiary account verification failed
pendingBeneficiary verification in progress

Order Status#

ValueDescription
createdOrder has been created and is queued for processing
cancelledOrder was cancelled before completion
rejectedOrder was rejected by the provider or beneficiary bank
sent_to_beneficiaryFunds have been successfully sent to the beneficiary

Error Handling#

Your endpoint should return an HTTP 2xx status code to acknowledge receipt. If a non-2xx response is returned or the request times out, the provider may retry delivery with exponential backoff.
ScenarioRecommendation
Duplicate eventsUse order_id, beneficiary_id, or customer_id + type for idempotency
Unknown event typeAcknowledge (200 OK) and ignore gracefully
Processing failureReturn 500 to trigger retry

Open Items — Pending Your Confirmation#

Actual names of the 3 providers (currently placeholder: provider_a, provider_b, provider_c)
Real raw payload samples from each provider (field names/casing/nesting likely differ — e.g. some may use camelCase with a data wrapper like your Card Action events, others flat snake_case like your Transaction events)
Whether reference_id (your internal ID) is actually returned by all 3 providers or only some
Whether utr_number / bank reference is common to all providers or provider-specific
Confirm if beneficiary and order fees are separate line items or combined per provider
Modified at 2026-08-11 10:38:48
Previous
Banks Webhooks
Next
Exchange Webhooks
Built with