API basics
Changelog
Notable changes to the SoftLemon API and this documentation, newest first.
2026-09-07
card.exp_monthandcard.exp_yearnow take the same formats onPOST /api/v1/3ds/verifyandPOST /api/v1/transactions: an integer or a string, with or without a leading zero on the month. Before this,/3ds/verifyrefused"01"and/transactionsrefused1, so months January to September needed a different format per endpoint. See conventions.
2026-08-19
- New
GET /api/v1/payment-methodslists the alternative payment methods enabled for a merchant and, givencountryandcurrency, whether each one can be offered to that customer and why not (country_not_supported,currency_not_supported,provider_not_offering). Read-only and side-effect free. See Ask before you show a method. POST /api/v1/payment-sessionsaccepts an optionalcustomer.ip_address(the customer's IP as seen by your server). It is forwarded to the provider as the customer's device IP; without it the provider sees the IP of the server calling the API. Card payments already acceptedcustomer.ip_addressand now forward it to the provider as well whenbrowser_data.ip_addressis absent. See availability.- Payment sessions now check the method's country availability on
customer.country_codebefore the provider is called and refuse unserved countries with the newERR_PAYMENT_METHOD_NOT_AVAILABLE_IN_COUNTRYcode. A provider that declines to open a checkout is reported as the newERR_PROVIDER_REJECTED(HTTP 400, provider reason inmessage) instead of a genericERR_GATEWAY_ERROR(502). Both codes are in the error catalogue. POST /api/v1/3ds/verifyidentifies a verification bypublic_id(tds_...). Store that value and send it ascard_verification_data.id; thecard_verification_idon the post-challenge redirect is the sametds_...string. The numericidin the response is deprecated and will be removed on a date announced here; numeric ids stay accepted on input. See Initiate Card Verification.- Published the versioning and deprecation policy: the API is additive within a version, clients must ignore unknown fields and treat ids as opaque strings, and removals follow a mark, announce, notice period, remove sequence.
- Guides now use the
tds_...public id in every 3DS example.
2026-08-09
- Added
Idempotency-Keysupport on capture, refund and void for safe retries. See conventions. - Added the
ERR_IDEMPOTENCY_CONFLICTandERR_IDEMPOTENT_REQUEST_IN_PROGRESSerror codes to the error catalogue. - Rate limit responses now include a
Retry-Afterheader and every response includesX-RateLimit-Remaining. See rate limits.
2026-08-07
- Relaunched the documentation site with searchable references for both the Merchant and Partner APIs.
- Added the API basics section covering conventions, environments, error handling, rate limits, SCA and PSD2 and support.
- Documented previously missing error responses in the API references.
Last modified on