{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-payments/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Payments","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":"payments"},"children":["Payments"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Move money from your Jeeves account to anyone you pay — lock an FX rate, create the payment idempotently, and track it to a terminal status through signed webhooks."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Jeeves Payment API moves money from your Jeeves account to beneficiaries in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["190+ countries"]},", over local rails (SPEI, PIX, SEPA, ACH, Faster Payments, …) and international wire. The same flow handles ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["domestic payments"]}," — paying a Mexican business in MXN from your MXN account (e.g. Bill Pay credit) via SPEI works exactly like a cross-border payout. It is built around one disciplined flow: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["quote, then pay, then track"]},". A quote locks the exchange rate for a destination amount; a payment consumes that quote exactly once, protected by a mandatory idempotency key; signed webhooks push every status change, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/payments/{paymentId}"]}," is always the source of truth."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Try it interactively in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/demo"},"children":["Build your payment flow"]},", or read on for the model."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-payment-flow"},"children":["The payment flow"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"1. FUND          Your funding account holds the source currency\n                 (self-funded balance, credit line, or crypto wallet)\n                        │\n2. QUOTE         POST /v1/quotes — lock the FX rate for a\n                 destination amount; read expiresAt\n                        │\n3. PAY           POST /v1/payments — consume the quote, with a\n                 mandatory Idempotency-Key\n                        │\n4. TRACK         Webhook on every status change;\n                 GET /v1/payments/{id} as the source of truth\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-you-can-do"},"children":["What you can do"]},{"$$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":"Capability"},"children":["Capability"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"How"},"children":["How"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Where to read"},"children":["Where to read"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["See what can fund a payment"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/product-accounts"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/funding/product-accounts"},"children":["Funding accounts"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["See who you can pay — in 190+ countries"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/beneficiaries"]}," with attached payment methods"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/funding/beneficiaries"},"children":["Beneficiaries"]}," · ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/coverage"},"children":["Coverage"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Create beneficiaries and attach payment methods"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/beneficiaries"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/beneficiary-schemas"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/payment-methods"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/funding/beneficiaries#creating-beneficiaries"},"children":["Beneficiaries"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Lock an FX rate"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/quotes"]}," — destination-amount based, single-use"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/quotes-and-fx"},"children":["Quotes & FX"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Pay without duplicates"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/payments"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Idempotency-Key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/send-payment"},"children":["Send a payment"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Pay on a future date"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduledDate"]}," — rate locks on execution day"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/scheduled-payments"},"children":["Scheduled payments"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Cancel a held payment"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/payments/{id}/cancel"]}," while ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["in-review"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scheduled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/scheduled-payments#cancelling-a-payment"},"children":["Scheduled payments"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Follow every status change"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payment.status.updated"]}," webhooks + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/payments/{id}"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/tracking-payments"},"children":["Tracking & webhooks"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payment-lifecycle"},"children":["Payment lifecycle"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"accepted ──► in-review ──► in-progress ──► completed ──► refunded\n    │            │              │\n    ▼            ▼              ▼\n rejected     canceled        failed\n\nscheduled ──► in-progress ──► …   (future-dated payments)\n    │\n    ▼\n canceled\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Terminal states are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rejected"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canceled"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["refunded"]},". A payment never re-enters an earlier state, and the status enum is open — tolerate values you don't recognize. Full table: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/tracking-payments"},"children":["Tracking & webhooks"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication"},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every call carries a short-lived ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OAuth 2.0 bearer token"]}," (from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /oauth/token"]}," with Basic client credentials) plus your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client certificate"]}," (mTLS) — the certificate is required on the token call too. Curl examples in these guides show the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--cert"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--key"]}," flags on the token step and omit them elsewhere for brevity; every request needs them. Request only the scopes you need: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quotes:write"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payments:write"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payments:read"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["beneficiaries:read"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["beneficiaries:write"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accounts:read"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payments:write"]}," covers creating ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["and cancelling"]}," payments; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["beneficiaries:write"]}," covers creating beneficiaries and attaching payment methods. The response follows RFC 6749 (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_token"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_type"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_in"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]},"), so a standard OAuth client reads it unchanged. Read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_in"]}," rather than hardcoding a lifetime, and check the returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}," — it reports what was granted, not what you asked for. There is no refresh token."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"environments"},"children":["Environments"]},{"$$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":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Base URL"},"children":["Base URL"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Sandbox"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://public-sandbox.tryjeeves.com"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Production"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://public-api.jeev.es"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All examples in this section use sandbox. Rate limits apply per credential (300 requests/minute) and every response carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-RateLimit-*"]}," headers — see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/payments/payment-flow/errors-and-limits"},"children":["Errors & rate limits"]},"."]}]},"headings":[{"value":"Payments","id":"payments","depth":1},{"value":"The payment flow","id":"the-payment-flow","depth":2},{"value":"What you can do","id":"what-you-can-do","depth":2},{"value":"Payment lifecycle","id":"payment-lifecycle","depth":2},{"value":"Authentication","id":"authentication","depth":2},{"value":"Environments","id":"environments","depth":2}],"frontmatter":{"seo":{"title":"Payments"}},"lastModified":"2026-11-04T03:42:09.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/payments","userData":{"isAuthenticated":false,"teams":["anonymous"]}}