Link a card
Link a card to an existing Moov account.
Read our accept card payments guide to learn more.
Only use this endpoint if you have provided Moov with a copy of your PCI attestation of compliance.
During card linking, the provided data will be verified by submitting a $0 authorization (account verification) request.
If merchantAccountID
is provided, the authorization request will contain that account’s statement descriptor and address.
Otherwise, the platform account’s profile will be used. If no statement descriptor has been set, the authorization will
use the account’s name instead.
It is strongly recommended that callers include the X-Wait-For
header, set to payment-method
, if the newly linked
card is intended to be used right away. If this header is not included, the caller will need to poll the List Payment
Methods
endpoint to wait for the new payment methods to be available for use.
To use this endpoint from the browser, you’ll need to specify the /accounts/{accountID}/cards.write
scope
when generating a token.
|
|
|
|
|
|
{
"billingAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Apt 302",
"city": "Boulder",
"country": "US",
"postalCode": "80301-1234",
"stateOrProvince": "CO"
},
"bin": "123456",
"brand": "Discover",
"cardAccountUpdater": {
"updateType": "number-update",
"updatedOn": "2019-08-24T14:15:22Z"
},
"cardCategory": "CLASSIC",
"cardID": "ec7e1848-dc80-4ab0-8827-dd7fc0737b43",
"cardOnFile": true,
"cardType": "debit",
"cardVerification": {
"accountName": {
"firstName": "match",
"fullName": "match",
"lastName": "match",
"middleName": "match"
},
"addressLine1": "match",
"cvv": "match",
"postalCode": "match"
},
"commercial": true,
"domesticPullFromCard": "supported",
"domesticPushToCard": "fast-funds",
"expiration": {
"month": "01",
"year": "21"
},
"fingerprint": "9948962d92a1ce40c9f918cd9ece3a22bde62fb325a2f1fe2e833969de672ba3",
"holderName": "Jules Jackson",
"issuer": "GRINGOTTS BANK",
"issuerCountry": "US",
"issuerPhone": "8185551212",
"issuerURL": "HTTPS://WWW.EXAMPLE.COM/",
"lastFourCardNumber": "1234",
"merchantAccountID": "50469144-f859-46dc-bdbd-9587c2fa7b42",
"paymentMethods": [
{
"paymentMethodID": "9506dbf6-4208-44c3-ad8a-e4431660e1f2",
"paymentMethodType": "card-payment"
},
{
"paymentMethodID": "3f9969cf-a1f3-4d83-8ddc-229a506651cf",
"paymentMethodType": "push-to-card"
}
],
"regulated": true
}
{
"error": "card verification failure: card-not-activated"
}
{
"cardCvv": "must contain digits only",
"cardNumber": "must be a valid card number"
}
Response headers
Retry-After
number
Headers
X-Wait-For
string
Optional header to wait for certain events, such as the creation of a payment method, to occur before returning a response.
When this header is set to payment-method
, the response will include any payment methods that were created for the newly
linked card in the paymentMethods
field. Otherwise, the paymentMethods
field will be omitted from the response.
payment-method
Path parameters
accountID
string
<uuid>
required
Body
billingAddress
object
required
Show child attributes
postalCode
string
[1 to 10] characters
required
addressLine1
string
<=60 characters
addressLine2
string
<=32 characters
city
string
<=24 characters
country
string
<=2 characters
stateOrProvince
string
<=2 characters
cardCvv
string
[3 to 4] characters
required
cardNumber
string
required
Pattern
expiration
object
required
Show child attributes
month
string
2 characters
year
string
2 characters
cardOnFile
boolean
e2ee
object
Show child attributes
token
string<JWE>
holderName
string
merchantAccountID
string<uuid>
verifyName
boolean
Response
billingAddress
object
Show child attributes
addressLine1
string
<=60 characters
required
city
string
<=24 characters
required
country
string
<=2 characters
required
postalCode
string
[1 to 10] characters
required
stateOrProvince
string
<=2 characters
required
addressLine2
string
<=32 characters
bin
string
brand
string
American Express
,
Discover
,
Mastercard
,
Visa
cardAccountUpdater
object
Show child attributes
updateType
string<enum>
unspecified
,
account-closed
,
contact-cardholder
,
expiration-update
,
no-change
,
no-match
,
number-update
updatedOn
string<date-time>
<=24 characters
cardCategory
string
cardID
string<uuid>
<=36 characters
cardOnFile
boolean
cardType
string<enum>
debit
,
credit
,
prepaid
,
unknown
cardVerification
object
Show child attributes
accountName
object
Show child attributes
firstName
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
fullName
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
lastName
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
middleName
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
addressLine1
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
cvv
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
postalCode
string
noMatch
,
match
,
notChecked
,
unavailable
,
partialMatch
commercial
boolean
domesticPullFromCard
string
not-supported
,
supported
,
unknown
domesticPushToCard
string
not-supported
,
standard
,
fast-funds
,
unknown
expiration
object
Show child attributes
month
string
2 characters
year
string
2 characters
fingerprint
string
<=100 characters
holderName
string
issuer
string
issuerCountry
string
issuerPhone
string
issuerURL
string
lastFourCardNumber
string
merchantAccountID
string<uuid>
paymentMethods
array
Includes any payment methods generated for a newly linked card, removing the need to call the List Payment Methods endpoint following a successful Link Card request.
NOTE: This field is only populated for Link Card requests made with the X-Wait-For
header.
Show child attributes
paymentMethodID
string<uuid>
<=36 characters
paymentMethodType
string<enum>
moov-wallet
,
ach-debit-fund
,
ach-debit-collect
,
ach-credit-standard
,
ach-credit-same-day
,
rtp-credit
,
card-payment
,
apple-pay
,
push-to-card
,
pull-from-card
regulated
boolean