Single Phase Transfer with Webhooks

Single Phase Commit Transfers Endpoints

Single Commit API

URLs

https://{evn}.mul.secure2.greendot.com/enrollment/v1/api/flex/transfers/singlecommit
https://pie.mul.secure2.greendot.com/enrollment/v1/api/flex/transfers/singlecommit
https://prd.mul.secure2.greendot.com/enrollment/v1/api/flex/transfers/singlecommit

Sample Request Header Parameters

FieldDatatypeRequired
(Y/N)
FormatDescription
Request-IDstringYUUIDThe request identifier (UUID format).
x--Remapped-AuthorizationstringYJWTIn the form of “Bearer {JWT }”
Content-TypestringY“application/json”

Sample Request Body

{
   "transferIdentifier": "4771cde6-e8ee-4458-8020-c905d704064f",
   "transferType": "DisbursementExternal",
   "initiator": "e4b06240-b719-4c76-87c3-961f515e33eb",
   "transferdescription": "",
   "transferRoute": {
	   "transactionAmount": 5,
	   "sourceTransferEndpoint": {
		   "transferEndPointType": "programFundingSource",
		   "identifier": "8EADF071-657B-4CFA-9FBA-7B77D77C3BE8",
		   "currency": "USD"
	   },
	   "targetTransferEndpoint": {
		   "transferEndPointType": "singlePhaseFunding",
		   "identifier": "6b5eed71-48d3-46e0-be44-4342c6826b60",
		   "currency": "USD",
		   "cardData": {
			   "expiration": {
				   "month": "12",
				   "year": "2022"
			   },
			   "firstName": "John",
			   "lastName": "Dee",
			   "address1": "123 Street",
			   "address2": "Apt 123",
			   "city": "Test",
			   "state": "AZ",
			   "zipCode": 12345
		   },
		   "userData": {
			   "firstName": "John",
			   "lastName": "Dee",
			   "zipCode": 12345
		   }
	   }
     }
}

Request Body Parameters

FieldDatatypeRequired
(Y/N)
FormatDescription
transferIdentifierstringYGUIDIf the transaction is initiated through the Transfers API, the transferIdentifier uniquely identifying the initiating transfer is included.
transferTypestringYMax 50 charactersUse disbursementExternal.
InitiatorstringNMust be 36 charactersThis is the account from which the transfer was initiated. It must be either the source or the target account. For a One Phase Commit Transfer, this is an optional field. If needed, the partner can pass the Payee Site ID.
transferdescriptionstringNMax 100 charactersThe transaction description.
transferRoutecomplexYContains the information for a POST transfer call involving a new source and new target.
transactionAmountDecimalYThe transfer amount.
sourceTransferEndpointcomplexYRepresents the source of the funds.
transferEndpointTypestringYMax 50 charactersUse programFundingSource for disbursementExternal.
sourceTransferEndpoint. identifierstringYMust be 36 charactersThe accountIdentifer of the partner’s Disbursement Business account.
currencystringYMust be 3 charactersIf a currency code is provided in the request payload, it must be a valid 3-character ISO code and be valid for the program for which the call is being made.

Note: Currently, only USD is supported for all programs.
targetTransferEndpointcomplexYRepresents the target of the funds.
transferEndpointTypestringYMax 50 characterstargetTransferEndpoint. transferEndpointType as

“singlePhaseFunding”
targetTransferEndpoint. IdentifierGUIDYThe External Card Identifier of the applicable account based on the transferEndpointType. For a Single Phase Commit, this will be the Payee Site ID.
encryptedCardDataYThe encrypted card data. Refer to Encrypted Card Data Field Definitions.
encryptedUserDataYThe encrypted user data. Refer to Encrypted User Data Field Definitions.

Encrypted Card Data Body

{	
   "CardData": {
	"CardNumber": "string",
	"Expiration": {
		"CardExpirationMonth": "string",
		"CardExpirationyear": "string"
	},
	"FirstName": "string",
	"LastName": "string",
	"AddressLine1": "string",
	"AddressLine2": "string",
	"City": "string",
	"State": "string",
	"ZipCode": "string"
      }
}

Sample Encrypted Card Data Body

{
    "CardData": {
	"pan": "4111999999991234",
	"expiration": {
	     "month": "12",
	     "year": "2020"
        }
    }
}

Encrypted Card Data Parameters

FieldRequired
(Y/N)
DescriptionFormatValues Allowed
cvvNCard verification value or security code.3-4 digits0-9
cardNumberYPersonal Account Number (PAN) on the customer card0-9
expirationYCard expiration dateMMYYYY0-9
firstNameYCardholder’s first name2-35 Charactersa-z, A-Z, hyphen, space
lastNameYCardholder’s last name2-35 Charactersa-z, A-Z, hyphen, space
address1YCustomer address, line1Max 255 characters, a-z, A-Z, 0-9, hyphen, space, /, period
address2NCustomer address, line 2Max 255 charactersa-z, A-Z, 0-9, hyphen, space, /, period
cityYCity where customer livesMax 50 charactersa-z, A-Z, hyphen, space
stateYState where customer livesMax 2 charactersA-Z, a-z
zipCodeYCustomer zip codeMax 5 digits0-9

Sample User Data Body

{	
   "UserData": {
	"FirstName": "john",
	"LastName": "doe",
	"ZipCode": "91107"
   }
}

User Data Parameters

FieldRequired
(Y/N/C)
DescriptionFormatValues Allowed
firstNameYCardholder’s first name2-35 charactersa-z, A-Z, hyphen, space
lastNameYCardholder’s last name2-35 charactersa-z, A-Z, hyphen, space
dateOfBirthCUser’s date of birthYYYY-MM-DDConditional value. Must be between 1901 and current year.
zipCodeYUser’s zip codeNNNNNMust be 5 digits.

Sample Single Commit Responses

Transfer Pending

Response:HTTP/1.1 201 Created
Date: Tue, 12 Apr 2022 19:47:33 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 121
Connection: keep-alive
x-correlation-id: be732974-aa3d-4b1b-aaea-5d64daf0b170
Strict-Transport-Security: max-age=31536000; includeSubdomains;
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
{	
   "transfer": {
      "transferIdentifier": "c8b18a28-b87b-4c0f-ab77-87965c4c6199",
      "transferStatus": "Pending"
    }
}

Transfer Failed (HTTP 503)

This response indicates a timeout (HTTP 503) or internal exception.

{
      "transfer": {
	  "transferIdentifier": "1d670075-a5bc-467d-856c-32ec44455fef",
	  "transferStatus": "failed"
      },
      "errors": [
      {
       "code": 4214,
       "subcode": 1514,
       "description": "system error"
      }
   ]
}

Transfer Failed (HTTP 400)

This response indicates a data issue (HTTP 400) occurred.

{
    "transfer": {
	"transferIdentifier": "1d670075-a5bc-467d-856c-32ec44455fef",
	"transferStatus": "failed"
    },
    "errors": [
	{
	    "code": 4200,
	    "subcode": 945,
	    "description": "Invalid Request Id"
	}
    ]
}

GET Transfer API

Partner Integration Environment URL

https://pie.mul.secure2.greendot.com/enrollment/v1/api/flex/externalAccounts/acb07274-b4e8-446f-9ac5-c43fe117ec91/transfers/27e289ba-2002-492b-8497-db44b44bca6f HTTP/1.1

Production URL

https://prd.mul.secure2.greendot.com/enrollments/v1/api/{programCode}/externalAccounts/{externalAcctId}/transfers/{transferId}

Request Header Parameters

FieldDatatypeRequired
(Y/N)
FormatDescription
Request-IDstringYUUIDThe request identifier (UUID format).
x--Remapped-AuthorizationstringYJWTIn the form of “Bearer {JWT }”
Content-TypestringY“application/json”

URL Parameters

FieldDatatypeRequired
(Y/N)
FormatDescription
externalAcctIdstringYGUIDCustomer Payee Side ID.
transferIdstringYGUIDThe transferIdentifier that uniquely identifies the initiating transfer that will be included.

Sample Request

GET https://qa.mul.secure2.greendot.com/enrollment/v1/api/flex/externalAccounts/acb07274-b4e8-446f-9ac5-c43fe117ec91/transfers/27e289ba-2002-492b-8497-db44b44bca6f HTTP/1.1
Accept-Encoding: gzip,deflate
x-Remapped-Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImMzNmNlZGI4LTg3NTQtNDY1MS04NWYxLTY2NDI4ODY4YzAwZSJ9.eyJjbGllbnRpZCI6ImU1MWIyMDExYjNhMzRmYzE5Mzk0MTJkZWU4ZTRkOTIyIiwiaXNzIjoiaHR0cHM6Ly9ncmVlbmRvdC5jb20iLCJhdWQiOiJBbGwiLCJpYXQiOjE2MDI3ODMzMTYsImV4cCI6MjIzMzUwMzMxNn0.lT5Oeb1wL-cf8F15A4O7g8ixlrUYDV-GM-RIspQ5yUDp6NhVRCW7054nLvhyYYQIxiT5X1vKKA4QYLbSvcEMY1GxLUkSlassJRrqA8djucdpK5e9evGzN7knqQ3HR8arTLe8Ah6HrcznN_xbQ_UOvAvfLT8Sk7M3pIIUfEZhOtFyYtph4tJOmkJBsvU3yIBRlLb9k9Z4BhqCBftvQalIZ7RYIGJIQW6vX_fUQFKHI3-FjPkFXT3uOEzGr1LNyhHM5t31r525rZeuem5co1bXFiDaGBaRJbdNCMCxoNaM6e9CqzVcoupFW_u1jyPokFwIDLXrZtAzEn8RSBHA4QKVXg
X-Forwarded-For: 192.168.23.3
Request-ID: 5da118ce-29ef-4d86-81a4-2990ec1471fa
Content-Length: 0
Host: qa.mul.secure2.greendot.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_181)

Sample Response Body

{
   "transfer": {
	"transferId": "046D4980-6428-4CE4-9476-4755564F8517",
	"transferStatus": "Completed",
	"transactionDate": "Completed", 
	"currency": "USD",
	"transactionAmount": "5.00", 
	"totalFeeAmount": "0.0", 
	"totalTransactionAmount": "5.00", 
   }
}
{
   "responseDetails": [
       {
	  "code": 0,
	  "subCode": 0,
	  "description": "string",
	  "url": "http://tbd"
       }
   ]
}

Webhook Transfer Statuses

To notify a partner the result of a transfer, the GFT processor triggers transfer webhooks.

API Call Structure

POST https://yourendpoint.yourcompany.com/events/SinglePhaseTransfer

Webhook status types include:

  • Completed - The transfer was successful.
  • Failed - A system error occurred.
  • Declined - The transfer was declined for one of the following reasons:
    • The account was not eligible for transfer activity.
    • The transfer request exceeded the transfer limit.
    • The transfer was rejected due to fraud (OFAC).
    • The transfer request was for less than the minimum transaction amount.

A sample of each type follows.

Sample Completed Transfer

{
   "accounts": [
	{
	   "accountIdentifier": "c63ff033-7df4-4bdf-a5aa-d8d1dfc4a05d",
	   "events": [
	{
	   "eventIdentifier": "125d5986-4c07-4ab6-9c66-de3053e688a1",
	   "eventType": "singlePhaseTransfer",
	   "eventDateTime": "2022-03-14T17:10:08.129Z",
	   "singlePhaseTransfer": [
		{
		   "transferIdentifier": "DBC79BB6-40D9-A63C-B69B-C7DBD9403CA6",
		   "transactionAmount": 5.0,
		   "transferStatus": " Completed",
		   "transferDateTime": "2022-03-11T23:13:13Z",
		   "response": {
		      "code": "0",
		      "subCode": "0",
		      "description": "success"
	        }
  	      }
	    ]
          }
        ]
      }
    ]
  }

Sample Failed Transfer

{
   "accounts": [
	{
	   "accountIdentifier": "c63ff033-7df4-4bdf-a5aa-d8d1dfc4a05d",
	   "events": [
		{
		   "eventIdentifier": "125d5986-4c07-4ab6-9c66-de3053e688a1",
		   "eventType": "singlePhaseTransfer",
		   "eventDateTime": "2022-03-14T17:10:08.129Z",
		   "singlePhaseTransfer": [
		   {
		      "transferIdentifier": "DBC79BB6-40D9-A63C-B69B-C7DBD9403CA6",
		      "transactionAmount": 5.0,
		      "transferStatus": "failed",
		      "transferDateTime": "2022-03-11T23:13:13Z",
		      "response": {
		          "code": "4200",
			  "subCode": "948",
			  "description": " InvalidTransferType"
		     }
	          }
	       ]
	     }
	  ]
       }
    ]
 }

Sample Declined Transfer

{
   "accounts": [
	{
	   "accountIdentifier": "c63ff033-7df4-4bdf-a5aa-d8d1dfc4a05d",
	   "events": [
	{
	   "eventIdentifier": "125d5986-4c07-4ab6-9c66-de3053e688a1",
	   "eventType": "singlePhaseTransfer",
	   "eventDateTime": "2022-03-14T17:10:08.129Z",
	   "singlePhaseTransfer": [
	   {
	      "transferIdentifier": "DBC79BB6-40D9-A63C-B69B-C7DBD9403CA6",
	      "transactionAmount": 5.0,
	      "transferStatus": "declined",
	      " transferDateTime": "2022-03-11T23:13:13Z",
	      "response": {
	         "code": "4240",
		 "subCode": "1540",
	         "description": "Consumers monthly transaction limit reached"
	      }
	    }
	  ]
	}
      ]
    }
  ]
}

Realtime API Response Codes

Response Code DescriptionResponse CodeResponse Sub-Code DescriptionResponse Sub-CodeHTTP Status Code
ValidationFailed4200Missing first name900400
ValidationFailed4200Missing last name901400
ValidationFailed4200Invalid first name value was specified906400
ValidationFailed4200Invalid last name value was specified907400
ValidationFailed4200Invalid ZipCode910400
ValidationFailed4200Invalid Address Line1911400
ValidationFailed4200Invalid Address Line2912400
ValidationFailed4200Invalid State913400
ValidationFailed4200Invalid City914400
ValidationFailed4200Missing Program Code916400
ValidationFailed4200Missing Account number917400
ValidationFailed4200Missing Expiry Month918400
ValidationFailed4200Missing Expiry Year919400
ValidationFailed4200Invalid Account Number921400
ValidationFailed4200Invalid Transfer Id924400
ValidationFailed4200Missing Transfer Type925400
ValidationFailed4200Missing Source Link Id927400
ValidationFailed4200Invalid Currency929400
ValidationFailed4200Invalid Transaction Description930400
ValidationFailed4200Invalid CVV931400
ValidationFailed4200Invalid Expiry Year933400
ValidationFailed4200Invalid Expiry Month934400
ValidationFailed4200Invalid Transfer Type935400
ValidationFailed4200Invalid Source Link Id938400
ValidationFailed4200Invalid Transaction Amount940400
ValidationFailed4200Invalid Program Code943400
ValidationFailed350X-GD-Request ID must be a GUID400
ValidationFailed200Missing Request Id400
ValidationFailed4200Invalid Initiator948400
ValidationFailed4200Missing Currency949400
ValidationFailed4200System Error - Business account status is pending966400
ValidationFailed4200Invalid Target Customer Identifier975400
ValidationFailed4200Missing Transfer Route994400
ValidationFailed4200Missing Source Transfer Endpoint995400
ValidationFailed4200Missing Target Transfer Endpoint996400
ValidationFailed4200Missing CardInfo997400
ValidationFailed4200Missing CustomerInfo998400
ValidationFailed4200Missing Target Customer Identifier974400
Transfer id exists4202Record already exists1502200
OperationFailed4214SystemError1514555
Success0Success0201

Webhook Transfer Status Codes

MessageResponse CodeSub CodeDescriptionTransaction Status
Success00SuccessCompleted
ValidationFailed4200900Missing first nameFailed
ValidationFailed4200901Missing last nameFailed
ValidationFailed4200903Missing ZipCode codeFailed
ValidationFailed4200906Invalid first name value was specifiedFailed
ValidationFailed4200907Invalid last name value was specifiedFailed
ValidationFailed4200910Invalid ZipCodeFailed
ValidationFailed4200911Invalid Address Line1Failed
ValidationFailed4200912Invalid Address Line2Failed
ValidationFailed4200913Invalid StateFailed
ValidationFailed4200914Invalid CityFailed
ValidationFailed4200915Invalid CountryFailed
ValidationFailed4200916Missing Program CodeFailed
ValidationFailed4200917Missing Account numberFailed
ValidationFailed4200918Missing Expiry MonthFailed
ValidationFailed4200919Missing Expiry YearFailed
ValidationFailed4200921Invalid Account NumberFailed
ValidationFailed4200924Invalid Transfer IdFailed
ValidationFailed4200925Missing Transfer TypeFailed
ValidationFailed4200927Missing Source Link IdFailed
ValidationFailed4200929Invalid CurrencyFailed
ValidationFailed4200930Invalid Transaction DescriptionFailed
ValidationFailed4200931Invalid CVVFailed
ValidationFailed4200933Invalid Expiry YearFailed
ValidationFailed4200934Invalid Expiry MonthFailed
ValidationFailed4200935Invalid Transfer TypeFailed
ValidationFailed4200938Invalid Source Link IdFailed
ValidationFailed4200940Invalid Transaction AmountFailed
ValidationFailed4200943Invalid Program CodeFailed
ValidationFailed4200948Invalid InitiatorFailed
ValidationFailed4200949Missing CurrencyFailed
ValidationFailed4200952System Error - Missing Transaction ReferenceFailed
ValidationFailed4200953System Error - Invalid Transaction ReferenceFailed
ValidationFailed4200954System Error - Missing Sender User Profile DetailsFailed
ValidationFailed4200955System Error - Missing Sender Account DetailsFailed
ValidationFailed4200960System Error - Invalid Account IdentifierFailed
ValidationFailed4200962System Error - Transaction amount is less than Fee amountFailed
ValidationFailed4200965TransferId already exist with different partner. Please try with new TransferIdFailed
ValidationFailed4200966System Error - Business account status is pendingFailed
BusinessRuleFailure4200971Transaction amount exceeds per transaction limitDeclined
ValidationFailed4200974Missing Target Customer IdentifierFailed
ValidationFailed4200975Invalid Target Customer IdentifierFailed
BusinessRuleFailure4200976Transaction exceeds per transaction limit countDeclined
BusinessRuleFailure4200977Transaction amount exceeds daily limitDeclined
BusinessRuleFailure4200978Transaction exceeds daily limit countDeclined
BusinessRuleFailure4200979Transaction amount exceeds weekly limitDeclined
BusinessRuleFailure4200980Transaction exceeds weekly limit countDeclined
BusinessRuleFailure4200981Transaction amount exceeds monthly limitDeclined
BusinessRuleFailure4200982Transaction exceeds monthly limit countDeclined
ValidationFailed4200983System Error - Missing ProcessorFailed
ValidationFailed4200984System Error - Invalid ProcessorFailed
ValidationFailed4200985Unable to verify Customer OFAC at this time. Please try againFailed
ValidationFailed4200986Invalid RequestFailed
Transaction Failed4200987Account Not EligibleFailed
Transaction Failed4200989Customer Is OFAC blockedDeclined
Transaction Failed4200990Customer Is OFAC partial matchDeclined
ValidationFailed42001000System Error - Missing Receiver User Profile DetailsFailed
ValidationFailed42001001System Error - Missing Receiver Account DetailsFailed
ValidationFailed42001001System Error – Missing Receiver Account DetailsFailed
Transfer id exists42021502Record already existsWe will return the existing transfer record status:

- Pending
- Completed
- Failed
- Declined
OperationFailed42141514System ErrorFailed
MissingPaymentType42161516No Payment type configured for this partnerFailed
InvalidPaymentType42171517Payment type configured for this partner is not supportedFailed
NoPaymentProcessorConfigured42191519Cannot proceed transfer request - No Payment Processor is enabled for this partnerFailed
MissingPartnerConfiguration42201520Cannot proceed transfer request - Partner configuration is not availableFailed
AllPaymentProcessorDown42211521Cannot proceed transfer request - All the available Payment processors are downFailed
TransactionProcessingSuspended42221522Unauthorized access to Master Card SendFailed
Transaction Failed42231523No default account is defined for the consumerDeclined
Transaction Failed42241524Card type is not supported for merchantDeclined
Transaction Failed42251525Operation not allowedFailed
Transaction Failed42261526Country not supported for merchantFailed
Transaction Failed42271527Acquiring credential used for the funding transaction is no longer validFailed
Transaction Failed42291529Card declinedDeclined
Transaction Failed42301530Fraud detectedDeclined
Transaction Failed42311531Card expiredDeclined
Transaction Failed42321532Per transaction maximum amount limit reachedDeclined
Transaction Failed42331533Exceeded Daily Load AmountDeclined
Transaction Failed42341534Does Not Meet Per Transaction Load AmountDeclined
Transaction Failed42351535Exceeded Monthly Load AmountDeclined
AuthenticationFailed42361536Authentication FailedFailed
Account is not eligible42371537Partner has exceeded the daily limit configured in the systemDeclined
Account is not eligible42381538Per transaction maximum amount limit reachedDeclined
Account is not eligible42391539Amount is less than the minimum configured for the partnerDeclined
Account is not eligible42401540Consumers monthly transaction limit reachedDeclined
Account is not eligible42411541Per transaction maximum amount limit for the transaction typeDeclined
Account is not eligible42421542Amount is less than the minimum allowed for the transaction typeDeclined
Account is not eligible42431543Account Type not supported for the partnerDeclined
Account is not eligible42441544Partner not on boarded for the network to reach accountDeclined
Account is not eligible42451545Currency is not supported for the accountDeclined
Account is not eligible42461546Country is not supported for the accountDeclined
Declined42471547Transaction DeclinedDeclined
Failed42491549Transaction FailedFailed
Transaction Failed42501550Unauthorized access to Visa DirectFailed
Transaction Failed42521552Transaction Failed in BaaS due to System errorFailed
Declined42541554System Error-Duplicate adjustment identifierDeclined
Transaction Failed42551555BaaS Account is ClosedDeclined
Transaction Failed42561556BaaS Account is LockedDeclined
Transaction Failed42571557BaaS Account is PendingDeclined
Declined42581558System Error-Program code not foundDeclined
Transaction Failed42601560System Error-Invalid InputFailed
Transaction Failed42611561System Error-Missing input valueFailed
Transaction Failed42621562System Error-Duplicate valueFailed
Transaction Failed42651565Load Not AllowedDeclined
Transaction Failed42721572Invalid MerchantFailed
Transaction Failed42731573Visa Direct Limit ExceededDeclined
Transaction Failed42741574Transaction was rejected by VisaNet due to a message validation error.Failed