{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Reefpay Docs","description":"Reefpay is the groundbreaking payment gateway that lets you integrate with the future of payments."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"sdks","__idx":0},"children":["SDKs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The API is plain HTTP and JSON, so you can integrate with nothing but an HTTP"," ","client. Generated SDKs exist for eight targets if you would rather start from"," ","typed models."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-is-generated","__idx":1},"children":["What is generated"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every one is produced from the same API description this site documents, on every"," ","release. None is hand-written, and none adds behavior beyond the 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":{"data-label":"Target"},"children":["Target"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["C#"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[".NET client"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Java"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gradle, Maven and sbt builds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["JavaScript"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Browser and Node"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kotlin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Gradle"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PHP"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["—"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Perl"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["—"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Swift"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Swift Package Manager, CocoaPods and Carthage"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["TypeScript"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["axios-based"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is also a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["C# ASP.NET Core server stub"]}," — interfaces and models for a"," ","service that implements this API, not a client for calling it. Useful if you are"," ","building a mock or a conformance harness."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ask your implementation contact for access; the generated packages are not"," ","published to public registries."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-to-use-one-and-when-not-to","__idx":2},"children":["When to use one, and when not to"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use an SDK"]}," when you want typed request and response models, and your language"," ","is on the list."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Call the API directly"]}," when any of these is true:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your language is not on the list."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You want to control retries, timeouts and connection reuse yourself. The"," ","generated clients take whatever the generator's defaults are."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You are sending a handful of requests. Seven endpoints cover almost every"," ","integration, and wiring an HTTP client to them is a small job."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is no feature in an SDK that the HTTP API does not have. The choice is"," ","about ergonomics, not capability."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"two-things-a-generated-client-will-not-catch","__idx":3},"children":["Two things a generated client will not catch"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Because the clients are generated from the description, they inherit its gaps."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The error enum is incomplete."]}," The description declares seven ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]}," ","values; twelve can reach you. Handle an unrecognized code by falling back on the"," ","HTTP status rather than throwing. See"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/reference/response-codes"},"children":["API response codes"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Some rules are enforced only by the gateway."]}," The recurring-payment rules are"," ","the clearest case: the schema carries no conditional validation, so a generated"," ","client will happily build a request the API then rejects with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},". See"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/payments/recurring-payments"},"children":["Recurring payments"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"regenerating-against-a-new-version","__idx":4},"children":["Regenerating against a new version"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/reference/changelog"},"children":["the changelog"]}," before you upgrade. It is organized by what"," ","you have to do about each change — Breaking first, then Corrected, which is where"," ","the API never behaved the way the old document claimed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Corrected"]}," entry is the one to read closely. Nothing in the API changed, so"," ","nothing will fail at build time; your code may simply have been written against a"," ","description that was wrong."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"calling-the-api-without-an-sdk","__idx":5},"children":["Calling the API without an SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every request needs two headers, and content type on anything with a body."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /v1/transactions HTTP/1.1\nHost: https://api.dev.paradisegateway.net\nContent-Type: application/json\nApi-Key: $d48045e5-f017-4633-a5e7-4efb56f70afa\nClient-Id: CLIENT-01KFDKXMQ637EKEAY410MSQSXB\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/authentication"},"children":["Authentication"]}," covers both headers and the"," ","third one resellers use. Every page in this documentation carries a runnable"," ","sample for its endpoint, generated from the same description the SDKs are, so the"," ","shapes there are always current."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":6},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/get-started/quickstart"},"children":["Quickstart"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/reference/changelog"},"children":["API changelog"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/reference/known-limitations"},"children":["Known limitations"]}]}]}]},"headings":[{"value":"SDKs","id":"sdks","depth":1},{"value":"What is generated","id":"what-is-generated","depth":2},{"value":"When to use one, and when not to","id":"when-to-use-one-and-when-not-to","depth":2},{"value":"Two things a generated client will not catch","id":"two-things-a-generated-client-will-not-catch","depth":2},{"value":"Regenerating against a new version","id":"regenerating-against-a-new-version","depth":2},{"value":"Calling the API without an SDK","id":"calling-the-api-without-an-sdk","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"title":"SDKs","shortTitle":"SDKs","intro":"Eight clients are generated from the API description on every release. This is what exists, and when calling the API directly is the better choice.","type":"reference","seo":{"title":""}},"lastModified":"2026-09-17T12:59:03.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/reference/sdks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}