Skip to content

Transaction Subscriptions ​

Receive real-time notifications for payment transaction events including authorizations, captures, refunds, voids, and ACH transactions.

Subscription Arguments ​

When creating a transaction subscription, you can specify filtering arguments to receive only the events you need.

Required Arguments ​

ArgumentTypeDescription
entity_ksuidstringRequired. Your 27-character merchant identifier

Optional Filter Arguments ​

ArgumentTypeDescription
roll_upbooleanWhen true, includes transactions for child merchants in the hierarchy. Default: false
statusstringFilter by transaction status. Values: Tran approved, Tran denied, Tran approved no response, Tran denied no response
amount_greater_thanstringOnly include transactions with amounts greater than this value
amount_less_thanstringOnly include transactions with amounts less than this value
typestringFilter by transaction type (see values below)
currency_codestringFilter by 3-digit currency code (e.g., 840 for USD)
card_schemestringFilter by card network (see values below)
response_codestringFilter by specific response code
initiation_typestringFilter by initiation type: ecommerce or telephone
was_voidedbooleanWhen true, only include voided transactions
was_refundedbooleanWhen true, only include refunded transactions
was_capturedbooleanWhen true, only include captured transactions
was_reversedbooleanWhen true, only include reversed transactions
has_errorbooleanWhen true, only include transactions with errors

Transaction Types ​

Valid values for the type argument:

  • Authorization
  • Capture
  • Refund
  • Void
  • ACH Credit
  • ACH Debit
  • Authorization Capture
  • Standalone Refund
  • Balance Inquiry
  • Partial Reversal
  • Authorization Reversal
  • Withdrawal
  • Account Verification
  • Payment Credit
  • ACH Void

Card Schemes ​

Valid values for the card_scheme argument:

  • VISA
  • MASTERCARD
  • AMERICAN EXPRESS
  • DISCOVER
  • JCB
  • DINERS CLUB INTERNATIONAL
  • CHINA UNION PAY
  • DEBIT

Webhook Payload ​

When a transaction event matches your subscription criteria, your webhook receives a JSON payload with a wrapper containing metadata and a data array of events.

Wrapper Fields ​

FieldTypeDescription
idUUIDUnique identifier for this notification
typestringSubscription type (transactions)
timestampstringWhen the notification was generated
attemptsarrayDelivery attempt history
dataarrayArray of transaction event objects

Event Fields ​

FieldTypeDescription
tran_ksuidstringUnique transaction identifier
tran_event_ksuidstringUnique transaction event identifier
entity_ksuidstringMerchant identifier
request_ksuidstringOriginal request identifier
gateway_type_ksuidstringGateway type identifier
datestringTransaction datetime with timezone
typestringTransaction type
statusstringTransaction status
cannonical_idstringComposite identifier in format {type}:{status}
cardstringLast 4 digits of card number
card_schemestringCard network (VISA, MASTERCARD, etc.)
payment_methodstringPayment method used
transaction_amountnumberTransaction amount in currency units
fee_amountnumberFee amount
tip_amountnumberTip amount
tax_amountnumberTax amount
ach_processing_amountnumberACH processing amount
currency_codestringISO 4217 currency code
currency_namestringCurrency name
currency_exponentnumberDecimal places for currency
auth_codestringAuthorization code
response_codestringResponse code
response_textstringResponse description
avs_checkstringAVS check result
device_namestringTerminal/device name
device_notesstringDevice notes
merchant_dataobjectMerchant-specific custom data
possible_descriptor_valuesobjectStatement descriptor values by card scheme
request_jsonstringOriginal API request as JSON string
response_jsonstringAPI response as JSON string
was_voidedbooleanWhether transaction was voided
was_refundedbooleanWhether transaction was refunded
was_capturedbooleanWhether transaction was captured
was_reversedbooleanWhether transaction was reversed
load_tsstringRecord load timestamp
tran_event_load_tsstringTransaction event load timestamp
tran_event_authorization_load_tsstringAuthorization event load timestamp
tran_event_authorization_detail_load_tsstringAuthorization detail load timestamp

Example Payload ​

json
{
  "id": "0a5373fd-af38-4a43-b76e-a254ad0f3b0a",
  "type": "transactions",
  "timestamp": "2024-01-15 10:30:00.545 -0800",
  "attempts": [],
  "data": [
    {
      "tran_ksuid": "38JJwHd8U9DJHGg3QqInArVqL9b",
      "tran_event_ksuid": "38JJwB5ErCxrbv9OgntMqlYcBRp",
      "entity_ksuid": "38JJwFgEKU8xJjpJKmbMwvhD3qF",
      "request_ksuid": "38JJwHhsBGxzl1knke5PEyj2QLN",
      "gateway_type_ksuid": "38JJwGyceey6vvIUVSvWme2uCRR",
      "date": "2024-01-15 10:30:00.000 -0800",
      "type": "Authorization Capture",
      "status": "Tran approved",
      "cannonical_id": "Authorization Capture:Tran approved",
      "card": "4242",
      "card_scheme": "VISA",
      "payment_method": "Card",
      "transaction_amount": 150.00,
      "fee_amount": 0,
      "tip_amount": 0,
      "tax_amount": 0,
      "ach_processing_amount": 0,
      "currency_code": "840",
      "currency_name": "US Dollar",
      "currency_exponent": 2,
      "auth_code": "123456",
      "response_code": "00",
      "response_text": "Approval and completed successfully",
      "avs_check": "Y",
      "device_name": "ECommerce Device",
      "device_notes": "Merchant Name : ECommerce Device",
      "merchant_data": {
        "CustomerID": "cust_123456",
        "OrderNumber": "order_789012"
      },
      "possible_descriptor_values": {
        "VISA": "MERCHANT NAME"
      },
      "request_json": "{\"Amount\":{\"Total\":150.00,\"Currency\":\"USD\"},\"PaymentMethod\":{\"Card\":{...},\"Token\":{\"TokenID\":\"...\"}},\"TransactionEntry\":{...},\"Detail\":{...}}",
      "response_json": "{\"TransactionID\":\"...\",\"EventID\":\"...\",\"RequestID\":\"...\",\"AuthCode\":\"123456\",\"ResponseCode\":\"00\",\"ResponseText\":\"Approval and completed successfully\",\"Approved\":true,...}",
      "was_voided": false,
      "was_refunded": false,
      "was_captured": false,
      "was_reversed": false,
      "load_ts": "2024-01-15 10:30:15.000 -0800",
      "tran_event_load_ts": "2024-01-15 10:30:15.000 -0800",
      "tran_event_authorization_load_ts": "2024-01-15 10:30:15.000 -0800",
      "tran_event_authorization_detail_load_ts": "2024-01-15 10:30:15.000 -0800"
    }
  ]
}

INFO

The request_json and response_json fields contain the full API request and response as JSON strings. They are truncated in this example for brevity.


API Operations ​

List Subscriptions ​

Retrieve a paginated list of transaction subscriptions.

bash
curl -X GET "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction?limit=10&offset=0" \
  -H "Authorization: YOUR_API_TOKEN"

Query Parameters ​

ParameterTypeDefaultDescription
limitinteger10Maximum number of results (0-1000)
offsetinteger0Number of results to skip

Create Subscription ​

Create a new transaction subscription with filtering arguments.

bash
curl -X POST "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction" \
  -H "Authorization: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "High Value Transactions",
    "description": "Notifications for transactions over $100",
    "arguments": {
      "entity_ksuid": "2MER123CHANT456KSUID789ABC",
      "amount_greater_than": "10000",
      "roll_up": false
    }
  }'

Request Body ​

FieldTypeRequiredDescription
namestringYesName for the subscription (1-64 characters)
descriptionstringNoDescription (1-256 characters)
argumentsobjectYesFilter arguments (see above)

Get Subscription ​

Retrieve details of a specific subscription.

bash
curl -X GET "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}" \
  -H "Authorization: YOUR_API_TOKEN"

Update Subscription ​

Update an existing subscription.

bash
curl -X PUT "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}" \
  -H "Authorization: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Name",
    "description": "Updated description",
    "arguments": {
      "entity_ksuid": "2MER123CHANT456KSUID789ABC",
      "status": "Tran approved"
    }
  }'

Delete Subscription ​

Delete a subscription. This also removes all destination mappings.

bash
curl -X DELETE "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}" \
  -H "Authorization: YOUR_API_TOKEN"

List Subscription Destinations ​

List webhook destinations linked to this subscription.

bash
curl -X GET "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}/destinations" \
  -H "Authorization: YOUR_API_TOKEN"

Add Destination to Subscription ​

Link a webhook destination to receive events from this subscription.

bash
curl -X POST "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}/destinations" \
  -H "Authorization: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "destination_id": "9603F4B2-1874-42FE-A2BC-F7B45C45A9D6"
  }'

Remove Destination from Subscription ​

Unlink a webhook destination from this subscription.

bash
curl -X DELETE "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}/destinations/{destination_id}" \
  -H "Authorization: YOUR_API_TOKEN"

Send Test Event ​

Send a test notification to verify your webhook integration.

bash
curl -X POST "https://api.notifications.paynetworx.cloud/v1/subscriptions/transaction/{id}/test" \
  -H "Authorization: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Query Parameters ​

ParameterTypeDefaultDescription
dry_runbooleanfalseWhen true, returns the payload that would be sent without actually delivering it

Request Body (Optional) ​

FieldTypeDescription
overridesobjectOptional field overrides for the test payload

This sends a sample transaction payload to all linked webhook destinations, allowing you to verify your integration before receiving live events. Use dry_run=true to preview the payload without sending.


Error Responses ​

StatusDescription
400Bad Request - Invalid input parameters
403Forbidden - Insufficient permissions
500Internal Server Error