Funding Transfers
How to list and inspect internal funding transfers between balance accounts in DJUST PAY.
Introduction
Funding transfers are internal movements of funds between balance accounts in DJUST PAY — for example, from a MARKETPLACE balance account to a SUPPLIER balance account, or vice versa. These transfers support key payment operations such as supplier payouts and refunds.
Two API endpoints allow operators and suppliers to list and inspect funding transfers for operational monitoring, financial reconciliation, and diagnostics.
Key Concepts
Balance Account Types
| Type | Description |
|---|---|
MARKETPLACE | Holds collected funds before distribution to suppliers |
SUPPLIER | Holds funds allocated to a specific supplier |
Transfer Statuses
| Status | Meaning |
|---|---|
PENDING | Transfer initiated, awaiting confirmation |
COMPLETED | Transfer successfully processed |
FAILED | Transfer failed — see failureReason for details |
Related Entity Types
Each funding transfer is linked to a business operation:
| Type | Description |
|---|---|
PAYOUT | Transfer related to a supplier or marketplace payout |
REFUND | Transfer related to a refund operation |
Scope and Visibility
Access follows the standard DJUST scoping rules:
dj-client: OPERATOR— access to all funding transfers across the tenant. Can filter by supplier.dj-client: SUPPLIER— restricted to funding transfers that involve the connected supplier's balance account. This restriction is enforced server-side and cannot be bypassed by filters.
Key Endpoints
| Action | Method | Path | OperationId | Response |
|---|---|---|---|---|
| List funding transfers | GET | /v1/payments/funding-transfers | ADM-PAY-553 | 200 OK |
| Get transfer detail | GET | /v1/payments/funding-transfers/{transferId} | ADM-PAY-503 | 200 OK |
Both endpoints require dj-client and dj-api-key headers.
List Funding Transfers
GET /v1/payments/funding-transfers
dj-client: OPERATOR
dj-api-key: {{apiKey}}Available Filters
| Parameter | Type | Description |
|---|---|---|
createdAtFrom | datetime | Filter from creation date (inclusive) |
createdAtTo | datetime | Filter to creation date (inclusive) |
statuses | string[] | Filter by status: PENDING, COMPLETED, FAILED |
supplierIds | string[] | Filter by supplier (Operator only — ignored for Supplier) |
amountMin | number | Minimum transfer amount |
amountMax | number | Maximum transfer amount |
sourceBalanceAccountType | string | MARKETPLACE or SUPPLIER |
targetBalanceAccountType | string | MARKETPLACE or SUPPLIER |
relatedEntityType | string | PAYOUT or REFUND |
relatedEntityId | string | Identifier of the related entity |
Sorting
Sorting is supported via the sort query parameter in field:direction format:
| Sortable field | Default |
|---|---|
createdAt | createdAt:desc (default) |
amount | — |
status | — |
Tip: Invalid or malformed sort entries are silently ignored — no error is returned.
Example Request
GET /v1/payments/funding-transfers?createdAtFrom=2026-01-01T00:00:00Z&createdAtTo=2026-03-31T23:59:59Z&statuses=COMPLETED&sourceBalanceAccountType=MARKETPLACE&targetBalanceAccountType=SUPPLIER&sort=amount:desc
dj-client: OPERATOR
dj-api-key: {{apiKey}}Example Response
{
"data": [
{
"transferId": "ft-abc-123",
"createdAt": "2026-02-15T10:30:00Z",
"status": "COMPLETED",
"amount": 1500.00,
"currency": "EUR",
"sourceBalanceAccountType": "MARKETPLACE",
"targetBalanceAccountType": "SUPPLIER",
"supplierExternalId": "supplier-456",
"supplierName": "Acme Supplies",
"reference": "PAY-2026-02-001",
"relatedEntityType": "PAYOUT",
"relatedEntityId": "payout-789",
"failureReason": null
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"totalItems": 1,
"totalPages": 1
}
}Get Transfer Detail
GET /v1/payments/funding-transfers/{transferId}
dj-client: OPERATOR
dj-api-key: {{apiKey}}Returns the complete details of a single funding transfer, including amount, status, balance account types, supplier information, reconciliation reference, related entity, and failure reason (if applicable).
Example Response
{
"transferId": "ft-abc-123",
"createdAt": "2026-02-15T10:30:00Z",
"status": "COMPLETED",
"amount": 1500.00,
"currency": "EUR",
"sourceBalanceAccountType": "MARKETPLACE",
"targetBalanceAccountType": "SUPPLIER",
"supplierExternalId": "supplier-456",
"supplierName": "Acme Supplies",
"reference": "PAY-2026-02-001",
"relatedEntityType": "PAYOUT",
"relatedEntityId": "payout-789",
"failureReason": null
}Typical API Workflow
sequenceDiagram
participant Client
participant DJUST PAY
Client->>DJUST PAY: GET /v1/payments/funding-transfers (ADM-PAY-553)
DJUST PAY-->>Client: 200 OK (paginated list)
Client->>DJUST PAY: GET /v1/payments/funding-transfers/{transferId} (ADM-PAY-503)
DJUST PAY-->>Client: 200 OK (transfer detail)
Best Practices
- Use date filters — always specify a date range to limit results and improve response time.
- Combine filters for targeted queries — use
sourceBalanceAccountTypeandtargetBalanceAccountTypeto isolate specific flows (e.g. marketplace-to-supplier only). - Use
relatedEntityTypeto correlate — filter byPAYOUTorREFUNDto quickly identify transfers related to a specific business operation. - Check
failureReasononFAILEDtransfers — this field provides diagnostic information about why a transfer did not succeed. - Leverage sorting — use
sort=createdAt:descfor most recent transfers first, orsort=amount:descto find the largest transfers.
Common Mistakes
| Mistake | Consequence | How to avoid |
|---|---|---|
Supplier using supplierIds filter | Filter is silently ignored | Supplier scope is automatic — no need to specify supplier IDs |
| Not filtering by date on large datasets | Slow response or timeout | Always scope queries to a specific time period |
| Expecting real-time data | Transfer statuses may lag behind PSP events | Allow time for webhook processing before querying |
Error Reference
For the complete list of DJUST error and warning codes, refer to the dedicated page: Error / Warning codes
Related Documentation
- Funding Transfers - Export
- Supplier Payout Lifecycle
- Marketplace Payout Lifecycle
- Introduction to Djust Pay
