diff --git a/payjoin-ffi/csharp/Payjoin.csproj b/payjoin-ffi/csharp/Payjoin.csproj
index 5257adb08..66af6a92f 100644
--- a/payjoin-ffi/csharp/Payjoin.csproj
+++ b/payjoin-ffi/csharp/Payjoin.csproj
@@ -7,7 +7,7 @@
true
true
Payjoin
- 0.1.0+payjoin-1.0.0
+ 0.2.0+payjoin-1.2.0
Payjoin
Payjoin Dev Kit Contributors
C# bindings for payjoin-ffi, generated from rust-payjoin via UniFFI.
diff --git a/payjoin-ffi/csharp/README.md b/payjoin-ffi/csharp/README.md
index b6dce951a..15a593c1c 100644
--- a/payjoin-ffi/csharp/README.md
+++ b/payjoin-ffi/csharp/README.md
@@ -38,7 +38,7 @@ Sessions persist each step to an event log through a persister you implement ove
## Stability
-The package is pre-1.0 while the C# API stabilizes; expect breaking changes between 0.x releases. The version's build metadata names the wrapped payjoin core release, so `0.1.0+payjoin-1.0.0` packages payjoin 1.0.0, the first stable payjoin release.
+The package is pre-1.0 while the C# API stabilizes; expect breaking changes between 0.x releases. The version's build metadata names the wrapped payjoin core release, so `0.2.0+payjoin-1.2.0` packages payjoin 1.2.0.
## Documentation and help
diff --git a/payjoin-ffi/dart/CHANGELOG.md b/payjoin-ffi/dart/CHANGELOG.md
index 7169ee472..6c209115a 100644
--- a/payjoin-ffi/dart/CHANGELOG.md
+++ b/payjoin-ffi/dart/CHANGELOG.md
@@ -1,3 +1,20 @@
+## [0.3.0+payjoin-1.2.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Pin `yoke-derive` for pub.dev consumers to respect the MSRV
+
## [0.2.2+payjoin-1.0.0]
- Bindings for payjoin-1.0.0, the first stable payjoin release. No Dart
diff --git a/payjoin-ffi/dart/native/Cargo.toml b/payjoin-ffi/dart/native/Cargo.toml
index 4a18acbe9..494ba3dc8 100644
--- a/payjoin-ffi/dart/native/Cargo.toml
+++ b/payjoin-ffi/dart/native/Cargo.toml
@@ -18,7 +18,7 @@ name = "payjoin_ffi_wrapper"
crate-type = ["staticlib", "cdylib"]
[dependencies]
-payjoin-ffi = { git = "https://github.com/payjoin/rust-payjoin.git", rev = "60d0adbf4ee8e60090209d55e9864893a4acc30e", features = [
+payjoin-ffi = { git = "https://github.com/payjoin/rust-payjoin.git", rev = "8e072970f74040832342369e6319a4db53cd2b6f", features = [
"dart",
] }
# Not used directly. yoke-derive 0.8.3 needs Rust 1.87 but declares no rust-version,
diff --git a/payjoin-ffi/dart/pubspec.yaml b/payjoin-ffi/dart/pubspec.yaml
index 1e748798f..e84b56a02 100644
--- a/payjoin-ffi/dart/pubspec.yaml
+++ b/payjoin-ffi/dart/pubspec.yaml
@@ -1,6 +1,6 @@
name: payjoin
description: Dart bindings for payjoin
-version: 0.2.2+payjoin-1.0.0
+version: 0.3.0+payjoin-1.2.0
homepage: https://github.com/payjoin/rust-payjoin
repository: https://github.com/payjoin/rust-payjoin
diff --git a/payjoin-ffi/javascript/CHANGELOG.md b/payjoin-ffi/javascript/CHANGELOG.md
new file mode 100644
index 000000000..9631fee1c
--- /dev/null
+++ b/payjoin-ffi/javascript/CHANGELOG.md
@@ -0,0 +1,16 @@
+## [0.3.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Build bindings with a release build resolved against the lockfile
diff --git a/payjoin-ffi/javascript/package-lock.json b/payjoin-ffi/javascript/package-lock.json
index 7733b7940..77bf6f1c1 100644
--- a/payjoin-ffi/javascript/package-lock.json
+++ b/payjoin-ffi/javascript/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "payjoin",
- "version": "0.2.0",
+ "version": "0.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "payjoin",
- "version": "0.2.0",
+ "version": "0.3.0",
"dependencies": {
"@ubjs/core": "^0.31.0-3",
"uniffi-bindgen-react-native": "github:spacebear21/uniffi-bindgen-react-native#d10f04d83299"
diff --git a/payjoin-ffi/javascript/package.json b/payjoin-ffi/javascript/package.json
index c14930214..6f76422b6 100644
--- a/payjoin-ffi/javascript/package.json
+++ b/payjoin-ffi/javascript/package.json
@@ -1,7 +1,7 @@
{
"name": "payjoin",
- "version": "0.2.0",
- "releaseTag": "0.2.0+payjoin-1.0.0",
+ "version": "0.3.0",
+ "releaseTag": "0.3.0+payjoin-1.2.0",
"description": "JavaScript/WASM bindings for rust-payjoin (EXPERIMENTAL)",
"scripts": {
"ubrn:nodejs": "ubrn build web --release --and-generate --config ubrn.nodejs.config.yaml",
diff --git a/payjoin-ffi/python/CHANGELOG.md b/payjoin-ffi/python/CHANGELOG.md
index a78b0d5c8..d14b0b563 100644
--- a/payjoin-ffi/python/CHANGELOG.md
+++ b/payjoin-ffi/python/CHANGELOG.md
@@ -1,3 +1,20 @@
+## [0.3.0]
+
+- Bindings for payjoin-1.2.0, which adds the non-blocking receive
+ interface and its related methods alongside the existing
+ callback-based ones
+- Add FFI bindings for the non-blocking receive interface, including
+ session event replay, in favor of synchronous callbacks
+- Paying a BIP 78-only (v1) receiver from a v2 `SenderBuilder` now
+ returns an `UnsupportedPjVersion` error instead of panicking across
+ the FFI boundary
+- **Breaking:** builder errors are renamed to match the payjoin crate:
+ `SenderBuilderError` to `BuildSenderError` and
+ `ReceiverBuilderError` to `BuildReceiverError`
+- Replace the `url` crate with payjoin's native Url type, validating
+ URLs as a precondition to URI validation
+- Update anyio to 4.15.1
+
## [0.2.0]
- Bindings for payjoin-1.0.0, the first stable payjoin release
diff --git a/payjoin-ffi/python/pyproject.toml b/payjoin-ffi/python/pyproject.toml
index aad065392..33d8f00bc 100644
--- a/payjoin-ffi/python/pyproject.toml
+++ b/payjoin-ffi/python/pyproject.toml
@@ -8,7 +8,7 @@ description = "The Python language bindings for the Payjoin Dev Kit"
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
-version = "0.2.0"
+version = "0.3.0"
dependencies = ["httpx>=0.28.1,<1.0"]
[tool.setuptools]
diff --git a/payjoin-ffi/python/uv.lock b/payjoin-ffi/python/uv.lock
index 83099208e..bbf696091 100644
--- a/payjoin-ffi/python/uv.lock
+++ b/payjoin-ffi/python/uv.lock
@@ -82,7 +82,7 @@ wheels = [
[[package]]
name = "payjoin"
-version = "0.2.0"
+version = "0.3.0"
source = { editable = "." }
dependencies = [
{ name = "httpx" },