Skip to content

feat(Wise Node): Add Activity resource to fetch transactions without SCA#28565

Open
pat-s wants to merge 2 commits inton8n-io:masterfrom
pat-s:feat/wise-activities-api
Open

feat(Wise Node): Add Activity resource to fetch transactions without SCA#28565
pat-s wants to merge 2 commits inton8n-io:masterfrom
pat-s:feat/wise-activities-api

Conversation

@pat-s
Copy link
Copy Markdown

@pat-s pat-s commented Apr 16, 2026

Summary

Context

Since mid-2025, Wise deprecated key-based SCA signing for personal/business API tokens. This broke the Account > Get Statement operation for most users in the EU/UK/EEA, as the balance statement endpoint requires SCA.

The Activities API returns transaction data (type, amount, currency, status, timestamps, descriptions) without requiring SCA or a private key, making it a viable alternative for users who need to fetch transaction history programmatically.

Files changed

  • packages/nodes-base/nodes/Wise/descriptions/ActivityDescription.ts — new resource description
  • packages/nodes-base/nodes/Wise/descriptions/index.ts — export the new description
  • packages/nodes-base/nodes/Wise/Wise.node.ts — add Activity resource option and execute logic

Closes #16675

The Wise balance statement endpoint requires Strong Customer Authentication
(SCA) via private key signing, which Wise deprecated for personal/business
API tokens in mid-2025 (see n8n-io#16675). This makes the existing getStatement
operation unusable for most users.

The Activities API (GET /v1/profiles/{profileId}/activities) returns
transaction data (type, amount, currency, status, timestamps) without
requiring SCA, providing a working alternative.

This adds an "Activity" resource with a "Get Many" operation that:
- Fetches activities for a given profile
- Supports cursor-based pagination (Return All)
- Supports filtering by date (Since) and status
- Does not require SCA or a private key
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Apr 16, 2026

CLA assistant check
All committers have signed the CLA.

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 3 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/nodes-base/nodes/Wise/Wise.node.ts">

<violation number="1" location="packages/nodes-base/nodes/Wise/Wise.node.ts:344">
P2: `activity:getAll` with `returnAll=false` does not paginate cursor results before applying client-side status filtering, so it can return too few matching items.</violation>
</file>
Architecture diagram
sequenceDiagram
    participant Engine as n8n Workflow Engine
    participant Node as Wise Node
    participant WiseAPI as Wise External API

    Note over Engine, WiseAPI: NEW: Activity "Get Many" Flow (No SCA Required)

    Engine->>Node: execute()
    Node->>Node: Get parameters (profileId, filters, returnAll)

    opt Filters: Since Date
        Node->>Node: Convert 'since' to UTC via Moment.js
    end

    alt Option: Return All = true
        loop While Cursor exists
            Node->>WiseAPI: NEW: GET /v1/profiles/{id}/activities (with cursor/size)
            WiseAPI-->>Node: 200 OK (activities[] + next_cursor)
            
            opt Filters: Status
                Node->>Node: CHANGED: Client-side filter by status (COMPLETED/PENDING)
            end
            
            Node->>Node: Accumulate results
        end
    else Option: Return All = false (Limit)
        Node->>WiseAPI: NEW: GET /v1/profiles/{id}/activities (limit size)
        WiseAPI-->>Node: 200 OK (activities[] + cursor)
        
        opt Filters: Status
            Node->>Node: CHANGED: Client-side filter by status
        end
        
        Node->>Node: Slice array to limit
    end

    Node-->>Engine: Return activity list data
    
    Note over Node, WiseAPI: Comparison: Unlike "Get Statement", this flow<br/>does NOT trigger SCA/private key signing.
Loading

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.

Comment thread packages/nodes-base/nodes/Wise/Wise.node.ts Outdated
When returnAll=false and a status filter is set, paginate through
cursor results until we have enough matching items, then slice to
the requested limit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wise integration broken because the SCA authentication is no longer supported

2 participants