Quote FX, create payments idempotently, and track them through signed webhooks.
Quote FX, create payments idempotently, and track them through signed webhooks.
Lock an FX rate, create a payment against it, and follow it to a terminal status. Conventions, authentication and error handling are covered in the Jeeves Payment API Integration Guide.
Getting credentials: sandbox and production each need their own client credentials. Email support@tryjeeves.com to request them for either environment.
mTLS on every call: all requests — including POST /oauth/token — require your client certificate. The curl examples show the --cert/--key flags once, on the token call, and omit them elsewhere for brevity; add them to every request.
Looking for cards, boletos, transactions, or webhook subscriptions? Those live in the main API reference.
Exchange your Client ID and Secret for a short-lived access token. Don't have them yet? Email support@tryjeeves.com — sandbox and production each need their own.
Credentials go in the Authorization: Basic base64(clientId:clientSecret) header, not in the body. The client certificate is required on this call as on every other.
Request only the scopes the integration needs. A token cannot reach a capability outside its scopes.
Read expires_in from the response rather than hardcoding a lifetime — it is configured platform-side and may change. Request a new token when the current one nears expiry; there is no refresh token.
The response is a standard RFC 6749 §5.1 token response — access_token, token_type, expires_in and scope, in snake_case — so any off-the-shelf OAuth 2.0 client library can consume it unchanged. Note that scope reports the scopes actually granted, which may be narrower than the scopes you asked for; check it rather than assuming your request was honoured in full.
curl -i -X POST \
-u <username>:<password> \
https://public-sandbox.tryjeeves.com/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d grant_type=client_credentials \
-d 'scope=accounts:read beneficiaries:read beneficiaries:write quotes:write payments:write payments:read'{ "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 300, "scope": "accounts:read beneficiaries:read beneficiaries:write quotes:write payments:write payments:read" }