{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-documentation/get_started/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["tabs","tab"]},"type":"markdown"},"seo":{"title":"Conversions Webhooks","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"conversions-webhooks","__idx":0},"children":["Conversions Webhooks"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ryft emits webhook events when a conversion is created or updated. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/documentation/get_started/conversions"},"children":["Conversions guide"]}," for guidance on how to respond to these events."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"conversion-events","__idx":2},"children":["Conversion Events"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Conversion.created","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Emitted when a conversion is created. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rate"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy.amount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sell.fees"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy.fees"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["estimatedSettlementDate"]}," are not present — pricing is applied asynchronously."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Conversion.created - Payload Example","header":{"title":"Conversion.created - Payload Example","controls":{"copy":{}}},"source":"{\n    \"id\": \"ev_XXXXXXXX\",\n    \"eventType\": \"Conversion.created\",\n    \"data\": {\n        \"id\": \"cv_XXXXXXXX\",\n        \"sell\": {\"amount\": 100000, \"currency\": \"EUR\"},\n        \"buy\": {\"currency\": \"GBP\"},\n        \"status\": \"InProgress\",\n        \"reason\": \"Monthly EUR settlement\",\n        \"createdTimestamp\": 1750000000\n    },\n    \"accountId\": \"ac_XXXXXXXX\",\n    \"createdTimestamp\": 1750000000,\n    \"lastUpdatedTimestamp\": 1750000000,\n    \"deliveryStatus\": \"Success\"\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Conversion.updated (priced)","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Emitted when the exchange rate has been applied. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rate"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy.amount"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sell.fees"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy.fees"]}," are now populated. Use this event to present the priced outcome to the account holder."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The fee is charged on exactly one side, so read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fees"]}," from whichever of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sell"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy"]}," carries it. This example is for a Sub-Account conversion charged on the buy side, so the fee breakdown carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["platform"]}," (which includes Ryft's fee):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Conversion.updated (priced) - Payload Example","header":{"title":"Conversion.updated (priced) - Payload Example","controls":{"copy":{}}},"source":"{\n    \"id\": \"ev_XXXXXXXX\",\n    \"eventType\": \"Conversion.updated\",\n    \"data\": {\n        \"id\": \"cv_XXXXXXXX\",\n        \"sell\": {\"amount\": 100000, \"currency\": \"EUR\"},\n        \"buy\": {\n            \"amount\": 86000,\n            \"currency\": \"GBP\",\n            \"fees\": {\n                \"platform\": {\n                    \"amount\": 1000,\n                    \"ryftFee\": {\"amount\": 700}\n                }\n            }\n        },\n        \"rate\": 0.86,\n        \"status\": \"InProgress\",\n        \"reason\": \"Monthly EUR settlement\",\n        \"estimatedSettlementDate\": \"2026-06-20\",\n        \"createdTimestamp\": 1750000000\n    },\n    \"accountId\": \"ac_XXXXXXXX\",\n    \"createdTimestamp\": 1750000300,\n    \"lastUpdatedTimestamp\": 1750000300,\n    \"deliveryStatus\": \"Success\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a conversion on your own account, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fees"]}," carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ryft"]}," instead:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Conversion.updated (priced) - Own account buy","header":{"title":"Conversion.updated (priced) - Own account buy","controls":{"copy":{}}},"source":"{\n    \"amount\": 86000,\n    \"currency\": \"GBP\",\n    \"fees\": {\n        \"ryft\": {\"amount\": 700}\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Where the fee is charged on the sell side, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fees"]}," sits on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sell"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy"]}," carries none — the fee came off before the conversion, so the full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["buy.amount"]}," is credited:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Conversion.updated (priced) - Sell-side fee","header":{"title":"Conversion.updated (priced) - Sell-side fee","controls":{"copy":{}}},"source":"{\n    \"sell\": {\n        \"amount\": 100000,\n        \"currency\": \"EUR\",\n        \"fees\": {\n            \"ryft\": {\"amount\": 700}\n        }\n    },\n    \"buy\": {\"amount\": 85398, \"currency\": \"GBP\"}\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/documentation/get_started/conversions#fees-and-fx-margin"},"children":["Fees and FX margin"]}," for the fee shapes, and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/documentation/get_started/conversions#calculating-the-net-amount-and-effective-rate"},"children":["Calculating the net amount and effective rate"]}," to derive the credited amount."]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Conversion.updated (settled)","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Emitted when the conversion settles. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Settled"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["settledTimestamp"]}," is set, and the bought funds are credited to the account's balance."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As above, this is a Sub-Account conversion charged on the buy side — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/documentation/get_started/conversions#fees-and-fx-margin"},"children":["Fees and FX margin"]}," for the fee breakdown."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","data-title":"Conversion.updated (settled) - Payload Example","header":{"title":"Conversion.updated (settled) - Payload Example","controls":{"copy":{}}},"source":"{\n    \"id\": \"ev_XXXXXXXX\",\n    \"eventType\": \"Conversion.updated\",\n    \"data\": {\n        \"id\": \"cv_XXXXXXXX\",\n        \"sell\": {\"amount\": 100000, \"currency\": \"EUR\"},\n        \"buy\": {\n            \"amount\": 86000,\n            \"currency\": \"GBP\",\n            \"fees\": {\n                \"platform\": {\n                    \"amount\": 1000,\n                    \"ryftFee\": {\"amount\": 700}\n                }\n            }\n        },\n        \"rate\": 0.86,\n        \"status\": \"Settled\",\n        \"reason\": \"Monthly EUR settlement\",\n        \"estimatedSettlementDate\": \"2026-06-20\",\n        \"settledTimestamp\": 1750086400,\n        \"createdTimestamp\": 1750000000\n    },\n    \"accountId\": \"ac_XXXXXXXX\",\n    \"createdTimestamp\": 1750086400,\n    \"lastUpdatedTimestamp\": 1750086400,\n    \"deliveryStatus\": \"Success\"\n}\n","lang":"json"},"children":[]}]}]}]},"headings":[{"value":"Conversions Webhooks","id":"conversions-webhooks","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Conversion Events","id":"conversion-events","depth":2}],"frontmatter":{"seo":{"title":"Conversions Webhooks"}},"lastModified":"2026-08-13T09:06:30.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/documentation/get_started/webhooks/conversions","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}