Transactions Webhook

VMS sends real-time webhook notifications when transactions are created, updated, or deleted. Webhooks are delivered as POST requests to your configured endpoint(s) with a JSON payload.

Trigger Events

ActionTrigger
INSERTA new transaction is created. Skipped for historical/imported transactions.
MODIFYA transaction's status changes or its change details are updated. Other field changes are ignored.
REMOVEA transaction is deleted.

Headers

HeaderDescription
Content-Typeapplication/json
X-Valmar-WebhookHMAC-SHA512 hex-encoded signature of the request body. Only present if an HMAC secret is configured.

Payload Schema

{
  "category": "transactions",       // Always "transactions"
  "action": "INSERT | MODIFY | REMOVE",
  "data": {
    // --- Core Fields ---
    "company": "string",             // Company name
    "uuid": "string",               // Transaction UUID
    "numericId": 0,                  // Numeric transaction ID
    "method": "string",             // ACH, RCC, RTP, P2C, CRD
    "type": "string",               // DEBIT or CREDIT
    "amount": 0,                     // Amount in cents (e.g. 1000 = $10.00)
    "status": "string",             // Current transaction status
    "standardEntryClassCode": "string | null", // SEC code (e.g. WEB, PPD, CCD)
    "createdAt": "ISO 8601",        // Transaction creation timestamp
    "externalUniqueId": "string | null",
    "description": "string | null",
    "memo": "string | null",
    "externalCustomerId": "string | null",
    "failureReason": "string | null",

    // --- Detail Objects (null when not applicable) ---
    "paymentDetails": { ... },
    "batchDetails": { ... },
    "settlementDetails": { ... },
    "returnDetails": { ... },
    "holdDetails": { ... },
    "changeDetails": { ... },
    "voidDetails": { ... },
    "rejectDetails": { ... },
    "authorizationDetails": { ... },
    "captureDetails": { ... }
  }
}

paymentDetails

Present on all transactions. Contains counterparty payment information.

FieldTypeDescription
namestringCounterparty name
accountTypestringchecking or savings
routingNumberstring|nullABA routing number (ACH/RCC)
panFirstSixstring|nullFirst 6 digits of card PAN (CRD only)
panLastFourstring|nullLast 4 digits of card PAN (CRD only)
expirationDatestring|nullCard expiration date (CRD only)
billingAddressstring|nullCardholder billing address (CRD only)
billingPostalCodestring|nullBilling postal code (CRD only)
billingCitystring|nullBilling city (CRD only)
billingStatestring|nullBilling state (CRD only)
bankDetailsobject|nullBank information from ABA lookup (see below)

bankDetails

FieldTypeDescription
namestring|nullBank name
addressstring|nullBank address
citystring|nullBank city
statestring|nullBank state
zipstring|nullBank ZIP code
zipExtstring|nullZIP extension
areaCodestring|nullPhone area code
phonePrefixstring|nullPhone prefix
phoneSuffixstring|nullPhone suffix
servicingFRBNumberstring|nullServicing Federal Reserve number

batchDetails

Present when the transaction has been batched for processing.

FieldTypeDescription
batchUuidstring|nullBatch UUID
batchNumericIdstring|nullBatch numeric ID
batchedAtstring|nullISO 8601 batch timestamp

settlementDetails

Present when the transaction has settlement information.

FieldTypeDescription
settlementUuidstring|nullSettlement UUID
settlementNumericIdstring|nullSettlement numeric ID
expectedToSettleAtstring|nullExpected settlement date
settlementProcessedAtstring|nullISO 8601 actual settlement timestamp
lateReturnSettlementUuidstring|nullLate return settlement UUID
lateReturnSettlementNumericIdstring|nullLate return settlement numeric ID
lateReturnSettlementProcessedAtstring|nullISO 8601 late return settlement timestamp

returnDetails

Present when the transaction has been returned.

FieldTypeDescription
returnCodestring|nullReturn reason code (e.g. R01, R02)
returnReasonstring|nullHuman-readable return reason
returnNumericIdstring|nullReturn numeric ID
returnUuidstring|nullReturn UUID
returnedAtstring|nullISO 8601 return timestamp
lateReturnedAtstring|nullISO 8601 late return timestamp

holdDetails

Present when the transaction is on hold.

FieldTypeDescription
holdReasonstring|nullReason for hold
holdCodestring|nullHold code (e.g. H01, H02)
releasedAtstring|nullISO 8601 hold release timestamp

changeDetails

Present when a NOC (Notification of Change) has been received.

FieldTypeDescription
changeCodestring|nullChange code (e.g. C01, C02)
changeReasonstring|nullHuman-readable change reason
changedAtstring|nullISO 8601 change timestamp
oldValuesobject|nullPrevious field values
newValuesobject|nullUpdated field values
filterUuidstring|nullAssociated filter UUID

voidDetails

Present when the transaction has been voided.

FieldTypeDescription
voidedAtstring|nullISO 8601 void timestamp

rejectDetails

Present when the transaction has been rejected.

FieldTypeDescription
rejectReasonstring|nullReason for rejection
rejectedAtstring|nullISO 8601 rejection timestamp
restoredAtstring|nullISO 8601 restoration timestamp

authorizationDetails

Present for card (CRD) transactions after authorization.

FieldTypeDescription
authorizationCodestring|nullAuthorization code from processor
authorizedAtstring|nullISO 8601 authorization timestamp
expiresAtstring|nullISO 8601 authorization expiry
capturedAtstring|nullISO 8601 capture timestamp
avsCodestring|nullAVS response code
avsDescriptionstring|nullAVS response description
avsMatchboolean|nullWhether AVS matched
cvvCodestring|nullCVV response code
cvvDescriptionstring|nullCVV response description
cvvMatchboolean|nullWhether CVV matched
responseCodestring|nullProcessor response code
responseMessagestring|nullProcessor response message
approvalCodestring|nullApproval code from processor

captureDetails

Present for card (CRD) transactions after capture/settlement.

FieldTypeDescription
capturedAtstring|nullISO 8601 capture timestamp
saleAtstring|nullISO 8601 sale timestamp
batchNumberstring|nullProcessor batch number
responseCodestring|nullCapture response code

Example Payloads

New ACH Transaction (INSERT)

{
  "category": "transactions",
  "action": "INSERT",
  "data": {
    "company": "Acme Corp",
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "numericId": 100542,
    "method": "ACH",
    "type": "DEBIT",
    "amount": 15000,
    "status": "pending",
    "standardEntryClassCode": "WEB",
    "createdAt": "2026-03-25T14:30:00Z",
    "externalUniqueId": "inv-2026-0042",
    "description": "Monthly subscription",
    "memo": null,
    "externalCustomerId": "cust-8821",
    "failureReason": null,
    "paymentDetails": {
      "name": "John Doe",
      "accountType": "checking",
      "routingNumber": "021000021",
      "panFirstSix": null,
      "panLastFour": null,
      "expirationDate": null,
      "billingAddress": null,
      "billingPostalCode": null,
      "billingCity": null,
      "billingState": null,
      "bankDetails": {
        "name": "JPMorgan Chase",
        "address": "270 Park Avenue",
        "city": "New York",
        "state": "NY",
        "zip": "10017",
        "zipExt": null,
        "areaCode": "212",
        "phonePrefix": "270",
        "phoneSuffix": "6000",
        "servicingFRBNumber": "021001208"
      }
    },
    "batchDetails": null,
    "settlementDetails": null,
    "returnDetails": null,
    "holdDetails": null,
    "changeDetails": null,
    "voidDetails": null,
    "rejectDetails": null,
    "authorizationDetails": null,
    "captureDetails": null
  }
}

Transaction Settled (MODIFY)

{
  "category": "transactions",
  "action": "MODIFY",
  "data": {
    "company": "Acme Corp",
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "numericId": 100542,
    "method": "ACH",
    "type": "DEBIT",
    "amount": 15000,
    "status": "settled",
    "standardEntryClassCode": "WEB",
    "createdAt": "2026-03-25T14:30:00Z",
    "externalUniqueId": "inv-2026-0042",
    "description": "Monthly subscription",
    "memo": null,
    "externalCustomerId": "cust-8821",
    "failureReason": null,
    "paymentDetails": {
      "name": "John Doe",
      "accountType": "checking",
      "routingNumber": "021000021",
      "panFirstSix": null,
      "panLastFour": null,
      "expirationDate": null,
      "billingAddress": null,
      "billingPostalCode": null,
      "billingCity": null,
      "billingState": null,
      "bankDetails": null
    },
    "batchDetails": {
      "batchUuid": "b1c2d3e4-f5a6-7890-bcde-fa1234567890",
      "batchNumericId": "5023",
      "batchedAt": "2026-03-25T18:00:00Z"
    },
    "settlementDetails": {
      "settlementUuid": "s1t2u3v4-w5x6-7890-cdef-ab1234567890",
      "settlementNumericId": "3010",
      "expectedToSettleAt": "2026-03-27",
      "settlementProcessedAt": "2026-03-27T12:00:00Z",
      "lateReturnSettlementUuid": null,
      "lateReturnSettlementNumericId": null,
      "lateReturnSettlementProcessedAt": null
    },
    "returnDetails": null,
    "holdDetails": null,
    "changeDetails": null,
    "voidDetails": null,
    "rejectDetails": null,
    "authorizationDetails": null,
    "captureDetails": null
  }
}

Transaction Returned (MODIFY)

{
  "category": "transactions",
  "action": "MODIFY",
  "data": {
    "company": "Acme Corp",
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "numericId": 100542,
    "method": "ACH",
    "type": "DEBIT",
    "amount": 15000,
    "status": "returned",
    "standardEntryClassCode": "WEB",
    "createdAt": "2026-03-25T14:30:00Z",
    "externalUniqueId": "inv-2026-0042",
    "description": "Monthly subscription",
    "memo": null,
    "externalCustomerId": "cust-8821",
    "failureReason": "NSF - Not Sufficient Funds",
    "paymentDetails": {
      "name": "John Doe",
      "accountType": "checking",
      "routingNumber": "021000021",
      "panFirstSix": null,
      "panLastFour": null,
      "expirationDate": null,
      "billingAddress": null,
      "billingPostalCode": null,
      "billingCity": null,
      "billingState": null,
      "bankDetails": null
    },
    "batchDetails": {
      "batchUuid": "b1c2d3e4-f5a6-7890-bcde-fa1234567890",
      "batchNumericId": "5023",
      "batchedAt": "2026-03-25T18:00:00Z"
    },
    "settlementDetails": {
      "settlementUuid": "s1t2u3v4-w5x6-7890-cdef-ab1234567890",
      "settlementNumericId": "3010",
      "expectedToSettleAt": "2026-03-27",
      "settlementProcessedAt": "2026-03-27T12:00:00Z",
      "lateReturnSettlementUuid": null,
      "lateReturnSettlementNumericId": null,
      "lateReturnSettlementProcessedAt": null
    },
    "returnDetails": {
      "returnCode": "R01",
      "returnReason": "Insufficient Funds",
      "returnNumericId": "7001",
      "returnUuid": "r1e2t3u4-r5n6-7890-defg-bc1234567890",
      "returnedAt": "2026-03-28T09:15:00Z",
      "lateReturnedAt": null
    },
    "holdDetails": null,
    "changeDetails": null,
    "voidDetails": null,
    "rejectDetails": null,
    "authorizationDetails": null,
    "captureDetails": null
  }
}

Card Authorization (INSERT)

{
  "category": "transactions",
  "action": "INSERT",
  "data": {
    "company": "Acme Corp",
    "uuid": "c4d5e6f7-a8b9-0123-cdef-456789abcdef",
    "numericId": 100601,
    "method": "CRD",
    "type": "DEBIT",
    "amount": 4999,
    "status": "authorized",
    "standardEntryClassCode": null,
    "createdAt": "2026-03-25T16:45:00Z",
    "externalUniqueId": "order-9930",
    "description": "Online purchase",
    "memo": null,
    "externalCustomerId": "cust-5540",
    "failureReason": null,
    "paymentDetails": {
      "name": "Jane Smith",
      "accountType": "checking",
      "routingNumber": null,
      "panFirstSix": "411111",
      "panLastFour": "1111",
      "expirationDate": "12/27",
      "billingAddress": "123 Main St",
      "billingPostalCode": "90210",
      "billingCity": "Beverly Hills",
      "billingState": "CA",
      "bankDetails": null
    },
    "batchDetails": null,
    "settlementDetails": null,
    "returnDetails": null,
    "holdDetails": null,
    "changeDetails": null,
    "voidDetails": null,
    "rejectDetails": null,
    "authorizationDetails": {
      "authorizationCode": "AUTH01",
      "authorizedAt": "2026-03-25T16:45:01Z",
      "expiresAt": "2026-04-01T16:45:01Z",
      "capturedAt": null,
      "avsCode": "Y",
      "avsDescription": "Street address and 5-digit ZIP match",
      "avsMatch": true,
      "cvvCode": "M",
      "cvvDescription": "CVV matches",
      "cvvMatch": true,
      "responseCode": "00",
      "responseMessage": "Approved",
      "approvalCode": "093821"
    },
    "captureDetails": null
  }
}