Provisioning Matched Offers
This step only applies to push offers. Pull offers are provisioned automatically by the protocol pulling USDC from your EOA when matched, so there’s nothing to do — they go straight to Open Bridges.
When a push offer matches, it transitions from SUBMITTED to AWAITING_MINT. The matched amount needs one approve + one mint per offer, executed from the offer address (your Safe / Fireblocks / Fordefi).
There are two ways to do this. The recommended path connects the offer wallet directly to a dedicated UI; the alternative builds a Safe Transaction Builder JSON you import into your custody UI manually.
Recommended — Request Push UI
Section titled “Recommended — Request Push UI”Open request-push.3f.xyz and connect your offer address wallet (Fireblocks / Fordefi via WalletConnect, Safe via the Safe Apps iframe, or any browser wallet). Matched authorizations show up in the Pending mints table; click Mint on each row. The page submits approve + mint as a single batch when your wallet supports EIP-5792, and falls back to two sequential prompts otherwise.
See Mint & Claim (request-push) for the full walkthrough — connection paths per custody, the exact contract calls, and what to do when rows don’t appear.
When the mint lands on-chain, the offer transitions out of AWAITING_MINT and into SUCCEEDED, and a row appears in the main console’s Open Bridges. Hit Refresh in the main console if you don’t want to wait for the next 8 s API poll.
Alternative — Safe TX JSON export from the console
Section titled “Alternative — Safe TX JSON export from the console”If you’d rather drive the mint from your custody UI’s existing Transaction Builder integration (or you’re not yet set up to connect the offer wallet directly to a dApp), the main console can build the Safe-compatible JSON for you.
1. Find your AWAITING_MINT offers
Section titled “1. Find your AWAITING_MINT offers”Go to the User tab. Matched push offers sit in the Pending Settlement section with the AWAITING MINT badge. Each row carries the auction id, the vault name + deposit token, the amount won, the offered rate, the auction direction, and the settlement term — same column layout as Live Offers, with a checkbox at the front.
If the section is empty, no push offers have matched yet (or your sign-in / API key isn’t configured).
2. Select the offers to provision
Section titled “2. Select the offers to provision”Tick the checkbox on each row you want to provision. The header checkbox toggles the whole section at once. The export button at the bottom of the card stays disabled until at least one row is selected.
The action bar at the bottom shows the bound Safe address (last few characters) so you can sanity-check before exporting:
Will export approve + mint per selected offer for Safe
0x1234…abcd.
If you haven’t bound an offer address yet, the bar reads “Set a Safe offer address in Settings → Push Offers before exporting” and the button stays disabled.
3. Export the Safe TX JSON
Section titled “3. Export the Safe TX JSON”Click Export Safe TX JSON (N) (where N is the number of selected offers). The console:
- Reads
mintAuthorization(offerAddress)andasset()from each selected offer’s request contract (one batched multicall — no N+1 round-trips). - Builds the corresponding
approve(spender, amount)+mint(...)calls. - Triggers a JSON download named per the network and current timestamp.
A success toast confirms the filename and tells you to drop the file into the Safe Transaction Builder app. The button text flips to “Reading on-chain…” while the multicall is in flight, then back to its normal label once the download starts.
4. Import into Safe / Fireblocks
Section titled “4. Import into Safe / Fireblocks”Open your custody UI:
- Safe —
app.safe.global→ connect to your Safe → Apps → Transaction Builder → drag and drop the JSON. The Builder shows the list of approve + mint calls with their target request contracts, function names, and decoded arguments. Review them, then click Create Batch and Send Batch. - Fireblocks / Fordefi — there’s no direct import integration today. Either replay the calls one by one using the JSON as a reference (use the
to,value,data, and decodedcontractMethod/contractInputsValuesfor each entry), or — almost always easier — use the Request Push UI over WalletConnect instead.
5. Execute and verify
Section titled “5. Execute and verify”Sign and execute the batch from your Safe / Fireblocks. Once it lands on-chain, the offer transitions out of AWAITING_MINT and into SUCCEEDED, and a new row appears in Open Bridges for the now-funded position. Hit Refresh to short-circuit the API poll if you don’t want to wait for the next 8 s tick.
Troubleshooting
Section titled “Troubleshooting”- Request Push: row not appearing — see the troubleshooting table in Mint & Claim.
- Console export disabled — bind an offer address in Settings → Push Offers first.
mintAuthorizationreturns zero — the offer hasn’t actually been matched yet. Wait for the API to flip the status.- Re-exporting — safe to re-export at any time; the JSON is regenerated from on-chain state each time.