Create provider participant
Create a participant: your customer who sends money with Moov Money. The
externalID must be unique within your provider; a duplicate returns 409.
A participant is scoped to one provider. The same person can be a
participant of more than one provider; each provider keeps its own
externalID and record.
Creation is asynchronous. The 201 response returns the assigned
participantID and echoes the identity fields from the request
(externalID, name fields, dateOfBirth, address, phones,
emails). Optional fundingSources on the request are persisted but are
not returned in the 201 body. Read the canonical record, including
status, at
GET /providers/{providerID}/participants/{participantID} once creation
completes.
Send an X-Idempotency-Key header so a retried create is processed once.
The server echoes that header on the response. The key is retained for
24 hours after the create completes. Replaying the same key with the
same request body within that window returns the original 201
response. Replaying it with a different body within that window
returns a 409 with error code idempotency-key-reused. After the
window, the same key starts a new create. Returns a 409 with error
code idempotency-request-in-progress when a request with this key is
still running. Returns 400 when the header is missing or malformed.
Auth: API key or bearer token. Scoped to the calling provider. Returns 422 when the body fails validation.
curl -X POST https://api.moov.money/providers/{providerID}/participants \
-H "Content-Type: application/json" \
-d '{
"address": {
"addressLine1": "123 Main St",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"country": "US",
"postalCode": "94105",
"stateOrProvince": "CA"
},
"emails": [
"[email protected]"
],
"externalID": "customer-abc-123",
"familyName": "Smith",
"fundingSources": [
{
"displayName": "First National Checking",
"fundingType": "bank_account",
"last4": "4321",
"providerSourceID": "src_01HP5J9ZKQT4RXP8M2VYBN3D"
}
],
"givenName": "Jane",
"phones": [
{
"countryCode": "1",
"number": "5555550101"
}
]
}'{
"address": {
"addressLine1": "123 Main St",
"addressLine2": "Apt 4B",
"city": "San Francisco",
"country": "US",
"postalCode": "94105",
"stateOrProvince": "CA"
},
"emails": [
"[email protected]"
],
"externalID": "customer-abc-123",
"familyName": "Smith",
"givenName": "Jane",
"participantID": "usr_01HF5J9ZKQT4RXP8M2VYBN3D",
"phones": [
{
"countryCode": "1",
"number": "5555550101"
}
]
}Headers
X-Moov-Version
stringv2026.07.00). When omitted, the server applies its default version.X-Idempotency-Key
string
requiredPath parameters
providerID
string
requiredRequest
externalID must be unique within your provider scope; a 409 is
returned if it already exists.givenName
string
requiredmiddleName
stringfamilyName
string
requirednickName
stringBob for Robert.dateOfBirth
string<date>YYYY-MM-DD. Used for identity checks,
such as flipping an OFAC hit.address
object
requiredShow child attributes
address
addressLine2
stringcity
string
requiredstateOrProvince
string
requiredpostalCode
string
requiredcountry
string
requiredaddressLine1
string
requiredphones
array<object>
requiredShow child attributes
phones[]
countryCode
stringnumber
stringemails
array<string>fundingSources
array<object>fundingType and providerSourceID must be unique in
the array. Re-sending the same source on a later create converges to the
existing record. These values are not returned in the 201 body.Show child attributes
fundingSources[]
displayName
string
[1 to 256] charactersfundingType
string<enum>card,
bank_accountlast4
stringcard, or the bank account number for bank_account. At most 4 characters.providerSourceID
string
[1 to 256] charactersexternalID
string
requiredResponse
participantID and echoes the accepted request. Read the canonical
record at the get-participant endpoint once creation completes.givenName
string
requiredmiddleName
stringfamilyName
string
requirednickName
stringBob for Robert.dateOfBirth
string<date>YYYY-MM-DD. Used for identity checks,
such as flipping an OFAC hit.address
object
requiredShow child attributes
address
addressLine2
stringcity
string
requiredstateOrProvince
string
requiredpostalCode
string
requiredcountry
string
requiredaddressLine1
string
requiredphones
array<object>
requiredShow child attributes
phones[]
countryCode
stringnumber
stringemails
array<string>participantID
string
requiredexternalID
string
required