Skip to main content
A stored disbursement method (SDM) is a saved ACH bank account or debit card that a Firm can use for later disbursements. This guide explains how to collect the payment details with a Confido-hosted iframe, then create the SDM from your server with the Firm API token. The embed supports manual ACH (ACH_DIRECT) and push-to-card (PUSH_TO_CARD, debit cards only).
If you are integrating as a partner, use a Firm API token (f_…) for the Firm whose stored disbursement method you are creating. A Partner API token cannot mint an SDM token or create an SDM.You can obtain a Firm API token by:
  • Saving the apiToken returned by createFirm
  • Exchanging a Connect code for a Firm API token
Keep the Firm API token on your server. Only the short-lived SDM token from storedDisbursementMethodTokenCreate may be sent to the browser.

Prerequisites

  • The Firm is ACTIVE and disbursements are enabled for that Firm
  • You have the Firm API token for the Firm on your server
  • The Firm is configured to allow the disbursement method you intend to collect
  • Register your application’s parent-page origin as a trusted domain. Required in sandbox and production.
In sandbox, createFirm(input: { mockOnboarding: true }) activates the Firm, enables disbursements, and returns a Firm API token you can use immediately. mockOnboarding is available in sandbox only.

High level flow

1

Mint a stored disbursement method token from your server

2

Embed the stored disbursement method form in an iframe

3

Submit the form from the parent and wait until the details are staged

4

Create the stored disbursement method from your server

1. Mint a token

Call storedDisbursementMethodTokenCreate with the Firm API token:
Send the returned token to your frontend. Mint a fresh token when the form opens. SDM tokens expire after 30 minutes. If staging fails because the token expired, mint another and reload the iframe src.

2. Embed the form

Query parameters
  • token (required) — value from storedDisbursementMethodTokenCreate
  • opts (optional) — encodeURIComponent(JSON.stringify(branding)) where branding is { backgroundColor, centerColor, footerText, headerImg, headerName, partnerImg } (footerText / image fields may be null)
The tabbed embed loads recipient ACH and instant fees from the Firm’s billing settings. You do not pass fees in the URL.
A missing or invalid token, or a parent origin that is not a trusted domain, returns HTTP 403 and posts confido:sdm_load_error.

3. Submit the form from the parent

The iframe has no Save button. Listen for its events, enable your application’s Save button when the form is valid, and post confido:sdm_submit to the payment-page origin when the user clicks Save. Check event.origin against the payment-page origin. Post confido:sdm_submit to that origin, not *.

Events from the iframe

Every message is { type, ...payload }.

Command into the iframe

4. Create the stored disbursement method

After receiving confido:sdm_staged, send the SDM token and your non-sensitive metadata to your backend. Call storedDisbursementMethodCreate there with the Firm API token.
Input
  • token (required) — the same SDM token used in the iframe
  • payeeEmail (required) — valid email for the payee
  • clientId or vendorId (required) — exactly one
  • nickname (optional)
The SDM token is scoped to the Firm, and the Firm API token used for create must belong to that same Firm. The token cannot create an SDM by itself. On success the cache entry is deleted. Creating again with the same token fails. A successful create emits stored_disbursement_method.created.

Using a stored method

List methods for a client or vendor with the Firm API token:
To send funds to a saved method, create a disbursement as usual, then call disbursementInitiateTxnToSdm with { disbursementId, sdmId } using the Firm API token.

Limits and errors

  • Token TTL is 30 minutes. Remint and reload the iframe if staging reports an expiry.
  • Firm must be active. Token create fails with This firm is not active.
  • Method must be allowed on the Firm. Create fails with {METHOD} is not allowed for this firm.
  • Parent has no Save control inside the iframe. If you never post confido:sdm_submit, details are never staged.