Executing Transfers

Executing Transfers APIs

Create Transfer API

Create a transfer API to instantly post funds to any account for P2P, A2A, and Disbursement payout use cases to a recipient with a profile and account links.

Syntax / URL

POST /programs/{programCode}/transfers

Request

Request Parameters

FieldDataTypeDescriptionRequired
transferIdentifierGUIDIf the transaction is initiated through the Transfers API, the transferIdentifier that uniquely identifies the initiating transfer is included.yes
transferTypeTransferTypeInPerson P2P (enables no linked target identifier to be provided, only allows transferendpointtype to be “card”

Existing Transfer type “PartnerP2P” should be used for remote / offline P2P between two Wallet users
yes
partnerReferenceDatastringOptional. When a valid disbursementExternal is processed, the partner can optionally provide information in the partnerReferenceData field which can be matched to the funding transfer request along with the corresponding transaction. Upon request, the partnerReferenceData can be included in the settlement report.

Note: Including the partnerReferenceData field in the request enables the partner to cross reference the report information with internal records.
no
InitiatorstringThis field contains the ID of the funding source account.no
transferRouteTransferRouteContains the information for a POST Transfer call involving a new source and target.yes
fraudDataFraudDataOptional Information to assist Green Dot with chargebacks and fraud detection and prevention. Information provided will vary by partner and the use case, please discuss with your Green Dot implementation manager.

- "PIN" or "FINGERPRINT" as String

- Wallet creation date

- Device Hardware ID

- Last 4 digits of the phone number.

- UTC Timestamp of the last spend date with this card in the wallet (sender)

- UTC Timestamp of the Card provisioning on the Wallet
no

Elements in FraudData

FieldDataTypeDescriptionRequired
AuthenticationTypestringType of the Authentication user did in device to initiate the transfer.
"PIN" or "FINGERPRINT" as String

As of now, only these values are allowed:

“PIN”

”FINGERPRINT”
no
WalletCreationDateDateTimeWallet creation date
DateTime in UTC format when the transaction Wallet was created
no
DeviceIDstringDevice Hardware IDno
Last4Phonestringlast 4 digits of the phone numberno
LastSpendDateDateTimeUTC Timestamp of the last spend date with this card in the wallet (sender)no
CardProvisioningDateDateTimeUTC Timestamp of the Card provisioning in the WalletNote: one of these needed: TargetTransferEndpoint.identifier, or encryptedGFTProfile, or encryptedCustomer

TransferRoute

Field NameDataTypeDescriptionRequired
transactionAmountstringContains the amount to transfer.yes
transactionDescriptionstringDescription display in both source and target transaction historyno
sourceTransferEndpointTransferEndpointRepresents the source of the funds. Will be the cardlink to the preferred debit card in the wallet.no
targetTransferEndpointTransferEndpointRepresents the target of the funds. Will be DPAN data or linked account ID for P2P or remotely P2Pno
eCommTransactionIdentifierstringThis is an optional fieldConditional
encryptedCardAuthenticationDataencryptedCardAuthenticationDataWhenever Sender value is DPAN then cryptogram value will be passed in this encrypted format and is Mandatory.Conditional

TransferEndpoint

Field NameDataTypeDescriptionRequired
transferEndpointTypeTransferEndpointTypeRepresents the target type of the funds transfer.Yes
IdentifierGUIDTarget linked account ID if a linked account, or blank and replaced with card data blob for in-person P2P with the target DPAN/FPAN and expiration dateConditional
currencyOnly USDis supported at this time.Yes
encryptedPaymentInstrumentencrypted card data. See PaymentInstrumentNo
encryptedCustomerencrypted user data. See CustomerNo
TransferType
InPersonP2P
TransferEndpointTypeP2P Type
CardP2P Target
AccountP2P Source

FraudData

"fraudData": {    
    "authenticationType": "PIN",    
    "walletCreationDate": "2024-11-21T07:40:55.543Z",    
    "deviceID": "string",    
    "last4Phone": "string",    
    "lastSpendDate": "2024-11-21T07:40:55.543Z",    
    "cardProvisioningDate": "2024-11-21T07:40:55.543Z"  
}

CardAuthenticationData

Field NameDataTypeDescriptionFormatValues AllowedRequiredNotes
cardHolderAuthenticationVerificationStringThis is the cryptogram value which is generated.28 charactersBase64 encrypted stringConditionalIf the Value of the card passed in Transfer is the DPAN then this is Mandatory.

Example Plain text value before encryption as in the Transfer API payload under encryptedCardAuthenticationData

"cardAuthenticationData": {
"cardHolderAuthenticationVerification": "AAABBJg0VhI0VniQEjRWAAAAAAA="},

Example of request of mobile phone remotely P2P Transfer

 
{
  "transferIdentifier": "27e91d46-d103-4f26-a4a8-2d823fcf2523",
  "transferType": "PartnerP2P",
  "initiator": "", -- customer token, PIID 
  "partnerReferenceData": "",
  "transferRoute": {
    "transactionAmount": "99",
    "transactionDescription": "Partner P2P",
    "sourceTransferEndpoint": {
      "transferEndPointType": "account",
      "identifier": "e4b06240-b719-4c76-87c3-961f515e33eb",  -- source linked DPAN ID in sending profile Wallet
      "currency": "USD",
      "ecommTransactionIndicator": "07",
      "encryptedCardAuthenticationData": {
        "version": "EC_v1",
        "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExwDdXm5e3P9+/nTAFW5Y+WJahmHhtbRlGwpmtoEJyiQCqBtC8NhQVsIVIq874XwY+8Yzk8LFCcdvoHn4zFwjMA==",
        "publicKeyHash": "PiRV5ko8JYGxAtcNb9WV4aVg7aXIp8EsstmeUqqWzT8=",
        "data": "DfAHBPjSNYP6umhaD9R0K4rNoQZpe/gWjwZs52o="
      }
    }
    "targetTransferEndpoint": {
      "transferEndPointType": "account",
      "identifier": "9efce52b-ccf6-4944-bdad-30dd9f41c900",  --- The cardlink of the receiving DPAN ID in receiving profile Wallet
      "currency": "USD"
     
   }, 
  "fraudData": {
   "authenticationType": "FINGERPRINT",    
    "walletCreationDate": "2024-11-21T07:40:55.543Z",    
    "deviceID": "string",    
    "last4Phone": "string",    
    "lastSpendDate": "2024-11-21T07:40:55.543Z",    
    "cardProvisioningDate": "2024-11-21T07:40:55.543Z"  
    }
}

Example of Disbursement Payout

{
"TransferId": "2c9e9726-77b6-4800-9cd8-bebf7456131e",
"TransferType": "DisbursementExternal",
"Initiator": null,
"TransferRoute": {
  "TransactionAmount": 100.0,
  "TransactionDescription": "Contractor Payment",
  "PartnerReferenceData": "902219637-1",
  "SourceTransferEndpoint": {
   "TransferEndPointType": "programFundingSource",
   "Identifier": "80df3c58-0a49-4a67-aec0-afc17cb1afb4",
   "Currency": "USD"
  },
  "TargetTransferEndpoint": {
   "TransferEndPointType": "card",
   "Identifier": "37061f22-654c-4e94-8duu-084bdfc7a9d5",
   "Currency": "USD"
  }
},
"AccountHolderIdentifier": null,
"FraudData": null,
"programCode": "AcmeCo"
}

Response

Response Code

HttpCode: 201

TransferStatus
Pending
Completed
Failed
Declined
Authorized
Voided

Transfer Statuses

Transfer StatusReasonTransferStatusHttp Verb
88DeclinedPost, Get
91DeclinedPost, Get
89DeclinedPost, Get
8DeclinedPost, Get
105DeclinedPost, Get
106 AFTAuthorizedOCTCompletedAuthorizedPost, Get
93DeclinedPost, Get
87DeclinedPost, Get
82DeclinedPost, Get
12DeclinedPost, Get
10DeclinedPost, Get
85DeclinedPost, Get
11DeclinedPost, Get
4DeclinedPost, Get
3PendingPost, Get
15 SystemErrorFailedPost, Get
107 TimeoutReversedPending(Declined)Post, Get
22 TransactionDeclinedDeclined(Void)Post, Get
21 TransactionFailedFailedPost, Get
104Post, Get
2 TransferCompletedCompletedPost, Get
94 TransferVoidedDeclinedPost, Get
98 TransferVoidFailedDeclinedPost, Get

Sender

Field NameDataTypeDescriptionRequired
identifierstringSender’s customerTokenno
linkIdstringSender’s linked account idno
last4PANstringno
bankstringno
associationstringno

Receiver

Field NameDataTypeDescriptionRequired
identifierstringIf DPAN passed has a PPID (Profile ID), then this is looked up and provided back in this fieldno
last4PANstringno
bankstringno
associationstringno
payNamestringno
programstring“Debit”, “Credit”no
identifierstring
linkIdstring

Completed Transfer response example

HttpCode: 201