Intelligent Payments

Intelligent Payments is Yaspa's flagship financial intelligence solution. It uses the data access a customer grants during the Yaspa hosted journey to give day-zero and ongoing visibility into the customer's account activity along with derived insights.

📘

Intelligent Payments is highly configurable. Yaspa works with you to make sure the solution fits your existing tools, with an appropriate balance of raw data and derived insights.

Integration

Intelligent Payments doesn't require changes to an existing payments integration, particularly to the APIs and redirects. Yaspa offers several ways for merchants to receive insights.

Insights dashboards in the Admin Dashboard

Operational teams can view aggregated insights and drill down into individual customer data with Yaspa's interactive tools. As with other Admin Dashboard functions, role-based security controls and individual permissions define which teams can access each insight group.

Example views populated with synthetic data can be configured in Sandbox on request.

Insights Webhooks

Yaspa can also send insights data as webhook notifications at the customer's first transaction and at configurable intervals after that. Configure these webhooks in the Insight Groups section of the Admin Dashboard. Insights webhooks available today are specified in the child pages of this document and include:

  • Transaction History: details all transactions within a specified time period
  • Categorized Transaction History: adds transaction-level categorization to the Transaction History webhook

Insights webhooks follow the same practical conventions and use the same header and envelope structure as payment webhooks. They also reuse many of the same parameters. The structure differs slightly to fit the nature of the data. Complete examples can be found in the dedicated insight webhook specifications nested beneath this page.

Data Object

FieldTypeDescription
metadataobjectWho and what the insights are for. See Metadata.
insightGroupobjectThe insight group configuration that was evaluated. See Insight group.
insightsobjectInsight results keyed by insight name as defined in the dedicated insights webhook nested beneath this page. Arrayed if there are multiple.

Metadata Object

FieldTypeDescription
merchantIdstringYaspa-assigned merchant identifier
customerIdentifierstringCustomer identifier the merchant sent in the customerIdentifier request parameter
referencestringMerchant-assigned payment identifier for the originating transaction
transactionIdstringYaspa transaction ID the insights were generated from
merchantTradingNamestringThe merchant's trading or doing-business-as name

Insight Group Object

FieldTypeDescription
idstringInsight group identifier assigned by Yaspa
namestringDisplay name of the insight group
insightsarray of stringsNames of the insights in the group
periodarray of stringsAggregation period(s): one or more of MONTHLY, WEEKLY and DAILY, as configured. Defaults to MONTHLY.
fromDatestringISO 8601 datetime of the start of the analyzed window
toDatestringISO 8601 datetime of the end of the analyzed window

Consent Revocation

Yaspa's payment and insights products rely on transaction and account information retrieved over open banking. The customer establishes this connection the first time they go through the hosted journey, such as their first Yaspa pay-in with the merchant. Once the customer agrees to share their transaction and account information, Yaspa regularly retrieves updated data in anticipation of further payment activity and to derive the insights provided through Intelligent Payments.

From time to time the connection is disrupted. Causes include an MFA challenge from the customer's bank, degraded service upstream of Yaspa's products, or the customer proactively ending the connection. Yaspa calls this consent revocation. As insights are consumed on an ongoing basis separately from payment activity, consider consent revocation when integrating Intelligent Payments.

When Yaspa detects that a consent has been revoked, the affected insights stop. For example, insights dashboards reflect data retrieved up to the revocation and then drop to zero, and any related insights webhooks stop. Merchants can subscribe to a dedicated "type": "CONSENT_REVOKED" webhook to be notified as soon as Yaspa detects the condition. Use the customerIdentifier and accountIds to accounts on file from payment activity to map the consent revocation to the customer and their impacted account(s).

For the avoidance of doubt, the payment flows handle consent revocation natively as specified; payment is in fact the ideal moment to repair a revoked consent.

Consent Revoked Webhook

Webhooks are sent as HTTPS POST requests, and a typical example of the request body is as follows:

{
  "type": "CONSENT_REVOKED",
  "data": {
    "transactionId": "d7941707-fe9f-fa8d-2491-3da414",
    "consentId": "cons_2b4d6f8h",
    "accountIds": ["CHECKING"],
    "merchantId": "69bbee7367f8982c81665203",
    "customerIdentifier": "xekzyz3lorw9",
    "reference": "3pdcj42fpn9t",
    "bank": "US Test Bank",
    "bankProvider": "MX",
    "territory": "US",
    "consentCreatedAt": "2026-10-02T21:27:58.510Z",
    "reason": "Consent was revoked through the bank",
    "revocationDetectedAt": "2026-10-05T11:20:43.117Z"
  }
}

As with other Yaspa webhooks, it is critically important that webhook handlers do not use strict mode parsing on the example above or samples from testing. Relevant parameters are defined in the table below:

FieldTypeDescription
transactionIdstringYaspa identifier for the account verification that created the consent
consentIdstringOpen banking provider's consent identifier
accountIdsarray of stringsIdentifiers of the accounts affected by the revocation
merchantIdstringYaspa-assigned merchant identifier
customerIdentifierstringCustomer identifier the merchant sent in the customerIdentifier request parameter
referencestringMerchant-assigned payment identifier for the originating transaction
bankstringYaspa bank ID
bankProviderstringOpen banking provider that holds the consent
territorystringBank territory code
consentCreatedAtstringISO 8601 datetime when the consent was created
consentExpiresAtstringISO 8601 datetime when the consent would have expired, if known
reasonstringHuman-readable revocation reason
revocationDetectedAtstringISO 8601 datetime when the revocation was detected

Transaction History webhook

The Transaction History webhook details all transactions on each account a user has shared with Yaspa. The content is data-rich and intended for analysis, not for immediate action on receipt.

Yaspa coordinates configuration during integration. Typically merchants choose to receive 90-day windows of data, organized into monthly periods (statements) and delivered weekly or monthly after the user's first payment.

Insights object: Transaction History

FieldTypeDescription
fromDatestringISO 8601 datetime of the start of the analyzed window
toDatestringISO 8601 datetime of the end of the analyzed window
accountsarrayAccount-level insights, one entry per account eligible for insight generation. See Accounts.
insightstringCATEGORIZED_TRANSACTION_HISTORY by default, or TRANSACTION_HISTORY when categorization is excluded

Accounts object

FieldTypeDescription
accountobjectThe user's account information. Same fields as the Account object on Webhook Structure.
fromDatestringISO 8601 datetime of the start of the window reported
toDatestringISO 8601 datetime of the end of the window reported
currencystringISO 4217 currency code, USD
moneyIndecimalSum of all incoming (credit) transaction amounts in the window
moneyOutdecimalSum of all outgoing (debit) transaction amounts in the window, as a positive number
closingBalancedecimalAccount balance at the end of the window, zero if undefined
openingBalancedecimalAccount balance at the start of the window, zero if undefined
statementsobjectTransactions and summaries, grouped by the requested period type(s). See Statements.

Statements object

FieldTypeDescription
periodobjectTransaction data aggregated by period type. See Period.

Period object

FieldTypeDescription
<period>arrayCollections of data organized into DAILY, WEEKLY and/or MONTHLY, as configured. Sorted most recent first. See Period data.

Period data object

FieldTypeDescription
fromDatestringISO 8601 (UTC) start of this period
toDatestringISO 8601 (UTC) end of this period
descriptionstringHuman-readable label for the period, for example 2026-02 for monthly, WEEK 5, 2026 for weekly, 2026-02-04 for daily
moneyIndecimalSum of all incoming (credit) transaction amounts in this period
moneyOutdecimalSum of all outgoing (debit) transaction amounts in this period, as a positive number
closingBalancedecimalBalance at the end of this period, zero if undefined
openingBalancedecimalBalance at the start of this period, zero if undefined
transactionsarrayIndividual transactions during this period. See Transaction.

Transaction object

FieldTypeDescription
datestringISO 8601 (UTC) timestamp of the transaction's most recent update
descriptionstringCleaned merchant and/or transaction description
originalDescriptionstringRaw description as retrieved, before any relabeling
categorystringTransaction category interpreted by Yaspa, unless disabled
statusstringTransaction status at the time of the report: POSTED or PENDING
amountdecimalNegative for outgoing (debit), positive for incoming (credit)
merchantCategoryCodeintegerMerchant category code (MCC), if available
checkNumberstringCheck number. Present only for check transactions.
balanceAfterTransactiondecimalRunning account balance immediately after this transaction

Example payload

Insights webhooks are HTTPS POST requests. A typical request body:

{
  "type": "INSIGHTS",
  "data": {
    "metadata": {
      "merchantId": "6ac021de351a3351401565cb",
      "customerIdentifier": "xekzyz3lorw9",
      "reference": "3pdcj42fpn9t",
      "transactionId": "d7941707-fe9f-fa8d-2491-3da414",
      "merchantTradingName": "example.com"
    },
    "insightGroup": {
      "id": "6650a3aac3b4d5e6f7a8b9d1",
      "name": "Insight Group 1",
      "insights": ["CATEGORIZED_TRANSACTION_HISTORY"],
      "period": ["MONTHLY"],
      "fromDate": "2026-01-01T00:00:00Z",
      "toDate": "2026-02-28T23:59:59Z"
    },
    "insights": {
      "CATEGORIZED_TRANSACTION_HISTORY": {
        "fromDate": "2026-01-01T00:00:00Z",
        "toDate": "2026-02-28T23:59:59Z",
        "accounts": [
          {
            "account": {
              "identifier": "CHECKING",
              "financialInstitution": "US Test Bank",
              "type": "CHECKING",
              "holderName": "John Smith",
              "numberLastFour": "7890",
              "routingNumber": "222222226",
              "dataAccessStatus": "CONNECTED",
              "dataLastUpdated": "2026-03-01T09:14:22Z"
            },
            "fromDate": "2026-02-01T00:00:00Z",
            "toDate": "2026-02-28T23:59:59Z",
            "currency": "USD",
            "moneyIn": 500.00,
            "moneyOut": 40.00,
            "closingBalance": 960.00,
            "openingBalance": 500.00,
            "statements": {
              "period": {
                "MONTHLY": [
                  {
                    "fromDate": "2026-02-01T00:00:00Z",
                    "toDate": "2026-02-28T23:59:59Z",
                    "description": "2026-02",
                    "moneyIn": 500.00,
                    "moneyOut": 40.00,
                    "closingBalance": 960.00,
                    "openingBalance": 500.00,
                    "transactions": [
                      {
                        "date": "2026-02-14T19:42:05Z",
                        "description": "Olive Garden",
                        "originalDescription": "OLIVE GARDEN #1123 AUSTIN TX",
                        "category": "Other",
                        "status": "POSTED",
                        "amount": -40.00,
                        "merchantCategoryCode": 5812,
                        "balanceAfterTransaction": 960.00
                      },
                      {
                        "date": "2026-02-13T08:00:00Z",
                        "description": "Payroll",
                        "originalDescription": "ACME CORP PAYROLL PPD ID 1234567",
                        "category": "Income",
                        "status": "POSTED",
                        "amount": 500.00,
                        "balanceAfterTransaction": 1000.00
                      }
                    ]
                  }
                ]
              }
            }
          }
        ],
        "insight": "CATEGORIZED_TRANSACTION_HISTORY"
      }
    }
  }
}

Did this page help you?