1. Webhooks
Kobble
  • Introduction
  • API Fundamentals
    • Idempotency
    • Rate Limits
    • Healthcheck
      GET
  • Authorization
    • Authorization
    • Get access token
      POST
  • Beneficiaries
    • List all beneficiaries
      GET
    • Get beneficiary by ID
      GET
    • Create beneficiary
      POST
    • Create Payid beneficiary
      POST
    • Update beneficiary
      PATCH
  • Cards
    • Cards API
    • Card Creation Flow — Developer Guide & Onboarding
    • Get all cards
      GET
    • Create a new card
      POST
    • Get card by ID
      GET
    • Update card status
      PATCH
    • Replace or renew card
      POST
    • Generate card secret
      POST
    • Generate MeaWallet widget session token
      POST
  • Card Programs
    • Card Programs API
    • Get all programs
    • Create a new program
    • Get program by ID
  • Clients
    • Clients API
    • Get all clients
    • Get client by ID
    • Create a new client
    • Update client status
  • Endusers
    • Endusers API
    • Usage of Metadata on Endusers
    • Get all endusers
    • Create a new enduser
    • Get enduser by ID
    • Update enduser
  • Transactions
    • Transactions API
    • Get all transactions
    • Create a transaction
    • Get transaction by ID
    • Create manual credit transaction
    • Create manual debit transaction
  • Wallets
    • Wallets API
    • Get all wallets
    • Create a new wallet
    • Get wallet by ID
    • Update wallet
  • Relays
    • Relays API
    • Create subscription
  • Webhooks
    • Webhooks API
    • Webhook Signature Verification
    • Create a webhook
      POST
    • Report completed
    • Get all webhooks
      GET
    • Delete a webhook
      DELETE
  • Wallet Statements
    • Request a wallet statement
    • List wallet statements
    • Get a wallet statement
    • Get a wallet statement download URL
  • Card Art
    • Get a card art upload URL
    • Register a card art
    • List card arts
    • Get a card art
    • Update a card art
    • Activate a card art
    • Archive a card art
  • Verifications
    • List verifications for a subject
    • Create a verification (in development)
    • Get verification by ID
    • Get a Sum Sub SDK session token
    • Record a client-asserted outcome
  • Schemas
    • Schemas
    • CardWidgetSessionTokenResponse
    • 202 Accepted
    • Webhook
    • 201 Created
    • Relay
    • Create Beneficiary with bank details
    • Client
    • Beneficiary
    • Card
    • CardCreateInputDto
    • CardStatusUpdateDto
    • CardRenewReplaceInputDto
    • Program
    • MetadataKobbleDebit1
    • ProgramCreateInputDto
    • Person
    • Company
    • Enduser
    • Enduser Create Person Input
    • Enduser Create Company Input
    • Metadata
    • Enduser Create Input DTO
    • Transaction
    • TransactionCreateManualCreditInputDto
    • TransactionCreateInputDto
    • Wallet
    • WalletCreateInputDto
    • WalletUpdateInputDto
    • WalletStatement
    • WebhookNotification
    • ReportCompletedEntity
    • ReportCompletedNotification
    • CardArt
    • CardArtDetail
    • CardArtUploadUrlInput
    • CardArtUploadUrlResponse
    • CardArtCreateInput
    • CardArtPatchInput
    • Error
    • RelayCreateResponse
    • ScreeningSummary
    • VerificationPartyLink
    • Verification
    • VerificationSessionToken
  1. Webhooks

Create a webhook

POST
/customers/v1/webhooks/subscriptions
Delivery is via AWS SNS HTTPS subscription: after creating the subscription your endpoint receives an SNS SubscriptionConfirmation message that must be confirmed before notifications flow.
Kobble appends a ?client-id=<your client id> query parameter to the subscription URL at creation (visible on the stored url); your endpoint receives it on every delivery.
One subscription receives ALL event types for your client — there is no per-event-type filtering. Webhooks are zero-trust notifications: payloads carry identifiers and the event type, never resource state — always re-fetch the resource. Deduplicate on (entity_id, type): an SNS redelivery reuses the same notification id, but an upstream replay of the same event generates a new one.
Verify every delivery before you act on it. Check the SNS signature against the certificate named by SigningCertURL, having first confirmed that URL is an https host under amazonaws.com; never fetch an arbitrary URL taken from the payload. Then compare the envelope's TopicArn against the per-environment topic ARN Kobble issues you at onboarding. The signature alone proves only that a message originated from AWS, not that it originated from Kobble, so an endpoint that checks the signature but not the topic will accept any signed SNS message from any AWS account.
There is no settlement event. Settlement and settlement reversal are internal transaction types excluded from delivery, so you will never receive one and should not wait for one. A payout has settled once its transaction reaches ACCEPTED and transaction-accept is delivered. A dishonour after settlement arrives as a new REFUND transaction carrying the original transaction's id in external_id, while the original stays ACCEPTED — a reversal can never be detected by watching the original transaction's status.

Request

Header Params

Body Params application/json

Example
{
    "url": "string"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/customers/v1/webhooks/subscriptions' \
--header 'x-client-id;' \
--header 'Content-Type: application/json' \
--data '{
    "url": "string"
}'

Responses

🟢201Created
application/json
Bodyapplication/json

Example
{
    "id": "530d8eae-b44c-4ae3-9c31-874bf98b2bdf",
    "owner": "a30595d9-de0a-42ae-b3f3-55643abd2eb8",
    "url": "https://male-goat.biz?client-id=a30595d9-de0a-42ae-b3f3-55643abd2eb8",
    "created_at": "2025-01-14T17:00:33.406Z",
    "updated_at": "2025-01-14T17:00:33.410Z",
    "metadata": {
        "subscription_arn": "arn:aws:sns:ap-southeast-2:123456789012:webhooks-topic:530d8eae-b44c-4ae3-9c31-874bf98b2bdf"
    }
}
🟠400Bad Request
🟠401Unauthorized
🟠403Forbidden
Modified at 2026-09-15 01:24:19
Previous
Webhook Signature Verification
Next
Report completed
Built with