1. Transactions
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
      GET
    • Create a transaction
      POST
    • Get transaction by ID
      GET
    • Create manual credit transaction
      POST
    • Create manual debit transaction
      POST
  • 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
    • Report completed
    • Get all webhooks
    • Delete a webhook
  • 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. Transactions

Transactions API

Kobble Transactions API#

Introduction#

Process transactions in real-time and access detailed transaction histories. Receive real-time updates and notifications.

Overview#

Provides endpoints to create, retrieve, and manage transactions.

Key Features#

RESTful API with predictable resource-based URLs.
Authentication with secure bearer tokens.
Queue-based processing, with status changes delivered by webhook.

Transaction lifecycle#

The API is queue-based, not request and response#

POST /customers/v1/transactions returns 201 with the transaction in PENDING and places it on a queue. The response tells you the request was accepted. It does not tell you the money moved.
A failure that can be detected immediately, such as an insufficient balance or an invalid beneficiary, is returned as HTTP 400. A 201 never carries a settled or declined outcome. A real decline arrives later, as a status change and a transaction-decline webhook.
If you reuse an Idempotency-Key, the replay returns HTTP 202 with the original cached body. Treat 202 as success, not failure.

Status is terminal#

A transaction is PENDING, then either ACCEPTED or DECLINED. Both outcomes are final. Nothing can move a transaction out of them, and any later attempt is ignored rather than rejected.
Do not build a handler that waits for a status to change after ACCEPTED or DECLINED. Every subsequent event in the life of that money is a new record.

Settlement is your payout reaching ACCEPTED#

There is no settlement record to wait for. The SETTLEMENT, SETTLEMENT_REVERSAL, RESERVATION and RESERVATION_REVERSAL values appear in the transaction type enum, but records of those types are internal to Kobble and never appear in your transaction list or your webhooks.
Your payout reaching ACCEPTED, delivered as transaction-accept, is the settlement signal. An integration that waits for a record of type SETTLEMENT waits forever, without an error, while the money moves correctly.

A returned payment arrives as a new REFUND#

If a payout is returned or dishonoured after it settled, the original transaction stays ACCEPTED. It is never rewritten. Watching the original record's status will never tell you the money came back.
The return appears as a new transaction of type REFUND, and its external_id is the Kobble transaction id of the original payout. Join on that.
Note that external_id means two different things depending on which record you are looking at. On a transaction you created it is whatever value you supplied. On a REFUND it is Kobble's id for the original. Store the Kobble id for every transaction you create, regardless of whether you set your own reference.

Webhooks tell you what changed, not what it changed to#

A webhook carries a pointer, not the transaction. It identifies the entity and the event, and the only enrichment is decline detail on transaction-decline. To learn a transaction's type, amount or external_id, read GET /customers/v1/transactions/{id}.
Your subscription is filtered by client only, so you receive every event type we publish. Ignore event types you do not recognise rather than treating them as errors.

Reading the transaction list#

Filters, page bounds and the time-window semantics are documented on the Get all transactions endpoint. Three things are worth knowing before you design against it:
from and to filter on last update, not creation time, so a status change brings a transaction back into a window you have already read. Overlap your windows rather than paging strictly forward.
The row count comes back in the X-Total-Count response header, not the body.
payment_type selects the rail, for example CARD. It is not the transaction type, and there is no filter on transaction type.

Base URLs#

Use the appropriate base URL depending on the environment:
Production: https://apikobble.net/
Staging: https://staging.apikobble.net/
Ensure you prepend the base URL to each endpoint while making requests.

Each environment has its own Cognito user pool, so your staging client ID and secret will not authenticate against production. Production credentials are issued separately as part of go-live.

API Endpoints#

Get Transactions.
Create a Transaction.
Get Transaction by ID.
Create Manual Credit Transaction
Create Manual Debit Transaction

Authentication#

All requests to the Transactions API require an access token. Include the access token in the headers of each request:
To generate an access token, please refer to Authorization.

Error Handling#

The API returns standard HTTP status codes for responses. Use the status code to determine the result of your request.

Notes#

All responses are returned in JSON format.
Ensure the proper base URL and headers are used in each request.

Modified at 2026-09-16 05:59:44
Previous
Update enduser
Next
Get all transactions
Built with