Create provider funding source

POST
/providers/{providerID}/participants/{participantID}/funding-sources

Create an active funding source for one of your participants, identified by the participant’s participantID or your externalID for them.

Creation is idempotent on (participant, fundingType, providerSourceID): re-sending an existing source returns the existing fundingSourceID, and reactivates the source if it had been removed.

Auth: API key or bearer token. Scoped to the calling provider. Returns 404 when no participant matches within your provider. Returns 422 when the body fails validation.

Request
cURL
curl -X POST https://api.moov.money/providers/{providerID}/participants/{participantID}/funding-sources \
  -H "Content-Type: application/json" \
  -d '{
  "displayName": "First National Checking",
  "fundingType": "bank_account",
  "last4": "4321",
  "providerSourceID": "src_01HP5J9ZKQT4RXP8M2VYBN3D"
}'
Responses
201 400 401 403 404 409 422
The resource was successfully created.
{
  "fundingSourceID": "fnd_01HF5J9ZKQT4RXP8M2VYBN3D"
}
Malformed request: the body or headers failed validation.
Authentication missing, invalid, or insufficient.
Authentication present but the action is forbidden for this principal/claim.
The requested resource was not found.
The request conflicts with the current state of the target resource.
The request was well-formed but couldn’t be processed (e.g. card declined).

Headers

X-Moov-Version

string
Set this header to the API version being targeted (e.g. v2026.07.00). When omitted, the server applies its default version.

Path parameters

providerID

string required
Your provider account ID.

participantID

string required
The participant’s participantID, or your externalID for them. Both resolve to the same participant.

Request

application/json
A funding source to create. Creation is idempotent on (participant, fundingType, providerSourceID): re-sending an existing source returns the existing fundingSourceID and reactivates the source if it had been removed.

providerSourceID

string [1 to 256] characters required
Your identifier for the underlying funding source. Must be 1–256 characters.

displayName

string [1 to 256] characters required
Human-readable display label. Must be 1–256 characters.

last4

string
Last four digits of the funding source number: the card number for card, or the bank account number for bank_account. Rendered with displayName in the UI. At most 4 characters.

fundingType

string<enum> required
Funding source discriminator.
Possible values: card, bank_account

Response

Returns the stable fundingSourceID for the created (or existing) funding source.

fundingSourceID

string required
The stable server-owned identifier for the created (or existing) funding source.