Funding accounts
The accounts you can fund payments from.
Every payment debits one of your funding accounts — called productAccounts in the API. Before your first payment, list them, pick the account you'll pay from, and take two values: productAccountId (sent when creating the payment) and productAccountType (sent when creating the quote, because your FX rate and fees depend on the kind of account you pay from).
Listing funding accounts
GET /v1/product-accounts — scope accounts:read.
curl 'https://public-sandbox.tryjeeves.com/v1/product-accounts' \
-H "Authorization: Bearer $JEEVES_ACCESS_TOKEN"The response is an array of companies, each carrying its own accounts. A single-company integration reads [0].productAccounts:
[
{
"companyId": "c8ddf33f-6244-4218-af7e-7a6fe0b13528",
"companyName": "Bluesky Inc.",
"productAccounts": [
{
"productAccountType": "self-funded",
"productAccountId": "2b6f0c94-7a15-4e83-9d20-6c8e3b5a1f79",
"productAccountCurrency": "USD",
"productAccountStatus": "active"
},
{
"productAccountType": "credit-line",
"productAccountId": "7c14a8d0-2e63-4f19-9b85-3d0f6a2c7e41",
"productAccountCurrency": "USD",
"productAccountStatus": "active"
},
{
"productAccountType": "crypto-wallet",
"productAccountId": "4e9b1d27-5c80-4a36-b1f4-8a2d6c0e7f13",
"productAccountCurrency": "USDC",
"productAccountStatus": "active"
}
]
}
]Account types
| Reported type | What funds it | Send in a quote |
|---|---|---|
self-funded | Your own pre-funded balance at Jeeves. | self-funded |
credit-line | Your Jeeves credit line. | credit-line |
crypto-wallet | Your stablecoin balance — its currency is a stablecoin ticker (USDB, USDC, USDT or EURC), not an ISO 4217 code. Note this changes the purpose-code corridors (see Send a payment). | crypto-wallet |
jeeves-pay-credit | A Bill Pay credit account. | credit-line |
jeeves-pay-external | A Bill Pay account funded from your own funds. | Not accepted as productAccountType in a quote. |
Treat the list of reported types as open — tolerate values you don't recognize.
The type you pass as productAccountType when quoting must be the type of the account you actually pay from — your FX rate and fees depend on it, so a quote priced for a different account type doesn't reflect what you'll pay.
One account = one currency × one type
You can hold several funding accounts at once, across currencies and types — for example a USD self-funded (fiat) balance, a crypto-wallet holding a stablecoin such as USDC, an MXN self-funded balance, and credit in USD, MXN, or BRL. Every payment is funded by exactly one of them, and the pair you pick drives everything downstream: the quote's sourceCurrency must match the account's currency, the productAccountType sets your FX pricing, and together with the destination they select the valid purpose codes.
The rules that matter
- Only
activeaccounts can fund a payment. The other statuses (pending,in-active,deactivate,closed) all mean the same thing to your integration: the account can't fund a payment — treat anything that isn'tactiveas unusable. - Currency must match. The account's
productAccountCurrencymust equal the quote'ssourceCurrency, or the payment is rejected. - Currencies are ISO 4217 codes or stablecoin tickers.
productAccountCurrencyis an ISO 4217 alpha code (USD,MXN, …) or one ofUSDB,USDC,USDT,EURC—crypto-walletaccounts report a ticker. Don't validate it against ISO 4217 alone, or you'll reject real accounts. - Balance covers amount plus fees. A payment whose source account can't cover the quoted
sourceAmountplus fees returns422 insufficient_funds.
Funding the account itself
Depositing into a product account (bank transfer in, credit-line draw, crypto deposit) happens through your Jeeves account and dashboard — it is not part of this API. What this API guarantees is the check at payment time: if the balance doesn't cover the payment, nothing is created and you get insufficient_funds.