{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-cards/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Reconciliation","description":"Start today using our public API to power your next project."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"reconciliation"},"children":["Reconciliation"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pull settled transactions into your ledger — and know the defaults that bite."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["One endpoint serves both card and travel transactions: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/cards/transactions"]},". The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]}," field selects which transactions you get and the response shape: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cards"]}," is your company's regular Jeeves corporate cards; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["travel"]}," is the virtual cards created through this API. This page covers the request model, the date-window defaults, cursor pagination, and migration from the deprecated GET endpoints."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-request-model"},"children":["The request model"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  'https://public-sandbox.tryjeeves.com/v1/cards/transactions' \\\n  -H \"Authorization: Bearer $JEEVES_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"source\": \"cards\",\n    \"startDate\": \"2026-09-01\",\n    \"endDate\": \"2026-09-28\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Scopes: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactions:read"]}," (plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactions:multiple:read"]}," to read across multiple companies under the same parent with one credential)."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"source"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Returns"},"children":["Returns"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Row highlights"},"children":["Row highlights"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cards"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Settled transactions from your company's regular Jeeves corporate cards"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["company, user, card, merchant, amounts in billing and local currency, settlement date"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["travel"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Completed transactions from virtual cards created via this API"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["card metadata (reservation code…), MCC, authorization code, restrictions"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"date-window-defaults--read-this-twice"},"children":["Date-window defaults — read this twice"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Request"},"children":["Request"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Window applied"},"children":["Window applied"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardIds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startDate"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["endDate"]}," both default to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["yesterday"]}," (D-1). A nightly job with no explicit dates naturally pulls yesterday's settlements."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["With ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cardIds"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No default window"]}," — you get the full history of those cards unless you set dates explicitly."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startDate"]}," must not be after ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["endDate"]},", and neither may be in the future — violations return structured ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," errors naming the failing property."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cursor-pagination"},"children":["Cursor pagination"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Because this is a POST endpoint, the response's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["links.next"]}," is always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," (a request body can't be encoded into a URL). Page forward by re-sending the same filters with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pageCursor"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  'https://public-sandbox.tryjeeves.com/v1/cards/transactions' \\\n  -H \"Authorization: Bearer $JEEVES_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"source\": \"cards\",\n    \"startDate\": \"2026-09-01\",\n    \"endDate\": \"2026-09-28\",\n    \"pageSize\": 25,\n    \"pageCursor\": \"MTI7eyJ0cmFuc2FjdGlvbklkIjoi...\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Loop until ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pagination.hasNext"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"request ──► pagination.nextCursor ──► request with pageCursor ──► … ──► hasNext: false\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pageSize"]}," limits differ by source: up to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["50"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: cards"]},", up to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["100"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: travel"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-transactions"},"children":["Payment transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Non-card payment transactions have their own read endpoint, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/payments/transactions"]},", with the same date-range filters and cursor pagination:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl 'https://public-sandbox.tryjeeves.com/v1/payments/transactions?startDate=2026-09-01%2000:00:00&endDate=2026-09-28%2023:59:59&pageSize=20' \\\n  -H \"Authorization: Bearer $JEEVES_ACCESS_TOKEN\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"push-dont-poll"},"children":["Push, don't poll"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For real-time reconciliation, subscribe to ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/cards/platform-tools/webhooks"},"children":["webhooks"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction.auth.approved"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction.settled"]}," deliver each transaction as it happens, and the nightly ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/cards/transactions"]}," pull becomes your reconciliation safety net rather than your primary feed."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"migrating-from-the-deprecated-get-endpoints"},"children":["Migrating from the deprecated GET endpoints"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Deprecated"},"children":["Deprecated"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Replacement"},"children":["Replacement"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/transactions"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/cards/transactions"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"source\": \"cards\""]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/travel/transactions"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/cards/transactions"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"source\": \"travel\""]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The GET endpoints still respond, but new integrations should not use them, and existing ones should migrate — same data, one endpoint, one pagination model."]}]},"headings":[{"value":"Reconciliation","id":"reconciliation","depth":1},{"value":"The request model","id":"the-request-model","depth":2},{"value":"Date-window defaults — read this twice","id":"date-window-defaults--read-this-twice","depth":2},{"value":"Cursor pagination","id":"cursor-pagination","depth":2},{"value":"Payment transactions","id":"payment-transactions","depth":2},{"value":"Push, don't poll","id":"push-dont-poll","depth":2},{"value":"Migrating from the deprecated GET endpoints","id":"migrating-from-the-deprecated-get-endpoints","depth":2}],"frontmatter":{"seo":{"title":"Reconciliation"}},"lastModified":"2026-10-28T18:10:31.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/cards/transactions/reconciliation","userData":{"isAuthenticated":false,"teams":["anonymous"]}}