payment-skill 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +62 -0
- package/README.md +545 -0
- package/SKILL.md +99 -0
- package/SUPPORT.md +153 -0
- package/bin/payment-skill.js +2 -0
- package/dashboard.html +669 -0
- package/dist/api/bunq.d.ts +35 -0
- package/dist/api/bunq.d.ts.map +1 -0
- package/dist/api/bunq.js +164 -0
- package/dist/api/bunq.js.map +1 -0
- package/dist/api/wise.d.ts +32 -0
- package/dist/api/wise.d.ts.map +1 -0
- package/dist/api/wise.js +155 -0
- package/dist/api/wise.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/bunq.d.ts +8 -0
- package/dist/commands/bunq.d.ts.map +1 -0
- package/dist/commands/bunq.js +193 -0
- package/dist/commands/bunq.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +70 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/emergency.d.ts +8 -0
- package/dist/commands/emergency.d.ts.map +1 -0
- package/dist/commands/emergency.js +85 -0
- package/dist/commands/emergency.js.map +1 -0
- package/dist/commands/limits.d.ts +6 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +125 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/merchant.d.ts +6 -0
- package/dist/commands/merchant.d.ts.map +1 -0
- package/dist/commands/merchant.js +41 -0
- package/dist/commands/merchant.js.map +1 -0
- package/dist/commands/pay.d.ts +10 -0
- package/dist/commands/pay.d.ts.map +1 -0
- package/dist/commands/pay.js +112 -0
- package/dist/commands/pay.js.map +1 -0
- package/dist/commands/provider.d.ts +6 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +74 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/server.d.ts +8 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +92 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/template.d.ts +8 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +161 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/transaction.d.ts +6 -0
- package/dist/commands/transaction.d.ts.map +1 -0
- package/dist/commands/transaction.js +72 -0
- package/dist/commands/transaction.js.map +1 -0
- package/dist/commands/wise.d.ts +8 -0
- package/dist/commands/wise.d.ts.map +1 -0
- package/dist/commands/wise.js +240 -0
- package/dist/commands/wise.js.map +1 -0
- package/dist/core/config.d.ts +40 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +201 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/template-engine.d.ts +27 -0
- package/dist/core/template-engine.d.ts.map +1 -0
- package/dist/core/template-engine.js +410 -0
- package/dist/core/template-engine.js.map +1 -0
- package/dist/core/transaction.d.ts +31 -0
- package/dist/core/transaction.d.ts.map +1 -0
- package/dist/core/transaction.js +214 -0
- package/dist/core/transaction.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/server/server.d.ts +14 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +120 -0
- package/dist/server/server.js.map +1 -0
- package/dist/types/index.d.ts +141 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/logo.png +0 -0
- package/package.json +78 -0
- package/src/api/bunq.ts +257 -0
- package/src/api/wise.ts +204 -0
- package/src/cli.ts +67 -0
- package/src/commands/bunq.ts +223 -0
- package/src/commands/config.ts +72 -0
- package/src/commands/emergency.ts +94 -0
- package/src/commands/limits.ts +126 -0
- package/src/commands/merchant.ts +39 -0
- package/src/commands/pay.ts +109 -0
- package/src/commands/provider.ts +75 -0
- package/src/commands/server.ts +59 -0
- package/src/commands/template.ts +172 -0
- package/src/commands/transaction.ts +66 -0
- package/src/commands/wise.ts +279 -0
- package/src/core/config.ts +202 -0
- package/src/core/template-engine.ts +454 -0
- package/src/core/transaction.ts +228 -0
- package/src/index.ts +14 -0
- package/src/server/server.ts +131 -0
- package/src/types/index.ts +178 -0
- package/tsconfig.json +23 -0
- package/verified-merchants.json +63 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 kraskoruk
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
ADDITIONAL LIABILITY DISCLAIMER FOR PAYMENT-SKILL:
|
|
26
|
+
|
|
27
|
+
THE CREATORS AND CONTRIBUTORS OF PAYMENT-SKILL CANNOT BE HELD LIABLE FOR ANY
|
|
28
|
+
FINANCIAL LOSSES, DAMAGES, OR HARM TO USERS OR THIRD PARTIES.
|
|
29
|
+
|
|
30
|
+
By using this software, you acknowledge and agree that:
|
|
31
|
+
|
|
32
|
+
1. PAYMENT-SKILL IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, EXPRESS OR IMPLIED
|
|
33
|
+
2. YOU USE THIS SOFTWARE ENTIRELY AT YOUR OWN RISK
|
|
34
|
+
3. THE AUTHORS ARE NOT RESPONSIBLE FOR:
|
|
35
|
+
- Lost funds or failed transactions
|
|
36
|
+
- Unauthorized access to your accounts
|
|
37
|
+
- API errors or service outages from payment providers
|
|
38
|
+
- Incorrect transaction amounts or destinations
|
|
39
|
+
- Any financial losses whatsoever
|
|
40
|
+
|
|
41
|
+
4. YOU ARE SOLELY RESPONSIBLE FOR:
|
|
42
|
+
- Securing your API keys and credentials
|
|
43
|
+
- Verifying all transaction details before execution
|
|
44
|
+
- Understanding the risks of automated financial transactions
|
|
45
|
+
- Complying with all applicable laws and regulations
|
|
46
|
+
- Any taxes, fees, or legal obligations resulting from your use
|
|
47
|
+
|
|
48
|
+
5. EMERGENCY STOP FEATURE:
|
|
49
|
+
- While provided as a safety feature, the emergency stop may not prevent
|
|
50
|
+
all transactions in all circumstances
|
|
51
|
+
- Network delays, API issues, or other technical problems may prevent
|
|
52
|
+
immediate cancellation
|
|
53
|
+
|
|
54
|
+
6. THIRD-PARTY SERVICES:
|
|
55
|
+
- Payment-skill integrates with third-party services (Wise, Bunq, etc.)
|
|
56
|
+
- These services have their own terms, conditions, and limitations
|
|
57
|
+
- The authors are not responsible for third-party service availability
|
|
58
|
+
or behavior
|
|
59
|
+
|
|
60
|
+
IF YOU DO NOT AGREE WITH THESE TERMS, DO NOT USE THIS SOFTWARE.
|
|
61
|
+
|
|
62
|
+
For support, use at your own discretion and risk.
|
package/README.md
ADDED
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
# Payment Skill
|
|
2
|
+
|
|
3
|
+
Self-hosted payment orchestration app for OpenClaw - pay from your bank account to merchants via API.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Payment Skill is a Node.js/TypeScript application that enables OpenClaw agents to make payments from the owner's bank account to merchants who accept payments through APIs. It supports multiple payment providers (Wise, Bunq) and provides both a CLI interface and web dashboard.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Multi-Provider Support**: Wise, Bunq (extensible to Stripe, Airwallex)
|
|
12
|
+
- **CLI Interface**: Complete command-line interface for automation
|
|
13
|
+
- **Web Dashboard**: Browser-based interface for manual operations
|
|
14
|
+
- **Emergency Stop**: Big red button to halt all transactions immediately
|
|
15
|
+
- **Transaction Limits**: Configurable daily, weekly, monthly limits
|
|
16
|
+
- **Time Windows**: Restrict transactions to specific hours
|
|
17
|
+
- **Merchant Detection**: Auto-detect merchant API capabilities
|
|
18
|
+
- **Template-Based**: Configurable payment flow templates
|
|
19
|
+
- **Webhook Support**: Real-time notifications for async payments
|
|
20
|
+
- **Comprehensive Logging**: Full audit trail of all transactions
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
### Global Installation (Recommended)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g payment-skill
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Local Installation
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install payment-skill
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### From Source
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/kraskoruk/payment-skill.git
|
|
40
|
+
cd payment-skill
|
|
41
|
+
npm install
|
|
42
|
+
npm run build
|
|
43
|
+
npm link
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
47
|
+
|
|
48
|
+
### 1. Initialize Configuration
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
payment-skill config init
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Add Payment Provider
|
|
55
|
+
|
|
56
|
+
For Wise:
|
|
57
|
+
```bash
|
|
58
|
+
payment-skill provider add wise --api-key YOUR_WISE_API_KEY
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For Bunq:
|
|
62
|
+
```bash
|
|
63
|
+
payment-skill provider add bunq --api-key YOUR_BUNQ_API_KEY
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Check Balance
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Wise
|
|
70
|
+
payment-skill wise balance
|
|
71
|
+
|
|
72
|
+
# Bunq
|
|
73
|
+
payment-skill bunq accounts --user YOUR_USER_ID
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 4. Make a Payment
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Using Wise
|
|
80
|
+
payment-skill wise quote --source EUR --target EUR --amount 100
|
|
81
|
+
payment-skill wise transfer --quote QUOTE_ID --recipient RECIPIENT_ID
|
|
82
|
+
payment-skill wise fund TRANSFER_ID
|
|
83
|
+
|
|
84
|
+
# Using Bunq
|
|
85
|
+
payment-skill bunq pay --user USER_ID --account ACCOUNT_ID --amount 100 --currency EUR --to-iban IBAN --to-name "Recipient Name" --description "Payment"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## CLI Commands Reference
|
|
89
|
+
|
|
90
|
+
### Configuration Commands
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Initialize configuration
|
|
94
|
+
payment-skill config init
|
|
95
|
+
|
|
96
|
+
# Get configuration value
|
|
97
|
+
payment-skill config get <key>
|
|
98
|
+
|
|
99
|
+
# Set configuration value
|
|
100
|
+
payment-skill config set <key> <value>
|
|
101
|
+
|
|
102
|
+
# List all configuration
|
|
103
|
+
payment-skill config list
|
|
104
|
+
|
|
105
|
+
# Show config file path
|
|
106
|
+
payment-skill config path
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Provider Commands
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Add a provider
|
|
113
|
+
payment-skill provider add <name> --api-key <key> [options]
|
|
114
|
+
|
|
115
|
+
# List configured providers
|
|
116
|
+
payment-skill provider list
|
|
117
|
+
|
|
118
|
+
# Get provider details
|
|
119
|
+
payment-skill provider get <name>
|
|
120
|
+
|
|
121
|
+
# Remove a provider
|
|
122
|
+
payment-skill provider remove <name>
|
|
123
|
+
|
|
124
|
+
# Test provider connection
|
|
125
|
+
payment-skill provider test <name>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Wise Commands
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Get balances
|
|
132
|
+
payment-skill wise balance [--profile <id>]
|
|
133
|
+
|
|
134
|
+
# Create a quote
|
|
135
|
+
payment-skill wise quote --source <currency> --target <currency> --amount <amount> [--profile <id>]
|
|
136
|
+
|
|
137
|
+
# Create a transfer
|
|
138
|
+
payment-skill wise transfer --quote <id> --recipient <id> [--reference <text>] [--profile <id>]
|
|
139
|
+
|
|
140
|
+
# Fund a transfer
|
|
141
|
+
payment-skill wise fund <transferId> [--profile <id>]
|
|
142
|
+
|
|
143
|
+
# List transfers
|
|
144
|
+
payment-skill wise list [--profile <id>] [--status <status>] [--limit <number>]
|
|
145
|
+
|
|
146
|
+
# Get transfer status
|
|
147
|
+
payment-skill wise status <transferId> [--poll] [--interval <seconds>]
|
|
148
|
+
|
|
149
|
+
# Cancel a transfer
|
|
150
|
+
payment-skill wise cancel <transferId>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Bunq Commands
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# List accounts
|
|
157
|
+
payment-skill bunq accounts --user <id>
|
|
158
|
+
|
|
159
|
+
# Get balance
|
|
160
|
+
payment-skill bunq balance --user <id> --account <id>
|
|
161
|
+
|
|
162
|
+
# Create payment
|
|
163
|
+
payment-skill bunq pay --user <id> --account <id> --amount <amount> --currency <currency> --to-iban <iban> --to-name <name> --description <text>
|
|
164
|
+
|
|
165
|
+
# Create payment request
|
|
166
|
+
payment-skill bunq request --user <id> --account <id> --amount <amount> --currency <currency> --to <alias> --description <text> [--type <type>]
|
|
167
|
+
|
|
168
|
+
# List payments
|
|
169
|
+
payment-skill bunq payments --user <id> --account <id> [--limit <number>]
|
|
170
|
+
|
|
171
|
+
# List payment requests
|
|
172
|
+
payment-skill bunq requests --user <id> --account <id>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Transaction Commands
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# List transactions
|
|
179
|
+
payment-skill transaction list [--status <status>] [--provider <provider>] [--merchant <merchant>]
|
|
180
|
+
|
|
181
|
+
# Get transaction details
|
|
182
|
+
payment-skill transaction get <id>
|
|
183
|
+
|
|
184
|
+
# Cancel a transaction
|
|
185
|
+
payment-skill transaction cancel <id>
|
|
186
|
+
|
|
187
|
+
# Delete a transaction
|
|
188
|
+
payment-skill transaction delete <id>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Limit Commands
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Get current limits
|
|
195
|
+
payment-skill limits get
|
|
196
|
+
|
|
197
|
+
# Set limits
|
|
198
|
+
payment-skill limits set --per-transaction <amount> --daily <amount> --weekly <amount> --monthly <amount> --max-per-hour <count>
|
|
199
|
+
|
|
200
|
+
# Get time window settings
|
|
201
|
+
payment-skill limits time-window get
|
|
202
|
+
|
|
203
|
+
# Set time window
|
|
204
|
+
payment-skill limits time-window set --start <HH:MM> --end <HH:MM> --timezone <timezone>
|
|
205
|
+
|
|
206
|
+
# Enable/disable time window
|
|
207
|
+
payment-skill limits time-window enable
|
|
208
|
+
payment-skill limits time-window disable
|
|
209
|
+
|
|
210
|
+
# Block/unblock merchant
|
|
211
|
+
payment-skill limits block <merchant-id>
|
|
212
|
+
payment-skill limits unblock <merchant-id>
|
|
213
|
+
|
|
214
|
+
# Block/unblock category
|
|
215
|
+
payment-skill limits block-category <category>
|
|
216
|
+
payment-skill limits unblock-category <category>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Emergency Commands
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Activate emergency stop
|
|
223
|
+
payment-skill emergency stop [--reason <reason>]
|
|
224
|
+
|
|
225
|
+
# Deactivate emergency stop
|
|
226
|
+
payment-skill emergency resume
|
|
227
|
+
|
|
228
|
+
# Check emergency status
|
|
229
|
+
payment-skill emergency status
|
|
230
|
+
|
|
231
|
+
# Kill all pending transactions
|
|
232
|
+
payment-skill emergency kill-all --force
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Merchant Commands
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Detect merchant API capabilities
|
|
239
|
+
payment-skill merchant detect <domain>
|
|
240
|
+
|
|
241
|
+
# List supported merchant APIs
|
|
242
|
+
payment-skill merchant list-apis
|
|
243
|
+
|
|
244
|
+
# Get merchant capabilities
|
|
245
|
+
payment-skill merchant capabilities <merchant-id>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Template Commands
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# List available templates
|
|
252
|
+
payment-skill template list [--merchant <merchant>]
|
|
253
|
+
|
|
254
|
+
# Get template details
|
|
255
|
+
payment-skill template get <template-id>
|
|
256
|
+
|
|
257
|
+
# Execute payment with template
|
|
258
|
+
payment-skill pay --template <id> --amount <amount> --currency <currency> [template-specific-options]
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Server Commands
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Start dashboard server
|
|
265
|
+
payment-skill serve [--port <port>] [--host <host>]
|
|
266
|
+
|
|
267
|
+
# Start in background
|
|
268
|
+
payment-skill serve --daemon
|
|
269
|
+
|
|
270
|
+
# Stop server
|
|
271
|
+
payment-skill server stop
|
|
272
|
+
|
|
273
|
+
# Check server status
|
|
274
|
+
payment-skill server status
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Verified Merchants
|
|
278
|
+
|
|
279
|
+
Payment-skill only allows transactions to pre-approved merchants. The list is stored in `verified-merchants.json`:
|
|
280
|
+
|
|
281
|
+
**Current Verified Merchants:**
|
|
282
|
+
1. **Stripe Connect** - Payment processor (can receive payments)
|
|
283
|
+
2. **Airwallex** - Payment processor (can receive payments)
|
|
284
|
+
3. **DigitalOcean** - Cloud hosting (separate team billing)
|
|
285
|
+
4. **ClickClack Market** - Your marketplace (can receive payments)
|
|
286
|
+
|
|
287
|
+
**Blocked Categories:**
|
|
288
|
+
- gambling
|
|
289
|
+
- adult
|
|
290
|
+
- drugs
|
|
291
|
+
- weapons
|
|
292
|
+
- tobacco
|
|
293
|
+
|
|
294
|
+
The app will reject any transaction to merchants not on this list.
|
|
295
|
+
|
|
296
|
+
## Configuration
|
|
297
|
+
|
|
298
|
+
Configuration is stored in `~/.payment-skill/config.json`:
|
|
299
|
+
|
|
300
|
+
```json
|
|
301
|
+
{
|
|
302
|
+
"version": "1.0.0",
|
|
303
|
+
"providers": {
|
|
304
|
+
"wise": {
|
|
305
|
+
"apiKey": "wise-api-key",
|
|
306
|
+
"profileId": "profile-id",
|
|
307
|
+
"environment": "production"
|
|
308
|
+
},
|
|
309
|
+
"bunq": {
|
|
310
|
+
"apiKey": "bunq-api-key",
|
|
311
|
+
"environment": "production"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"limits": {
|
|
315
|
+
"perTransaction": 10000,
|
|
316
|
+
"daily": 50000,
|
|
317
|
+
"weekly": 200000,
|
|
318
|
+
"monthly": 500000,
|
|
319
|
+
"maxTransactionsPerHour": 10
|
|
320
|
+
},
|
|
321
|
+
"timeWindow": {
|
|
322
|
+
"enabled": false,
|
|
323
|
+
"start": "08:00",
|
|
324
|
+
"end": "22:00",
|
|
325
|
+
"timezone": "Europe/Bucharest"
|
|
326
|
+
},
|
|
327
|
+
"blockedCategories": ["gambling", "adult", "drugs", "weapons", "tobacco"],
|
|
328
|
+
"verifiedMerchantsOnly": true,
|
|
329
|
+
"webhookUrl": "https://your-server.com/webhooks"
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Environment Variables
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
PAYMENT_SKILL_CONFIG_PATH=/path/to/config
|
|
337
|
+
PAYMENT_SKILL_WISE_API_KEY=your-wise-key
|
|
338
|
+
PAYMENT_SKILL_BUNQ_API_KEY=your-bunq-key
|
|
339
|
+
PAYMENT_SKILL_LOG_LEVEL=info
|
|
340
|
+
PAYMENT_SKILL_WEBHOOK_SECRET=your-webhook-secret
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## API Documentation
|
|
344
|
+
|
|
345
|
+
### Wise API Flow
|
|
346
|
+
|
|
347
|
+
1. **Create Quote**: Lock exchange rate
|
|
348
|
+
2. **Add Recipient**: Define where money goes
|
|
349
|
+
3. **Create Transfer**: Initiate the transfer
|
|
350
|
+
4. **Fund Transfer**: Pay from your balance
|
|
351
|
+
5. **Confirm (PSD2)**: Approve in Wise app
|
|
352
|
+
|
|
353
|
+
### Bunq API Flow
|
|
354
|
+
|
|
355
|
+
1. **Get Accounts**: List your monetary accounts
|
|
356
|
+
2. **Create Payment**: Send money directly
|
|
357
|
+
3. **Create Request**: Ask someone to pay you
|
|
358
|
+
4. **Check Status**: Verify payment status
|
|
359
|
+
|
|
360
|
+
## Web Dashboard
|
|
361
|
+
|
|
362
|
+
The web dashboard provides a visual interface for all operations:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Start the server
|
|
366
|
+
payment-skill serve
|
|
367
|
+
|
|
368
|
+
# Open in browser
|
|
369
|
+
open http://localhost:8080
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
Features:
|
|
373
|
+
- Provider configuration
|
|
374
|
+
- Balance overview
|
|
375
|
+
- Transaction history
|
|
376
|
+
- Payment initiation
|
|
377
|
+
- Emergency stop button
|
|
378
|
+
- Limit configuration
|
|
379
|
+
|
|
380
|
+
## Webhooks
|
|
381
|
+
|
|
382
|
+
Configure webhooks to receive real-time notifications:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
# Set webhook URL
|
|
386
|
+
payment-skill config set webhookUrl "https://your-server.com/webhooks"
|
|
387
|
+
|
|
388
|
+
# Start server to receive webhooks
|
|
389
|
+
payment-skill serve
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Webhook endpoints:
|
|
393
|
+
- `POST /webhooks/wise` - Wise events
|
|
394
|
+
- `POST /webhooks/bunq` - Bunq events
|
|
395
|
+
- `POST /webhooks/stripe` - Stripe events
|
|
396
|
+
- `POST /webhooks/airwallex` - Airwallex events
|
|
397
|
+
|
|
398
|
+
## Security
|
|
399
|
+
|
|
400
|
+
- API keys stored in `~/.payment-skill/` with restricted permissions
|
|
401
|
+
- Emergency stop prevents all transactions
|
|
402
|
+
- Transaction limits prevent overspending
|
|
403
|
+
- Time windows restrict when payments can be made
|
|
404
|
+
- All transactions logged with full audit trail
|
|
405
|
+
|
|
406
|
+
## PSD2 Compliance
|
|
407
|
+
|
|
408
|
+
For EU users, Strong Customer Authentication (SCA) is required:
|
|
409
|
+
|
|
410
|
+
- Wise: Open Wise mobile app to confirm transfers
|
|
411
|
+
- Bunq: Approve payments in Bunq app
|
|
412
|
+
|
|
413
|
+
The app will notify you when SCA is required.
|
|
414
|
+
|
|
415
|
+
## Troubleshooting
|
|
416
|
+
|
|
417
|
+
### Common Issues
|
|
418
|
+
|
|
419
|
+
**"Provider not configured"**
|
|
420
|
+
```bash
|
|
421
|
+
payment-skill provider add wise --api-key YOUR_KEY
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
**"Emergency stop is active"**
|
|
425
|
+
```bash
|
|
426
|
+
payment-skill emergency status
|
|
427
|
+
payment-skill emergency resume
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**"Daily limit exceeded"**
|
|
431
|
+
```bash
|
|
432
|
+
payment-skill limits get
|
|
433
|
+
payment-skill limits set --daily 100000
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
**"PSD2 confirmation required"**
|
|
437
|
+
- Open your provider's mobile app
|
|
438
|
+
- Approve the pending transaction
|
|
439
|
+
|
|
440
|
+
### Debug Mode
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
payment-skill --verbose <command>
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### Logs
|
|
447
|
+
|
|
448
|
+
Logs are stored in `~/.payment-skill/logs/`:
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
tail -f ~/.payment-skill/logs/payment-skill.log
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
## Development
|
|
455
|
+
|
|
456
|
+
### Build
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
npm run build
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### Watch Mode
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
npm run dev
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Run Tests
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
npm test
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Lint
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
npm run lint
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Architecture
|
|
481
|
+
|
|
482
|
+
```
|
|
483
|
+
payment-skill/
|
|
484
|
+
├── src/
|
|
485
|
+
│ ├── api/ # API clients (Wise, Bunq)
|
|
486
|
+
│ ├── commands/ # CLI commands
|
|
487
|
+
│ ├── core/ # Core logic (config, transactions)
|
|
488
|
+
│ ├── merchants/ # Merchant detection
|
|
489
|
+
│ ├── server/ # Web server
|
|
490
|
+
│ ├── templates/ # Payment templates
|
|
491
|
+
│ ├── types/ # TypeScript types
|
|
492
|
+
│ └── utils/ # Utilities
|
|
493
|
+
├── bin/ # CLI entry point
|
|
494
|
+
├── templates/ # Payment flow templates
|
|
495
|
+
└── dashboard/ # Web dashboard files
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
## Contributing
|
|
499
|
+
|
|
500
|
+
1. Fork the repository
|
|
501
|
+
2. Create a feature branch
|
|
502
|
+
3. Make your changes
|
|
503
|
+
4. Add tests
|
|
504
|
+
5. Submit a pull request
|
|
505
|
+
|
|
506
|
+
## License
|
|
507
|
+
|
|
508
|
+
MIT License with Additional Liability Disclaimer - see [LICENSE](LICENSE) file
|
|
509
|
+
|
|
510
|
+
**IMPORTANT:** By using this software, you agree that:
|
|
511
|
+
- The creators cannot be held liable for any financial losses or damages
|
|
512
|
+
- You use this software entirely at your own risk
|
|
513
|
+
- You are solely responsible for securing your API keys and verifying transactions
|
|
514
|
+
|
|
515
|
+
## Support
|
|
516
|
+
|
|
517
|
+
- **GitHub Issues:** https://github.com/kraskoruk/payment-skill/issues (Bug reports, feature requests, questions)
|
|
518
|
+
- **GitHub Discussions:** https://github.com/kraskoruk/payment-skill/discussions (Community Q&A)
|
|
519
|
+
- **Wiki:** https://github.com/kraskoruk/payment-skill/wiki (Community-maintained documentation)
|
|
520
|
+
- **SUPPORT.md:** See [SUPPORT.md](SUPPORT.md) for detailed support information
|
|
521
|
+
|
|
522
|
+
**Note:** Support is community-driven. The wiki is intentionally empty to encourage community contribution. Be the first to add documentation!
|
|
523
|
+
|
|
524
|
+
## Disclaimer
|
|
525
|
+
|
|
526
|
+
⚠️ **USE AT YOUR OWN RISK**
|
|
527
|
+
|
|
528
|
+
Payment-skill involves real money transactions. The authors are not responsible for:
|
|
529
|
+
- Lost funds or failed transactions
|
|
530
|
+
- Unauthorized access to your accounts
|
|
531
|
+
- API errors from payment providers
|
|
532
|
+
- Any financial losses whatsoever
|
|
533
|
+
|
|
534
|
+
See LICENSE file for complete disclaimer.
|
|
535
|
+
|
|
536
|
+
## Changelog
|
|
537
|
+
|
|
538
|
+
### v1.0.0
|
|
539
|
+
- Initial release
|
|
540
|
+
- Wise and Bunq support
|
|
541
|
+
- CLI interface
|
|
542
|
+
- Web dashboard
|
|
543
|
+
- Emergency stop
|
|
544
|
+
- Transaction limits
|
|
545
|
+
- Webhook support
|
package/SKILL.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: payment-skill
|
|
3
|
+
description: Self-hosted payment orchestration for OpenClaw - pay from your bank account to merchants via Wise/Bunq APIs with template-based configurable flows, emergency stop, and comprehensive CLI
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"openclaw":
|
|
7
|
+
{
|
|
8
|
+
"requires": { "node": ">=16.0.0" },
|
|
9
|
+
"install":
|
|
10
|
+
[
|
|
11
|
+
{
|
|
12
|
+
"id": "npm-install",
|
|
13
|
+
"kind": "npm",
|
|
14
|
+
"package": "payment-skill",
|
|
15
|
+
"global": true,
|
|
16
|
+
"label": "Install Payment Skill globally"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"bins": ["payment-skill"]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Payment Skill
|
|
25
|
+
|
|
26
|
+
Self-hosted payment orchestration app for OpenClaw agents. Pay from your bank account to merchants who accept payments through APIs.
|
|
27
|
+
|
|
28
|
+
## Features
|
|
29
|
+
|
|
30
|
+
- **Multi-Provider Support**: Wise, Bunq (extensible to Stripe, Airwallex)
|
|
31
|
+
- **HYBRID ARCHITECTURE**: Template-based configurable payment flows
|
|
32
|
+
- **CLI Interface**: Complete command-line interface for automation
|
|
33
|
+
- **Emergency Stop**: Big red button to halt all transactions immediately
|
|
34
|
+
- **Transaction Limits**: Configurable daily, weekly, monthly limits
|
|
35
|
+
- **Time Windows**: Restrict transactions to specific hours
|
|
36
|
+
- **Web Dashboard**: Browser-based interface included
|
|
37
|
+
- **Webhook Support**: Real-time notifications for async payments
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g payment-skill
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Quick Start
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Initialize
|
|
49
|
+
payment-skill config init
|
|
50
|
+
|
|
51
|
+
# Add provider
|
|
52
|
+
payment-skill provider add wise --api-key YOUR_WISE_API_KEY
|
|
53
|
+
|
|
54
|
+
# Check balance
|
|
55
|
+
payment-skill wise balance
|
|
56
|
+
|
|
57
|
+
# Make payment using template
|
|
58
|
+
payment-skill pay --template wise_standard_transfer --amount 100 --currency EUR --profile-id XXX --recipient-id YYY
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## CLI Commands
|
|
62
|
+
|
|
63
|
+
- `payment-skill config` - Configuration management
|
|
64
|
+
- `payment-skill provider` - Provider management (Wise, Bunq)
|
|
65
|
+
- `payment-skill wise` - Wise API operations
|
|
66
|
+
- `payment-skill bunq` - Bunq API operations
|
|
67
|
+
- `payment-skill pay` - Execute payments using templates
|
|
68
|
+
- `payment-skill template` - Template management
|
|
69
|
+
- `payment-skill limits` - Payment limits and controls
|
|
70
|
+
- `payment-skill emergency` - Emergency stop controls
|
|
71
|
+
- `payment-skill transaction` - Transaction management
|
|
72
|
+
|
|
73
|
+
## Templates (Hybrid Architecture)
|
|
74
|
+
|
|
75
|
+
Predefined payment flows:
|
|
76
|
+
- `wise_standard_transfer` - 3-step Wise flow with PSD2
|
|
77
|
+
- `bunq_instant_payment` - Direct Bunq payment
|
|
78
|
+
- `bunq_payment_request` - Request money via Bunq
|
|
79
|
+
- `stripe_connect_charge` - Stripe payment intent flow
|
|
80
|
+
|
|
81
|
+
## Emergency Stop
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
payment-skill emergency stop # Halt all transactions
|
|
85
|
+
payment-skill emergency status # Check status
|
|
86
|
+
payment-skill emergency resume # Resume operations
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Documentation
|
|
90
|
+
|
|
91
|
+
- GitHub: https://github.com/kraskoruk/payment-skill
|
|
92
|
+
- Issues: https://github.com/kraskoruk/payment-skill/issues
|
|
93
|
+
- Wiki: https://github.com/kraskoruk/payment-skill/wiki
|
|
94
|
+
|
|
95
|
+
## License
|
|
96
|
+
|
|
97
|
+
MIT License with Liability Disclaimer - see LICENSE file
|
|
98
|
+
|
|
99
|
+
**USE AT YOUR OWN RISK** - Creators not liable for financial losses
|