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

Field Datatype Required
(Y/N)
Format Description

Request-ID

string

Y

UUID

The request identifier (UUID format).

x--Remapped-Authorization

string

Y

JWT

In the form of “Bearer {JWT }”

Content-Type

string

Y

“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

Field Datatype Required
(Y/N)
Format Description

transferIdentifier

string

Y

GUID

If the transaction is initiated through the Transfers API, the transferIdentifier uniquely identifying the initiating transfer is included.

transferType

string

Y

Max 50 characters

Use disbursementExternal.

Initiator

string

N

Must be 36 characters

This 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.

transferdescription

string

N

Max 100 characters

The transaction description.

transferRoute

complex

Y

Contains the information for a POST transfer call involving a new source and new target.

transactionAmount

Decimal

Y

The transfer amount.

sourceTransferEndpoint

complex

Y

Represents the source of the funds.

transferEndpointType

string

Y

Max 50 characters

Use programFundingSource for disbursementExternal.

sourceTransferEndpoint. identifier

string

Y

Must be 36 characters

The accountIdentifer of the partner’s Disbursement Business account.

currency

string

Y

Must be 3 characters

If 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.

targetTransferEndpoint

complex

Y

Represents the target of the funds.

transferEndpointType

string

Y

Max 50 characters

targetTransferEndpoint. transferEndpointType as

“singlePhaseFunding”

targetTransferEndpoint. Identifier

GUID

Y

The External Card Identifier of the applicable account based on the transferEndpointType. For a Single Phase Commit, this will be the Payee Site ID.

encryptedCardData

Y

The encrypted card data. Refer to Encrypted Card Data Field Definitions.

encryptedUserData

Y

The 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

Field Required
(Y/N)
Description Format Values Allowed

cvv

N

Card verification value or security code.

3-4 digits

0-9

cardNumber

Y

Personal Account Number (PAN) on the customer card

0-9

expiration

Y

Card expiration date

MMYYYY

0-9

firstName

Y

Cardholder’s first name

2-35 Characters

a-z, A-Z, hyphen, space

lastName

Y

Cardholder’s last name

2-35 Characters

a-z, A-Z, hyphen, space

address1

Y

Customer address, line1

Max 255 characters

, a-z, A-Z, 0-9, hyphen, space, /, period

address2

N

Customer address, line 2

Max 255 characters

a-z, A-Z, 0-9, hyphen, space, /, period

city

Y

City where customer lives

Max 50 characters

a-z, A-Z, hyphen, space

state

Y

State where customer lives

Max 2 characters

A-Z, a-z

zipCode

Y

Customer zip code

Max 5 digits

0-9

Sample User Data Body

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

User Data Parameters

Field Required
(Y/N/C)
Description Format Values Allowed

firstName

Y

Cardholder’s first name

2-35 characters

a-z, A-Z, hyphen, space

lastName

Y

Cardholder’s last name

2-35 characters

a-z, A-Z, hyphen, space

dateOfBirth

C

User’s date of birth

YYYY-MM-DD

Conditional value. Must be between 1901 and current year.

zipCode

Y

User’s zip code

NNNNN

Must 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

Field Datatype Required
(Y/N)
Format Description

Request-ID

string

Y

UUID

The request identifier (UUID format).

x--Remapped-Authorization

string

Y

JWT

In the form of “Bearer {JWT }”

Content-Type

string

Y

“application/json”

URL Parameters

Field Datatype Required
(Y/N)
Format Description

externalAcctId

string

Y

GUID

Customer Payee Side ID.

transferId

string

Y

GUID

The 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

Message Response Code Sub Code Description Transaction Status

Success

0

0

Success

Completed

ValidationFailed

4200

900

Missing first name

Failed

ValidationFailed

4200

901

Missing last name

Failed

ValidationFailed

4200

903

Missing ZipCode code

Failed

ValidationFailed

4200

906

Invalid first name value was specified

Failed

ValidationFailed

4200

907

Invalid last name value was specified

Failed

ValidationFailed

4200

910

Invalid ZipCode

Failed

ValidationFailed

4200

911

Invalid Address Line1

Failed

ValidationFailed

4200

912

Invalid Address Line2

Failed

ValidationFailed

4200

913

Invalid State

Failed

ValidationFailed

4200

914

Invalid City

Failed

ValidationFailed

4200

915

Invalid Country

Failed

ValidationFailed

4200

916

Missing Program Code

Failed

ValidationFailed

4200

917

Missing Account number

Failed

ValidationFailed

4200

918

Missing Expiry Month

Failed

ValidationFailed

4200

919

Missing Expiry Year

Failed

ValidationFailed

4200

921

Invalid Account Number

Failed

ValidationFailed

4200

924

Invalid Transfer Id

Failed

ValidationFailed

4200

925

Missing Transfer Type

Failed

ValidationFailed

4200

927

Missing Source Link Id

Failed

ValidationFailed

4200

929

Invalid Currency

Failed

ValidationFailed

4200

930

Invalid Transaction Description

Failed

ValidationFailed

4200

931

Invalid CVV

Failed

ValidationFailed

4200

933

Invalid Expiry Year

Failed

ValidationFailed

4200

934

Invalid Expiry Month

Failed

ValidationFailed

4200

935

Invalid Transfer Type

Failed

ValidationFailed

4200

938

Invalid Source Link Id

Failed

ValidationFailed

4200

940

Invalid Transaction Amount

Failed

ValidationFailed

4200

943

Invalid Program Code

Failed

ValidationFailed

4200

948

Invalid Initiator

Failed

ValidationFailed

4200

949

Missing Currency

Failed

ValidationFailed

4200

952

System Error - Missing Transaction Reference

Failed

ValidationFailed

4200

953

System Error - Invalid Transaction Reference

Failed

ValidationFailed

4200

954

System Error - Missing Sender User Profile Details

Failed

ValidationFailed

4200

955

System Error - Missing Sender Account Details

Failed

ValidationFailed

4200

960

System Error - Invalid Account Identifier

Failed

ValidationFailed

4200

962

System Error - Transaction amount is less than Fee amount

Failed

ValidationFailed

4200

965

TransferId already exist with different partner. Please try with new TransferId

Failed

ValidationFailed

4200

966

System Error - Business account status is pending

Failed

BusinessRuleFailure

4200

971

Transaction amount exceeds per transaction limit

Declined

ValidationFailed

4200

974

Missing Target Customer Identifier

Failed

ValidationFailed

4200

975

Invalid Target Customer Identifier

Failed

BusinessRuleFailure

4200

976

Transaction exceeds per transaction limit count

Declined

BusinessRuleFailure

4200

977

Transaction amount exceeds daily limit

Declined

BusinessRuleFailure

4200

978

Transaction exceeds daily limit count

Declined

BusinessRuleFailure

4200

979

Transaction amount exceeds weekly limit

Declined

BusinessRuleFailure

4200

980

Transaction exceeds weekly limit count

Declined

BusinessRuleFailure

4200

981

Transaction amount exceeds monthly limit

Declined

BusinessRuleFailure

4200

982

Transaction exceeds monthly limit count

Declined

ValidationFailed

4200

983

System Error - Missing Processor

Failed

ValidationFailed

4200

984

System Error - Invalid Processor

Failed

ValidationFailed

4200

985

Unable to verify Customer OFAC at this time. Please try again

Failed

ValidationFailed

4200

986

Invalid Request

Failed

Transaction Failed

4200

987

Account Not Eligible

Failed

Transaction Failed

4200

989

Customer Is OFAC blocked

Declined

Transaction Failed

4200

990

Customer Is OFAC partial match

Declined

ValidationFailed

4200

1000

System Error - Missing Receiver User Profile Details

Failed

ValidationFailed

4200

1001

System Error - Missing Receiver Account Details

Failed

ValidationFailed

4200

1001

System Error – Missing Receiver Account Details

Failed

Transfer id exists

4202

1502

Record already exists

We will return the existing transfer record status:

  • Pending
  • Completed
  • Failed
  • Declined

OperationFailed

4214

1514

System Error

Failed

MissingPaymentType

4216

1516

No Payment type configured for this partner

Failed

InvalidPaymentType

4217

1517

Payment type configured for this partner is not supported

Failed

NoPaymentProcessorConfigured

4219

1519

Cannot proceed transfer request - No Payment Processor is enabled for this partner

Failed

MissingPartnerConfiguration

4220

1520

Cannot proceed transfer request - Partner configuration is not available

Failed

AllPaymentProcessorDown

4221

1521

Cannot proceed transfer request - All the available Payment processors are down

Failed

TransactionProcessingSuspended

4222

1522

Unauthorized access to Master Card Send

Failed

Transaction Failed

4223

1523

No default account is defined for the consumer

Declined

Transaction Failed

4224

1524

Card type is not supported for merchant

Declined

Transaction Failed

4225

1525

Operation not allowed

Failed

Transaction Failed

4226

1526

Country not supported for merchant

Failed

Transaction Failed

4227

1527

Acquiring credential used for the funding transaction is no longer valid

Failed

Transaction Failed

4229

1529

Card declined

Declined

Transaction Failed

4230

1530

Fraud detected

Declined

Transaction Failed

4231

1531

Card expired

Declined

Transaction Failed

4232

1532

Per transaction maximum amount limit reached

Declined

Transaction Failed

4233

1533

Exceeded Daily Load Amount

Declined

Transaction Failed

4234

1534

Does Not Meet Per Transaction Load Amount

Declined

Transaction Failed

4235

1535

Exceeded Monthly Load Amount

Declined

AuthenticationFailed

4236

1536

Authentication Failed

Failed

Account is not eligible

4237

1537

Partner has exceeded the daily limit configured in the system

Declined

Account is not eligible

4238

1538

Per transaction maximum amount limit reached

Declined

Account is not eligible

4239

1539

Amount is less than the minimum configured for the partner

Declined

Account is not eligible

4240

1540

Consumers monthly transaction limit reached

Declined

Account is not eligible

4241

1541

Per transaction maximum amount limit for the transaction type

Declined

Account is not eligible

4242

1542

Amount is less than the minimum allowed for the transaction type

Declined

Account is not eligible

4243

1543

Account Type not supported for the partner

Declined

Account is not eligible

4244

1544

Partner not on boarded for the network to reach account

Declined

Account is not eligible

4245

1545

Currency is not supported for the account

Declined

Account is not eligible

4246

1546

Country is not supported for the account

Declined

Declined

4247

1547

Transaction Declined

Declined

Failed

4249

1549

Transaction Failed

Failed

Transaction Failed

4250

1550

Unauthorized access to Visa Direct

Failed

Transaction Failed

4252

1552

Transaction Failed in BaaS due to System error

Failed

Declined

4254

1554

System Error-Duplicate adjustment identifier

Declined

Transaction Failed

4255

1555

BaaS Account is Closed

Declined

Transaction Failed

4256

1556

BaaS Account is Locked

Declined

Transaction Failed

4257

1557

BaaS Account is Pending

Declined

Declined

4258

1558

System Error-Program code not found

Declined

Transaction Failed

4260

1560

System Error-Invalid Input

Failed

Transaction Failed

4261

1561

System Error-Missing input value

Failed

Transaction Failed

4262

1562

System Error-Duplicate value

Failed

Transaction Failed

4265

1565

Load Not Allowed

Declined

Transaction Failed

4272

1572

Invalid Merchant

Failed

Transaction Failed

4273

1573

Visa Direct Limit Exceeded

Declined

Transaction Failed

4274

1574

Transaction was rejected by VisaNet due to a message validation error.

Failed