Push to card
Before you start
- Moov has approved your account for push to card. The source account needs
send-funds.push-to-cardfor disbursements to others, orwallet.balancefor transfers to its own card (see use cases). - The source wallet has enough
availableBalanceto cover the payout and any payout fee - The recipient has the
transferscapability and a linked card that is eligible
push-to-apple-pay or push-to-google-pay payment methods.
Use cases
Moov supports push transfers for two use cases: merchant settlement and funds disbursement. Moov will configure the source account depending on your use case:
Merchant settlement is commonly used by businesses that are looking to access their funds faster through a self-to-self transfer from their wallet to a card. If you're using push to card for merchant settlement, the source account must have the wallet.balance capability enabled.
Funds disbursement enables real-time transfers to another account. Some funds disbursement examples include gig economy payouts, insurance disbursements, corporate rebates, payroll, government, or reimbursements. If you're using push to card for funds disbursement, the source account must have the send-funds.push-to-card capability enabled.
Check card eligibility
Link the recipient's card with the card link Drop, or with the link a card endpoint if you have a PCI attestation on file with Moov. Then check the card's domesticPushToCard field with the retrieve a card endpoint.
curl -X GET "https://api.moov.io/accounts/{accountID}/cards" \
-H 'Authorization: Bearer {token}' \
-H "x-moov-version: v2026.07.00"
mc, _ := moov.NewClient()
var accountID string
var cardID string
mc.GetCard(ctx, accountID, cardID)
The domesticPushToCard field describes the push to card timing that is available for the card, if supported:
| Timing | Description |
|---|---|
fast-funds |
Funds will be available to the destination within 30 minutes or less of the authorization. |
standard |
Fast funds is not supported on this card. Transfer will follow standard card settlement timing. |
not-supported |
This card is ineligible for push-to-card payments. Contact your issuer for more details. |
unknown |
Eligibility has not been checked or is unknown. |
Send a push-to-card payout
The recipient's card gets a push-to-card payment method when the account has the transfers capability, the card's domesticPushToCard is fast-funds or standard, and Moov has approved your account for push to card. The per-transfer maximum is in transfer limits.
Initiate the transfer
Create a transfer with the sender's moov-wallet payment method as the source and the recipient's push-to-card payment method as the destination.
curl -X POST "https://api.moov.io/accounts/{accountID}/transfers" \
-H "Authorization: Bearer {token}" \
-H "x-idempotency-key: UUID" \
-H "X-Wait-For: rail-response" \
-H "x-moov-version: v2026.07.00" \
--data-raw '{
"amount": {
"value": 100,
"currency": "USD"
},
"destination": {
"paymentMethodID": "string"
},
"source": {
"paymentMethodID": "string"
},
"description": "Optional transaction description."
}'
mc, _ := moov.NewClient()
var accountID string // Partner account
mc.CreateTransfer(ctx, accountID, moov.CreateTransfer{
Amount: moov.Amount{
Currency: "USD",
Value: 100, // $1.00
},
Destination: moov.CreateTransfer_Destination{
PaymentMethodID: "string",
},
Source: moov.CreateTransfer_Source{
PaymentMethodID: "string",
},
Description: "Optional transaction description.",
})
Choose payout fees (optional)
Forpush-to-card payouts, you can pass the payout fee to the recipient with feePaidBy. If you don't, the funding wallet (source) pays it.Track transfer status
Subscribe to the transfer.updated webhook event, or retrieve the transfer with the GET endpoint, and read destination.cardDetails.status:
destination.cardDetails.status |
Meaning |
|---|---|
initiated |
Transfer created, awaiting authorization |
completed |
The issuer approved the credit. fast-funds cards are credited within 30 minutes; standard cards follow card settlement timing. |
failed |
The issuer declined or processing failed. See cardDetails.failureCode and error responses. |
curl -X GET "https://api.moov.io/accounts/{accountID}/transfers/{transferID}" \
-H "Authorization: Bearer {token}" \
-H "x-moov-version: v2026.07.00"
mc, _ := moov.NewClient()
var accountID string
var transferID string
mc.GetTransfer(ctx, accountID, transferID)
Defer delivery
To deliver a push-to-card payout later, set destination.cardDetails.scheduledDeliveryOn on the create transfer request to a time 24 to 48 hours in the future. In test mode, any future time up to 48 hours works. Deferred payouts can have a different payout fee than instant ones.
{
"destination": {
"paymentMethodID": "{pushToCardPaymentMethodID}",
"cardDetails": {
"scheduledDeliveryOn": "2026-11-04T15:00:00Z"
}
}
}
Velocity limits
Moov has a transfer limit of $50,000 per push to card transaction. Each card fingerprint can also receive a limited number and amount of push to card payouts over time, set by Visa and Mastercard. Moov may set lower limits for your approved use case.
| Window | Maximum per card |
|---|---|
| 1 day | 150 transfers or $100,000 |
| 7 days | 250 transfers or $250,000 |
| 30 days | 750 transfers or $500,000 |
Error responses
Amount limit: If you have exceeded the amount limit, you'll receive a 400 error response. You can retry the transfer with a lower amount.
Velocity limits: If you have exceeded the velocity limits, push to card transfers will fail. The transfer status will be failed and the failure reason will be rejected-high-risk.
Issuer limits: If you have exceeded issuer limits, the transfer status will be failed and the failure reason will be destination-payment-error. Contact the issuer if you require guidance on specific issuer limits.
The decline code is in destination.cardDetails.failureCode on the retrieve a transfer and list transfers responses.
You'll also receive a 400 error response if your account is not enabled for disbursement. If you need to enable disbursement, please contact Moov so we can configure your account accordingly.
When a payout fails or is reversed
If a push-to-card payout fails, is canceled, or is reversed, the full transfer amount and payout fee return to the source wallet. See payout fees.
Next steps
- Payout fees: pass the fee to the recipient
- Test push to card with test cards
- Pull from card: move funds from a card into a wallet