@withpotter/settlement — module reference
HTTP routes this module mounts, plus its internal use-cases, entities, and repositories. The exhaustive request/response contract is the engine’s OpenAPI document at /docs; the layered structure below follows the package internal architecture.
HTTP routes
Settlements /settlements
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /settlements | Yes | List settlements |
GET | /settlements/bank-accounts | Yes | List merchant bank accounts |
GET | /settlements/banks | Yes | List available banks |
GET | /settlements/banks/resolve | Yes | Resolve bank account details |
GET | /settlements/summary | Yes | Get settlements summary |
POST | /settlements/bank-accounts | Yes | Add a new bank account |
POST | /settlements/bank-accounts/:id/default | Yes | Set bank account as default |
POST | /settlements/reconcile | Yes | Reconcile historical transactions |
POST | /settlements/sync | Yes | Sync settlements from payment provider |
DELETE | /settlements/bank-accounts/:id | Yes | Delete a bank account |
Internals
Use-cases
Application operations. Each is a single-purpose class with one execute() method.
| Use-case | Signature |
|---|---|
AddBankAccountUseCase | execute(tenantId: string, dto: AddBankAccountDto): Promise<BankAccountResponse> |
DeleteBankAccountUseCase | execute(tenantId: string, accountId: string): Promise<{ success: boolean }> |
GetSettlementSummaryUseCase | execute(tenantId: string, startDate?: string, endDate?: string): Promise<SettlementSummaryResponse> |
GetSettlementsUseCase | execute(tenantId: string, options: { page?: number; limit?: number; startDate?: string; endDate?: string; } = {}): Promise<SettlementListResponse> |
ListBankAccountsUseCase | execute(tenantId: string): Promise<BankAccountResponse[]> |
ListBanksUseCase | execute(): Promise<{ banks: BankListResponse[] }> |
ReconcileTransactionsUseCase | execute(tenantId: string, params?: { startDate?: string; endDate?: string }): Promise<ReconciliationResult> |
RequestWithdrawalUseCase | execute(tenantId: string, params: RequestWithdrawalParams): Promise<WithdrawalResult> |
ResolveAccountUseCase | execute(accountNumber: string, bankCode: string): Promise<ResolveAccountResponse> |
SetDefaultBankAccountUseCase | execute(tenantId: string, accountId: string): Promise<{ success: boolean }> |
SyncSettlementsUseCase | execute(tenantId: string): Promise<SyncResult> |
Entities
Sequelize models owned by this module.
MerchantBankAccount — table merchant_bank_accounts
| Field | Type |
|---|---|
id | string |
tenantId | string |
bankCode | string |
bankName | string |
accountNumber | string |
accountName | string |
paystackSubaccountCode | string |
paystackSubaccountId | string |
splitPercentage | number |
status | BankAccountStatus |
isDefault | boolean |
failureReason | string |
metadata | Record<string, unknown> |
createdAt | Date |
updatedAt | Date |
Settlement — table settlements
| Field | Type |
|---|---|
id | string |
tenantId | string |
bankAccountId | string |
transactionId | string |
paystackSettlementId | string |
paystackTransferCode | string |
grossAmount | number |
paystackFee | number |
platformFee | number |
netAmount | number |
currency | string |
status | SettlementStatus |
settlementType | SettlementType |
periodStart | Date |
periodEnd | Date |
settledAt | Date |
failureReason | string |
metadata | Record<string, unknown> |
createdAt | Date |
updatedAt | Date |
Repositories
Data-access classes wrapping the entities.
MerchantBankAccountRepository
create · findById · findByTenantId · findDefaultByTenantId · getDefaultForTenant · findBySubaccountCode · update · setAsDefault · delete
SettlementRepository
create · findById · findByTransactionId · findByPaystackSettlementId · findByPaystackTransferCode · findByBankAccountId · updateStatus · listByTenant · getSummary · update · getRecentSettlements
Ports
DI contracts other modules bind adapters to.
ResolvedAccount,BankListEntry,CreateSubaccountInput,CreatedSubaccount,CreateTransferRecipientInput,InitiateTransferInput,InitiatedTransfer,SettlementBankingPort— tokenSETTLEMENT_BANKINGPaymentConnectedNotification,SettlementNotifierPort— tokenSETTLEMENT_NOTIFIERProviderSettlement,ListSettlementsParams,ListSettlementsResult,SettlementProviderInterface— tokenSETTLEMENT_PROVIDER
Generated from the module’s source. Routes are relative to the engine root
(default http://localhost:3001). For full request/response schemas use the live
OpenAPI document.