{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-cards/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Travel cards","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":"travel-cards"},"children":["Travel cards"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["One VCN per booking: metadata, booking references, and travel reconciliation."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What \"travel\" means here:"]}," every virtual card created through this API is a travel card — the product was built for travel platforms, and the name stuck. Their transactions live under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: \"travel\""]},"; your company's regular Jeeves corporate cards report under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: \"cards\""]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Travel platforms issue one virtual card per reservation so every supplier charge reconciles to exactly one booking. Three pieces make that work: card ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]},", the booking-details endpoint, and travel-source transactions."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-pattern"},"children":["The pattern"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Booking confirmed ──► POST /v1/cards (metadata + tight restrictions)\n                          │\n                          ▼\n                  Supplier charges the VCN\n                          │\n                          ▼\n        PATCH /v1/travel/cards/{id}/booking (itinerary, reference)\n                          │\n                          ▼\n     POST /v1/cards/transactions {\"source\": \"travel\"} — reconcile\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"issue-the-card-with-booking-metadata"},"children":["Issue the card with booking metadata"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Give the card the reservation identifiers as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata"]},", a spend limit at (or slightly above) the booking amount, a single-use count, and an active window around the charge date:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  'https://public-sandbox.tryjeeves.com/v1/cards' \\\n  -H \"Authorization: Bearer $JEEVES_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Travel Card\",\n    \"metadata\": {\n      \"reservation_code\": \"abc123\",\n      \"passenger_name\": \"John Doe\"\n    },\n    \"expectedChargeDateUTC\": \"2026-10-02\",\n    \"restrictions\": {\n      \"spendLimit\": 1000,\n      \"maxTransactionCount\": 1,\n      \"activeDateRangeUTC\": {\n        \"startDate\": \"2026-10-01 00:00:00\",\n        \"endDate\": \"2026-10-15 23:59:59\"\n      }\n    }\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expectedChargeDateUTC"]}," tells Jeeves when the supplier is expected to charge; it requires the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cards:multiple:write"]}," scope, enabled on request — contact Jeeves support."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"attach-booking-details"},"children":["Attach booking details"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH /v1/travel/cards/{id}/booking"]}," (scope ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cards:write"]},") records the itinerary, booking reference, and transaction ID on the card — including custom fields:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X PATCH \\\n  'https://public-sandbox.tryjeeves.com/v1/travel/cards/123e4567-e89b-12d3-a456-426614174000/booking' \\\n  -H \"Authorization: Bearer $JEEVES_ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"itineraryId\": \"ITIN-993235\",\n    \"bookingReference\": \"BREF-334234\",\n    \"transactionId\": \"TRX-673829\"\n  }'\n","lang":"bash"},"children":[]},{"$$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":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Notes"},"children":["Notes"]}]}]},{"$$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":["itineraryId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Your itinerary identifier, ≤ 60 chars."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bookingReference"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Your booking reference, ≤ 60 chars."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Your transaction identifier, ≤ 60 chars."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["custom fields"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Additional string key-values are stored on the card's metadata."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response is the travel card with its merged metadata and restrictions."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"reconcile-travel-transactions"},"children":["Reconcile travel transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Completed travel-card transactions come back through the unified transactions endpoint with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: \"travel\""]}," — each row carries the card's metadata, MCC, authorization code, and restrictions:"]},{"$$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 '{ \"source\": \"travel\", \"startDate\": \"2026-10-01\", \"endDate\": \"2026-10-15\" }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/cards/transactions/reconciliation"},"children":["Reconciliation"]}," for pagination and date-window defaults."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/travel/transactions"]}," is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["deprecated"]}," — it returns the same data as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/cards/transactions"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["source: \"travel\""]},". Migrate to the unified endpoint."]}]}]},"headings":[{"value":"Travel cards","id":"travel-cards","depth":1},{"value":"The pattern","id":"the-pattern","depth":2},{"value":"Issue the card with booking metadata","id":"issue-the-card-with-booking-metadata","depth":2},{"value":"Attach booking details","id":"attach-booking-details","depth":2},{"value":"Reconcile travel transactions","id":"reconcile-travel-transactions","depth":2}],"frontmatter":{"seo":{"title":"Travel cards"}},"lastModified":"2026-10-28T18:10:31.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/cards/card-management/travel-cards","userData":{"isAuthenticated":false,"teams":["anonymous"]}}