Skip to content
Back to skills

045 Api C894057d

ASecurity

Base URL: `https://my.sepay.vn/userapi/` Rate Limit: 2 calls/second

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 11, 2026
devopsgoapisecurity

Works with

  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 045-api_c894057d --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 045 Api C894057d?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 045 Api C894057d
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-045-api-c894057d/badge)](https://www.skillsdirectory.com/skills/tools-only-045-api-c894057d)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# SePay API Reference

Base URL: `https://my.sepay.vn/userapi/`
Rate Limit: 2 calls/second

## Transaction API

### List Transactions
```
GET /userapi/transactions/list
```

**Parameters:**
- `account_number` (string) - Bank account ID
- `transaction_date_min/max` (yyyy-mm-dd) - Date range
- `since_id` (integer) - Start from ID
- `limit` (integer) - Max 5000 per request
- `reference_number` (string) - Transaction reference
- `amount_in` (number) - Incoming amount
- `amount_out` (number) - Outgoing amount

**Response:**
```json
{
  "status": 200,
  "transactions": [{
    "id": 92704,
    "gateway": "Vietcombank",
    "transaction_date": "2023-03-25 14:02:37",
    "account_number": "0123499999",
    "content": "payment content",
    "transfer_type": "in",
    "transfer_amount": 2277000,
    "accumulated": 19077000,
    "reference_number": "MBVCB.3278907687",
    "bank_account_id": 123
  }]
}
```

### Transaction Details
```
GET /userapi/transactions/details/{transaction_id}
```

### Count Transactions
```
GET /userapi/transactions/count
```

## Bank Account API

### List Bank Accounts
```
GET /userapi/bankaccounts/list
```

**Parameters:**
- `short_name` - Bank identifier
- `last_transaction_date_min/max` - Date range
- `since_id` - Starting account ID
- `limit` - Results per page (default 100)
- `accumulated_min/max` - Balance range

**Response:**
```json
{
  "id": 123,
  "account_holder_name": "NGUYEN VAN A",
  "account_number": "0123456789",
  "accumulated": 50000000,
  "last_transaction": "2025-01-13 10:30:00",
  "bank_short_name": "VCB",
  "active": 1
}
```

### Account Details
```
GET /userapi/bankaccounts/details/{bank_account_id}
```

### Count Accounts
```
GET /userapi/bankaccounts/count
```

## Order-Based Virtual Account API

**Concept:** Each order gets unique VA with exact amount matching for automated confirmation.

**Flow:**
1. Create order → API generates unique VA
2. Display VA + QR to customer
3. Customer transfers to VA
4. Bank notifies SePay on success
5. SePay triggers webhook
6. Update order status

**Advantages:**
- Precision: VA accepts only exact amounts
- Independence: Each order has own VA (no content parsing)
- Security: VAs auto-cancel after success/expiration
- Integration: RESTful API

**Supported Banks:** BIDV and others (check docs for full list)

## Error Handling

**HTTP Status Codes:**
- 200 OK - Successful
- 201 Created - Resource created
- 400 Bad Request - Invalid parameters
- 401 Unauthorized - Invalid/missing auth
- 403 Forbidden - Insufficient permissions
- 404 Not Found - Resource not found
- 429 Too Many Requests - Rate limit exceeded
- 500 Internal Server Error - Server error
- 503 Service Unavailable - Temporarily unavailable

**Rate Limit Response:**
```json
{
  "status": 429,
  "error": "rate_limit_exceeded",
  "message": "Too many requests"
}
```

Check `x-sepay-userapi-retry-after` header for retry timing.

## Best Practices

1. **Pagination:** Use `limit` and `since_id` for large datasets
2. **Date Ranges:** Query specific periods to reduce response size
3. **Rate Limiting:** Implement exponential backoff
4. **Error Handling:** Log all errors with context
5. **Caching:** Cache bank account lists
6. **Monitoring:** Track API response times and error rates
7. **Reconciliation:** Regular transaction matching

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.