Jeeves Public API (1.0.0)

Introduction

The Jeeves API is built around REST principles. Our API accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes.

Looking for money movement? Quotes, payments, beneficiaries, and funding accounts live in the separate Payments API reference (guides: Payments). This reference covers cards, boletos, transactions, travel, and webhook subscriptions.

Authentication

The Jeeves API uses mTLS and OAuth 2.0 to authenticate requests. You can request your mTLS certificate and OAuth 2.0 credentials in both sandbox and production environments by reaching out to our support team.

All API requests will only work over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Errors

The Jeeves API uses standard HTTP response codes to indicate the success or failure of an API request. In general: codes in the 2XX range indicate success; codes in the 4XX range indicate an error in the information provided; codes in the 5XX range indicate an internal error with Jeeves application/server.

Currently, the Jeeves API has the following HTTP responses:

CodeResponseDescription
200OkObject was returned as expected.
201OkObject was created as expected.
202AcceptedRequest was accepted and will be processed asynchronously.
204OkNo return, but request was processed as expected.
400Bad requestAt least one argument is wrong or missing.
401UnauthorizedNo valid API token provided.
403ForbiddenThe API token doesn't have permission to perform the request.
404Not foundThe requested resource doesn't exist.
409ConflictThe request conflicts with an operation already in progress — retry once it completes. In the Payments API, also returned when an Idempotency-Key is reused with a different body.
422Unprocessable entityThe request is well-formed but the resource's current state rejects it — in the Payments API, an expired quote, a corridor validation failure, or insufficient funds.
429Rate limitedToo many requests — honor Retry-After (Payments API).
500Server errorAn internal error at Jeeves.

In this reference, 409 and 422 are returned by the boleto discount and rebate endpoints; 429 is returned today only by the Payments API — full semantics in Errors & rate limits.

Download OpenAPI description
Languages
Servers
https://public-sandbox.tryjeeves.com/
https://public-api.jeev.es/

Boletos

The Boleto API supports the full boleto lifecycle, enabling clients to create, retrieve, extend, and cancel boletos, and to configure early-payment discounts and reduce the amount owed (abatimento), via secure integration. It also supports Bolepix, which adds a Pix QR code to the boleto for instant settlement through Pix rails. For boletos paid via barcode or digitable line, the API provides an early payment notice before final settlement - offering visibility of the payment up to one day in advance, with guaranteed settlement. For boletos paid via Pix (via Bolepix), the boleto is marked as paid directly, as settlement is immediate.

Operations

Pix Charges

The Pix Charges API lets clients create dynamic Pix charges: a single-use Pix QR code that the payer can scan or paste into their banking app. Each charge carries pixCopyPaste (the copy-and-paste payload) and qrCodeImage (a base64-encoded JPEG of the QR code).

Charges are not pushed to you: poll GET /v1/pix-charges/{id} to follow a charge until it reaches a final status.

A charge has one of these statuses:

StatusMeaning
activeThe charge can be paid. Only active charges can be canceled.
under_reviewThe charge is under review.
paidThe charge was paid. paymentDetails is present. Final status.
canceledThe charge was canceled with POST /v1/pix-charges/{id}/cancel. Final status.
expiredThe charge was not paid before payableUntil. Final status. It can be set 1 to 3 days after payableUntil, not right at the end of that day.

Due date and payable period. Without dueDate, the charge is due 365 days from today (Brasilia time) and daysPayableAfterDue is 0. daysPayableAfterDue can only be sent together with dueDate; when dueDate is sent without it, it defaults to 180. The response always carries the effective dueDate and daysPayableAfterDue, and payableUntil, the last day the QR code can be paid.

Your own reference. externalId is unique per organization. Reusing one returns a 409 whose errorData.chargeId is the id of the existing charge.

Operations

Cards

The Card API supports the full card lifecycle, enabling clients to create, retrieve, and update cards via secure integration. Use POST /v1/cards/transactions with the source field to query card or travel transactions in a single endpoint.

Operations

Transactions

The Transactions API enables clients to retrieve card and payment transactions via secure integration. Supports filtering by date range and pagination for efficient data retrieval.

Operations

Get a list of payment transactions

Request

You can get all completed payment transactions filtered by date range.

Query
pageCursorstring or null

Page number to retrieve.

Default null
Example: pageCursor=2
pageSizenumber[ 1 .. 500 ]

Number of items returned per page.

Default 20
Example: pageSize=15
startDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

Transactions occurring on or after this date will be included.

Default "previous day at 00:00:00"
Example: startDate=2025-01-29 15:12:49
endDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

Transactions occurring on or before this date will be included. Limitations - must be greater than the startDate.

Default "previous day at 23:59:59"
Example: endDate=2025-01-30 17:35:55
Headers
Accept-Languagestring

Language code used for localization.

Default en-US
Enum"en-US""es-MX""pt-BR"
Example: en-US
curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/payments/transactions?endDate=2025-01-30%2017%3A35%3A55&pageCursor=2&pageSize=15&startDate=2025-01-29%2015%3A12%3A49' \
  -H 'Accept-Language: en-US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

List of all completed payment transactions sorted by creation date.

Bodyapplication/json
linksobject(TransactionResponseLinks)required
links.​nextstring or nullrequired

Link to the next page; null if there is no next page. For deprecated GET transaction endpoints, this may contain a URL with query parameters. For POST /v1/cards/transactions, this field is always null — use pagination.nextCursor in the next request body instead.

Example: "/v1/transactions?pageCursor=MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq"
paginationobject(TransactionResponsePagination)required
pagination.​pageSizenumberrequired

Number of transactions returned by page.

Default 20
Example: 5
pagination.​totalCountnumberrequired

Total number of transactions for your call.

Example: 41
pagination.​nextCursorstring or null

The cursor pointing to the next page; null if there's no next page.

Example: "MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq"
pagination.​hasNextbooleanrequired

True if there's a next page; false otherwise.

Example: true
dataArray of objects(PaymentTransactionDto)required

List of all completed payment transactions sorted by creation date.

data[].​idstringrequired

Unique identifier of a transaction.

Example: "123e4567-e89b-12d3-a456-426614174000"
data[].​productTypestringrequired

The card's funding model: credit_line (spend on your Jeeves credit line) or self_funded (spend from your own pre-funded balance). Same concept as productAccountType in the Payment API.

Enum"credit_line""self_funded"
Example: "credit_line"
data[].​companyobjectrequired
data[].​company.​idstringrequired

Company identification within Jeeves.

Example: "361c697b-8d82-11ec-a51a-0ea06e4de10b"
data[].​company.​namestringrequired

Company name within Jeeves.

Example: "Acme Corporation"
data[].​userobjectrequired
data[].​user.​idstringrequired

User identifier within Jeeves.

Example: "d5d5c940-3c58-4ecc-b772-fe20e764ed70"
data[].​user.​namestringrequired

User full name.

Example: "John Doe"
data[].​user.​emailstringrequired

User email address.

Example: "john.doe@acmecorp.com"
data[].​vendorobjectrequired
data[].​vendor.​idstringrequired

Vendor identifier within Jeeves.

Example: "c8ddf33f-6244-4218-af7e-7a6fe0b13528"
data[].​vendor.​namestringrequired

Vendor name defined by the user.

Example: "Omni Corporation"
data[].​transactionTypestringrequired

Debit for purchases and fees; credit for payments and refunds.

Enum"debit""credit"
Example: "debit"
data[].​transactionDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....required

The date and time the transaction occurred, in UTC.

Example: "2025-01-29 16:22:51"
data[].​settlementDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....required

The date and time the transaction was settled, in UTC.

Example: "2025-01-30 08:00:03"
data[].​transactionAmountnumberrequired

Amount billed to your account, in your account's billing currency.

Example: 127.59
data[].​transactionCurrencystringrequired

Currency the amount was billed in (ISO 4217), e.g. USD.

Example: "USD"
data[].​localTransactionAmountnumberrequired

Amount in the merchant's local currency — the currency of the transaction location.

Example: 741.33
data[].​localTransactionCurrencystringrequired

Currency of the merchant's local amount (ISO 4217).

Example: "BRL"
data[].​paymentPurposestring

Purpose of the payment, if any.

Example: "Utility payment to Electric Company"
Response
application/json
{ "links": { "next": "/v1/transactions?pageCursor=MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq" }, "pagination": { "pageSize": 5, "totalCount": 41, "nextCursor": "MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq", "hasNext": true }, "data": [ { … } ] }

Get a list of card transactionsDeprecated

Request

Deprecated. Use POST /v1/cards/transactions with "source": "cards" instead.

You get a list of card transactions belonging to your company.

Query
pageCursorstring

Page number to retrieve.

Example: pageCursor=6e6578742d637572736f722d6578616d706c652d6e6578742d637572736f722d6578616d706c652d6e
pageSizenumber

Number of transactions returned by page.

Default 20
startDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

Transactions occurring on or after this date will be included.

Default "previous day at 00:00:00"
Example: startDate=2025-01-29 15:12:49
endDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

Transactions occurring on or before this date will be included. Limitations - must be greater than the startDate.

Default "previous day at 23:59:59"
Example: endDate=2025-01-30 17:35:55
Headers
Accept-Languagestring

Language code used for localization.

Default en-US
Enum"en-US""es-MX""pt-BR"
Example: en-US
curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/transactions?endDate=2025-01-30%2017%3A35%3A55&pageCursor=6e6578742d637572736f722d6578616d706c652d6e6578742d637572736f722d6578616d706c652d6e&pageSize=20&startDate=2025-01-29%2015%3A12%3A49' \
  -H 'Accept-Language: en-US' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

List of all transactions with all details.

Bodyapplication/json
linksobject(TransactionResponseLinks)required
links.​nextstring or nullrequired

Link to the next page; null if there is no next page. For deprecated GET transaction endpoints, this may contain a URL with query parameters. For POST /v1/cards/transactions, this field is always null — use pagination.nextCursor in the next request body instead.

Example: "/v1/transactions?pageCursor=MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq"
paginationobject(TransactionResponsePagination)required
pagination.​pageSizenumberrequired

Number of transactions returned by page.

Default 20
Example: 5
pagination.​totalCountnumberrequired

Total number of transactions for your call.

Example: 41
pagination.​nextCursorstring or null

The cursor pointing to the next page; null if there's no next page.

Example: "MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq"
pagination.​hasNextbooleanrequired

True if there's a next page; false otherwise.

Example: true
dataArray of objects(TransactionDto)required

List of all transactions with all details.

data[].​idstringrequired

Unique identifier of a transaction.

Example: "123e4567-e89b-12d3-a456-426614174000"
data[].​productTypestringrequired

The card's funding model: credit_line (spend on your Jeeves credit line) or self_funded (spend from your own pre-funded balance). Same concept as productAccountType in the Payment API.

Enum"credit_line""self_funded"
Example: "credit_line"
data[].​companyobjectrequired
data[].​company.​idstringrequired

Company identification within Jeeves.

Example: "361c697b-8d82-11ec-a51a-0ea06e4de10b"
data[].​company.​namestringrequired

Company name within Jeeves.

Example: "Acme Corporation"
data[].​userobjectrequired
data[].​user.​idstringrequired

User identifier within Jeeves.

Example: "d5d5c940-3c58-4ecc-b772-fe20e764ed70"
data[].​user.​namestringrequired

User full name.

Example: "John Doe"
data[].​user.​emailstringrequired

User email address.

Example: "john.doe@acmecorp.com"
data[].​cardobjectrequired
data[].​card.​idstringrequired

Card identifier within Jeeves.

Example: "c8ddf33f-6244-4218-af7e-7a6fe0b13528"
data[].​card.​namestringrequired

Card label defined by the user.

Example: "Travel Card"
data[].​card.​typestringrequired

Card type.

Enum"Physical""Virtual"
Example: "Physical"
data[].​card.​numberstringrequired

Last 4 digits of the card number.

Example: "9876"
data[].​card.​metadataobject or null

Additional metadata associated with the card. Structure varies by transaction type and processor.

Example: {"processor":"stripe","networkTransactionId":"1234567890"}
data[].​card.​restrictionsobject(CardRestrictions)
data[].​merchantobjectrequired
data[].​merchant.​namestring<= 150 charactersrequired

Name of the merchant where the transaction happened.

Example: "STARBUCKS SAO PAULO BRA"
data[].​merchant.​mccstring

Merchant Category Code (MCC) used by the merchant.

Example: "5814"
data[].​merchant.​mccDescriptionstring

MCC description provided by the network.

Example: "Fast Food Restaurants"
data[].​transactionTypestringrequired

Debit for purchases and fees; credit for payments and refunds.

Enum"debit""credit"
Example: "debit"
data[].​transactionDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....required

The date and time the transaction occurred, in UTC.

Example: "2025-01-29 16:22:51"
data[].​settlementDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....required

The date and time the transaction was settled, in UTC.

Example: "2025-01-30 08:00:03"
data[].​transactionAmountnumberrequired

Amount billed to your account, in your account's billing currency.

Example: 127.59
data[].​transactionCurrencystringrequired

Currency the amount was billed in (ISO 4217), e.g. USD.

Example: "USD"
data[].​localTransactionAmountnumberrequired

Amount in the merchant's local currency — the currency of the transaction location.

Example: 741.33
data[].​localTransactionCurrencystringrequired

Currency of the merchant's local amount (ISO 4217).

Example: "BRL"
data[].​statementClosingDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

The date and time the statement was closed, in UTC. Only present for credit line transactions.

Example: "2025-02-01 23:59:59"
data[].​statementDueDatestring\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d....

The date and time of the statement due date, in UTC. Only present for credit line transactions.

Example: "2025-02-15 23:59:59"
data[].​authorizationCodestring

Authorization code provided by the card network for the transaction.

Example: "123456"
Response
application/json
{ "links": { "next": "/v1/transactions?pageCursor=MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq" }, "pagination": { "pageSize": 5, "totalCount": 41, "nextCursor": "MTI7eyJ0cmFuc2FjdGlvbklkIjoiODA4MTUxOSIsImNyZWF0ZWRBdCI6IjE3NDY1NTUzMDI1MTIifq", "hasNext": true }, "data": [ { … } ] }

Travel

The Travel API covers the virtual cards created through this API (originally built for travel platforms, hence the name): retrieve their completed transactions and attach booking details to a card.

Operations

Webhooks

The Webhooks API provides access to webhook subscription management and event tracking, enabling you to receive real-time HTTP notifications the moment a card transaction is approved, declined, settled, or fails. These subscriptions cover card events only — payment.status.updated for the Payments API is delivered separately and has no subscription endpoint, see the Payments API reference.

Operations