Developer API

Overview

Account API

Transfer API

Transfer API Overview

Funds movement is one of the core capabilities offered by Green Dot to its partners. Green Dot exposes this capability through a set of RESTFul Transfer API endpoints. This Transfer API can be used to move funds between Green Dot-managed accounts and to and from external accounts or services. These different funding sources and destinations are represented in the API as links, and methods are provided to add and verify new links and to create fund transfers between links.

The Transfer API also introduces the customer object, which represents the party authorizing a transfer. In some applications the partner and customer are synonymous while in other applications a partner maybe facilitating transactions on behalf of many customers. In the latter case, the customer object is a convenient container to track the funding links and transactions for a specific customer.

When using the Transfer API in conjunction with the Registration and Account APIs, a Green Dot Bank account holder does not need to create a customer object separate from their account. Instead, the customer’s AccountID can be used directly in the Transfer API or a proxy CustomerID can be retrieved from account details. See Green Dot Bank Account Holders for further details.

Authorization Header

The authorization header is in the format of

Authorization: Basic <base64 encoded <username>:<hashedPassword>>

where hashedPassword is plain text password hashed by SHA-1 (Secure Hash Algorithm 1) cryptographic hash function.

string hashedPassword;

using (var sha1 = new SHA1CryptoServiceProvider())

 {

  hashedPassword = Convert.ToBase64String(sha1.ComputeHash(Encoding.UTF8.GetBytes(password)));

 {

string encodedAuthentication = Convert.ToBase64String((Encoding.ASCII.GetBytes(apiUsername + ":" + hashedPassword)));

Request Headers

Standard Headers

Custom Headers

Response Headers

Standard Headers

Custom Headers

How the Transfer API Works

Transferring funds between links largely consists of four steps: Creating a customer profile (or retrieving an existing profile), creating a source and/or destination funding link, and creating a transfer to move funds between the selected source and destination links.

  1. POST /customers/{CustomerID} Creates a profile for a customer. The customer will be required to go through Green Dot’s verification process before initiating further API calls.
    Status Description
    Unverified The customer verification is pending and the customer cannot initiate transfer requests till such time the customer has been verified. For Future use.
    Verified The customer has been verified and the customer can initiate transfer requests. This is the status that we will return for all successful POST requests.
    FailedVerification The customer verification failed. Customer cannot initiate transfer requests. See accompanying response codes.
    OFACMatch The customer verification failed due to OFAC hit.

    Request

    Field Type Format Required Description
    firstname String Max 25 characters Yes Customer’s first name
    lastname String Max 25 characters Yes Customer’s last name
    Field Type Format Required Description
    email String Max 255 characters Yes Customer’s verified Email address
    phonenumber String Exactly 10 characters No Customer’s verified Phone Number
    dateofbirth String Max 10 characters Conditional Date of birth in valid format
    Ex: MM-DD-YYYY
    MM-DD-YY
    MM/DD/YYYY
    MM/DD/YY
    socialsecuritynumber String Exactly 9 characters No The Social Security Number of the customer
    address1 String Max 255 characters No Address Line 1
    address2 String Max 255 characters No Address Line 2
    city String Max 55 characters No City of the customer
    state String Max 2 characters No Abbreviation of the State
    Ex: CA, OH
    zipcode String Max 5 characters No Zip Code of the customer
    Ex: 91017

    Response Object

    If successful, a customerid will be returned to the partner.

    • customerid: If a CustomerID is not provided by the partner in the POST request (Path Parameter), Green Dot will generate a unique CustomerID for this transfer
    • customeruri: The Customer URL to be referenced in transfer requests
    • status: See the status table above
    • responsecode: See the response code & description table below
    • responsemessage: See the response code & description table below
    • responsedate: The response date and time

    POST Request

    {

     “firstname”:  “new12145”,

     “lastname”:  “user1214”,

     “email”:  “ab@greendot.com”,

     “dateofbirth”:  “01/14/78”,

     “socialsecuritynumber”:  “555123456”,

     “address1”:  “123 Main St”,

     “address2”:  “Apt 51”,

     “city”:  “Pasadena”,

     “state”:  “CA”,

     “zipcode”:  “91017”

    }

    Success

    {

     “customerid”:  “ada9a77f-3c8d-4400-a531-9ce973db339f”,

     “customeruri”:  “https://partners.greendotonline.com/customers/ada9a77f-3c8d-4400-a531-9ce973db339f”,

     “status”:  “verified”,

     “responsecode”:  “0”,

     “responsemessage”:  “Success”,

     “responsedetail”: {

      “responsedetailcode”:  “0”,

      “responsedetaildescription”:  “Success”

     }

    }

    Failure (OFAC Match)

    {

     “customerid”:  “e7310e3c-a8b4-49bc-b3e0-8b2150e5cd15”,

     “customeruri”:  “https://partners.greendotonline.com/customers/e7310e3c-a8b4-49bc-b3e0-8b2150e5cd15”,

     “status”:  “OFACMatch”,

     “responsecode”:  “200”,

     “responsemessage”:  “Failed OFAC Verification”,

     “responsedetail”: {

      “responsedetailcode”:  “5030”,

      “responsedetaildescription”:  “Customer Verification Failed”

     }

    }

  2. GET /customers/{customerid}/

    Request

    None

    Response Object

    • Customer: Complex object containing the customer attributes/properties
      •  customerid: Unique ID provided by the partner or generated by Green Dot
      •  customeruri: The customer URI referenced in transfer requests
      •  firstname: First Name of the customer
      •  lastname: Last Name of the customer
      •  isactive: indicates if customer is active or blocked
      •  email: Email address of the customer
      •  phonenumber: Phone number of the customer
      •  partnerprogramidentifier: partner program identifier associated with the customer
      •  linkid : profile id/link id, if any generated by Disbursement Platform
      •  status: customer verification status
    • responsecode: See the response code & description table below
    • responsemessage: See the response code & description table below
    • responsedate: The response date and time

    GET Request

    /customers/950e4868-9f51-4a08-96a7-fcad96c4458e

    Success

    {

     “customerid”:  “950e4868-9f51-4a08-96a7-fcad96c4458e”,

     “customeruri”:  “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e”,

     “firstname”:  “john”,

     “lastname”:  “doe”,

     “isactive”:  “true”,

     “email”:  “john.doe@gmail.com”,

     “phonenumber”:  “4085551234”,

     “partnerprogramidentifier”:  “GBCashWithdrawal”,

     “linkid”:  “950e4868-9f51-4a08-96a7-fcad96c4458e”,

     “status”:  “verified”

     },

     “responsecode”:  “0”,

     “responsemessage”:  “Success”,

     “responsedate”:  “2015-10-02T09:00:000Z”

    }

  3. POST /customers/{customerid}/links/type/{fundingtype}
  4. After creating a customer profile, create links to external accounts so they can be used as funding sources or destinations for transfers . The CustomerID and the type of account are passed to the API as Path parameters. The FundingType can be any one of the following values: ACH, Cash, Card (internal to Green DOT ONLY), BankCards (for Debit Cards) GDAccounts.

    Shortcut Links For Green Dot Bank Accounts

    For convenience, certain transfers to and from Green Dot Bank accounts work immediately without any separate link-setup process:

    • Using any Green Dot Bank account associated with the customer as a funding source or destination.
    • Using any Green Dot Bank account with known a AccountID as a destination

    For these types of transfers, a LinkURI can be constructed directly and used to create a transfer object. Follow the form: <base url /customers/{customerid}/links/GDAccounts/<accountID>

    The links can be in any of the following status:

    Status Description
    Pending The link creation is pending verification and the customer cannot initiate transfer requests using this link till such time the link has been verified. For Future use.
    Verified The link has been verified and the customer can initiate transfer requests for this link. This is the status that we will return for all successful POST requests.
    FailedVerification The link verification failed. Customer cannot initiate transfer requests. See accompanying response codes.
  5. Initiate a transfer with POST /transfers/ using the source and destination links.
  6. If the customer holds a Green Dot Bank account, some of these steps are skipped or simplified.

POST /customers/{customerid}/links/type/ach

Request

Field Type Format Required Description
accountnumber String Max 50 characters Yes Account number of the source
Field Type Format Required Description
destination entity
routingnumber String Exactly 9 characters Yes Routing number of the source or destination entity/td>
accounttype String Max 10 characters Yes Account type of the recipient account. Allowed values: Savings OR Checking
socialsecuritynumber String Exactly 9 characters No The Social Security Number of the customer
accountholdername String Max 50 characters Yes “First Name Last Name” of the account holder or beneficiary.
accountname String Max 50 characters No Name of the account

Response Object

POST Request

{

 “accountnumber”:  “008340874021”,

 “routingnumber”:  “127398290”,

 “accounttype”:  “Savings”,

 “accountholdername”:  “John Doe”,

 “accountname”:  “my bank”

}

Success

{

 “linkid”:  “11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

 “linkuri”:  “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e /links/ach/11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

 “status”:  “Pending”,

 “fundsavailability”:  “TWO_TO_FIVE_BUSINESS_DAYS”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

POST /customers/{customerid}/links/type/moneypak

Request

Field Type Format Required Description
pin String Max 50 characters Yes Pin number of the source MoneyPak

Response Object

POST Request

/customers/bdef994c-0446-4a41-9b39-f0225da7b4e1/links/type/moneypak

{

 “pin”:  “123123123123”,

}

Success

{

 “linkid”:  “fc7d97c7-5942-4e93-8678-ded0f095b1b7”,

 “linkuri”:  “https://partners.greendotonline.com/customers/bdef994c-0446-4a41-9b39-f0225da7b4e1/links/moneypak/d22e8e53-2c9d-46d0-b553-bfa5f3d42247”,

 “status”:  “Pending”,

 “fundsavailability”:  “TWO_TO_FIVE_BUSINESS_DAYS”,

 “responsecode”:  “0k”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

POST /customers/{customerid}/links/type/bankcards

Request

Field Type Format Required Description
firstname String Max 25 characters Yes Card holder's first name
middlename String Max 25 characters No Card holder's middle name
lastname String Max 25 characters Yes Card holder’s last name
accountnumber String Max 20 characters Yes The pan number of the source or destination debit/prepaid card
expirymonth String Max 2 characters Yes MM (01 for Jan, 12 for Dec)
expiryyear String Max 4 characters Yes YYYY (Ex: 2016)
nickname String Max 30 characters No The nick name to associate with the link
address1 String Max 30 characters No Address Line 1
address2 String Max 255 characters No Address Line 2
city String Max 55 characters No City name
state String Max 2 characters No Abbreviation of the State
Ex: CA, OH
country String Max 3 characters No ISO 3166-1 alpha-3 Country Code
Ex: CA, OH
postalcode String Max 50 characters No Postal Code of the address

Response Object

POST Request

/customers/bdef994c-0446-4a41-9b39-f0225da7b4e1/links/type/bankcards

{

 “firstname”:  “John”,

 “middlename”:  “Jacob”,

 “lastname”:  “Doe”,

 “accountnumber”:  “5102589999999970”,

 “expirymonth”:  “12”,

 “expiryyear”:  “2020”,

 “nickname”:  “my new card”,

 “address1”:  “3465 E Foothill Blvd”,

 “address2”:  “ste 100”,

 “city”:  “Pasadena”,

 “state”:  “CA”,

 “country”:  “USA”,

 “postalcode”:  “91107”

}

Success

{

 “linkid”:  “07ea72d8-d4c0-4a2f-a854-8e59b3a7d5e8”,

 “linkuri”:  “https://partners.greendotonline.com/customers/bdef994c-0446-4a41-9b39-f0225da7b4e1/links/bankcards/07ea72d8-d4c0-4a2f-a854-8e59b3a7d5e8”,

 “status”:  “Verified”,

 “fundsavailability”:  “IMMEDIATE”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

POST Request

/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/card

{

 “accountoken”:  “b3795dbd-881b-4239-a0fa-d8b67d986c43”,

 “isgdn”:  “true”,

 “last4digits”:  “1234”,

 “nickname”:  “My Card”

}

Success

{

 “linkid”:  “b3795dbd-881b-4239-a0fa-d8b67d986c43”,

 “linkuri”:  “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/card/8582ec1a-b770-4744-a785-619a07267a67”,

 “status”:  “Verified”,

 “fundsavailability”:  “IMMEDIATE”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

POST /customers/{customerid}/links/type/cash

Request

Field Type Format Required Description
firstname String Max 25 characters Yes The first name of the person that will claim/remit cash at the retailer
lastname String Max 25 characters Yes The last name of the person that will claim/remit cash at the retailer
email String Max 255 characters Yes The email address of the person that will claim/remit cash at the retailer
phone String Exactly 10 characters No The Phone number of the person that will claim/remit cash at the retailer
dateofbirth String Max 10 characters Yes Date of birth in the format MM-DD-YYYY
ssn String Exactly 9 characters Yes The Social Security Number of the person that will claim/remit cash at the retailer
identificationid String Max 25 characters No The ID of the person that will claim/remit cash at the retailer
identificationtype String Max 25 characters No The type of ID presented by the person that will claim/remit cash at the retailer. Valid values 1,2 etc., 1= Driving License, 2 = State ID
identificationissuedby String Max 25 characters No Agency that issued the identification
identificationexpirydate String Max 10 characters No Date the Identification expires. MM-DD-YYYY
address String Max 255 characters No Address details of the person that will claim/remit cash at the retailer
city String Max 25 characters No City Name
state String Exactly 2 characters No State Code
zipcode String Max 10 characters No Zip code/Postal code

Response Object

POST Request

/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/cash

{

 “firstname”:  “Jack”,

 “lastname”:  “Smith”,

 “accountnumber”:  “5102589999999970”,

 “email”:  “jacksmith@gmail.com”,

 “phonenumber”:  “626-123-5555”,

 “ssn”:  “555123456”,

 “identificationid”:  “CA093283”,

 “identificationtype”:  “1”,

 “identificationexpirydate”:  “identificationexpirydate”,

 “address”:  “123 Main St”,

 “city”:  “Eureka”,

 “state”:  “CA”

}

Success

{

 “linkid”:  “0738054c-a715-4c90-af4c-ad99bae91abc”,

 “linkuri”:  “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/cash/0738054c-a715-4c90-af4c-ad99bae91abc”,

 “status”:  “Verified”,

 “fundsavailability”:  “IMMEDIATE”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

GET /customers/{customerid}/links

Request

None

Response Object

GET Request

/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links

Success

{

 “metadata”: {

   “resultset”: {

    “count”: “20”,

    “offset”: “0”,

    “limit”: “10”

  }

 },

 “links”: [

  {

    “linkid”: “36145748-4892-4ba6-b0d6-0efe6de55425”,

    “linkuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/cash/0738054c-a715-4c90-af4c-ad99bae91abc”,

    “changedate”: “2015-10-02T09:00:000Z”

  },

  {

    “linkid”: “11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

    “linkuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/ach/11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

    “changedate”: “2015-10-02T09:00:000Z”

   },

   {

    “linkid”: “fc7d97c7-5942-4e93-8678-ded0f095b1b7”,

    “linkuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/moneypak/fc7d97c7-5942-4e93-8678-ded0f095b1b7”,

    “changedate”: “2015-10-02T09:00:000Z”

   },

   {

    “linkid”: “0739196f-6d05-4dd2-b8c3-576cd997ce17”,

    “linkuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/gdaccounts/0739196f-6d05-4dd2-b8c3-576cd997ce17”,

    “changedate”: “2015-10-02T09:00:000Z”

   },

   {

    “linkid”: “8582ec1a-b770-4744-a785-619a07267a67”,

    “linkuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/card/8582ec1a-b770-4744-a785-619a07267a67”,

    “changedate”: “2015-10-02T09:00:000Z”

   },

  ]

}

POST /customers/{customerid}/links/type/ach/{linkid}/verify

Verify ACH accounts by confirming micro deposits

Request

Field Type Format Required Description
FirstDeposit String 9.99 Yes The first ACH trial deposit amount
SecondDeposit String 9.99 Yes The second ACH trial deposit amount

Response Object

POST Request

/cusotmers/11369ecd-d7fd-44ec-a056-bd977aef3fdc/links/type/ach/{linkid}/verify

{

 “firstdeposit”:  “0.47”,

 “seconddeposit”:  “0.12”

}

Success

{

 “linkid”:  “11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

 “linkuri”:  “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/ach/11369ecd-d7fd-44ec-a056-bd977aef3fdc”,

 “status”:  “Verified”,

 “fundsavailability”:  “IMMEDIATE”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

POST /transfers

Creates a transfer request to move funds from a source link to a destination link

The transfer status can be in one of the following three statuses. Status of a transfer can be retrieved by checking Status on the response object of GET /transfers/ TransferID

Status Description
Pending The transfer request is pending and the funds have NOT been deposited to the recipient
*Completed The transfer request is complete and the funds have been deposited to the recipient
Failed The transfer request failed and the funds have NOT been deposited to the recipient

Request

Field Type Format Required Description
transferobjects:sourceuri String Max 255 characters Yes The LinkURI of the funding source
transferobjects:destinationuri String Max 255 characters Yes The LinkURI of the destination
transaction:amount String Max 8 characters (99999.99) Yes Amount to be transferred
transaction:currency String Max 3 characters Yes USD – US Dollar
transaction:description String Max 250 characters No Optional transaction description
transaction:transactiondate String ISO 8601 Yes Transaction date time of transfer
Options Array Array of key/value pair No Array of Key/Value pair that partner can use to pass any special options for the transfer

Response Object

POST Request

/transfers

Create a transfer request from source to destination

{

  “transferobjects”: {

   “sourceuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e”,

   “destinationuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/gdaccounts/0739196f-6d05-4dd2-b8c3-576cd997ce17”

  },

 “transaction”: {

  “amount”: “25.00”,

  “currency”: “USD”,

  “description”: “Payroll”,

  “transactiondate”: “2015-11-16T15:20:000Z”

 },

 “options”: [

  {

    “key”: “Sample-Key1”,

    “value”: “Sample-Value1”

  },

  {

    “key”: “Sample-Key2”,

    “value”: “Sample-Value2”

  }

 ]

}

Success

{

 “transferid”:  “36145748-4892-4ba6-b0d6-0efe6de55425”,

 “status”:  “Pending”,

 “claimcode”:  “”,

 “claimexpirationdate”:  “”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

Validation Failure

{

 “responsecode”:  “80”,

 “responsemessage”:  “Limits Exceeded”,

 “responsedate”:  “2015-10-03T09:00:000Z”

 “responsedetail”:  {

   “responsedetailcode”:  “3020”,

   “responsedetaildescription”:  “Recipient Limit Exceeded”

  }

}

Error

{“error”: [

 {

 “errorcode”:  “1250”,

 “errordescription”:  “Invalid Currency Type was specified”,

 }

]}

POST /transfers/{transferid}

Creates a transfer request to move funds from a source link to a destination link using a provided transfer id.

The transfer status can be in one of the following three statuses. Status of a transfer can be retrieved by checking Status on the response object of GET /transfers/ TransferID

Status Description
Pending The transfer request is pending and the funds have NOT been deposited to the recipient
Completed The transfer request is complete and the funds have been deposited to the recipient
Failed The transfer request failed and the funds have NOT been deposited to the recipient

Request

Field Type Format Required Description
transferobjects:sourceuri String Max 255 characters Yes The LinkURI of the funding source
transferobjects:destinationuri String Max 255 characters Yes The LinkURI of the destination
transaction:amount String Max 8 characters (99999.99) Yes Amount to be transferred
transaction:currency String Max 3 characters Yes USD – US Dollar
transaction:description String Max 250 characters No Optional transaction description
transaction:transactiondate String ISO 8601 Yes Transaction date time of transfer
Options Array Array of key/value pair No Array of Key/Value pair that partner can use to pass any special options for the transfer

Response Object

POST Request

/transfers/36145748-4892-4ba6-b0d6-0efe6de55425

Create a transfer request from source to destination

{

  “transferobjects”: {

   “sourceuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e”,

   “destinationuri”: “https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/gdaccounts/0739196f-6d05-4dd2-b8c3-576cd997ce17”

  },

 “transaction”: {

  “amount”: “25.00”,

  “currency”: “USD”,

  “description”: “Payroll”,

  “transactiondate”: “2015-11-16T15:20:000Z”

 },

 “options”: [

  {

    “key”: “Sample-Key1”,

    “value”: “Sample-Value1”

  },

  {

    “key”: “Sample-Key2”,

    “value”: “Sample-Value2”

  }

 ]

}

Success

{

 “transferid”:  “36145748-4892-4ba6-b0d6-0efe6de55425”,

 “status”:  “Pending”,

 “claimcode”:  “”,

 “claimexpirationdate”:  “”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

Validation Failure

{

 “responsecode”:  “80”,

 “responsemessage”:  “Limits Exceeded”,

 “responsedate”:  “2015-10-03T09:00:000Z”

 “responsedetail”:  {

   “responsedetailcode”:  “3020”,

   “responsedetaildescription”:  “Recipient Limit Exceeded”

  }

}

Error

{“error”: [

 {

 “errorcode”:  “2101”,

 “errordescription”:  “Duplicate transfer request id”,

 }

]}

GET /transfers/{transferId}/

Request

None.

Response Object

1 Pending
2 Completed
3 Failed
4 Rejected
5 Cancelled

GET Request

/transfers/950e4868-9f51-4a08-96a7-fcad96c4458e

Success

{

 “partnerprogramidentifier”:  “TST_TPG_RFTRFND_GOBANKCRD”,

 “transferid”:  “bae21712-eb6b-4b41-812b-ed51a69a14fd”,

 “statuscode”:  “”2,

 “status”:  “”Completed,

 “statusreason”:  “TransferCompleted”,

 “claimcode”:  “a98356f6-458e-46c4-ada6-6a26f9a71ab8”,

 “claimcodeexpirationdate”:  “null”,

 “source”:  {

   “name”:  “Bin Zhang”,

   “id”:  “tst002”,

 },

 “destination”:  {

   “name”:  “”,

   “id”:  “d74a9606-577e-401f-8b19-1e3e1c7b1f79”,

 },

 “transaction”:  {

   “amount”:  “40”,

   “currency”:  “USD”,

   “description”:  “TST_TPG_RFTRFND_GOBANKCRD”,

   “transactiondate”:  “2015-10-29T04:13:05.11Z”,

   “lastmodifieddate”:  “2015-10-29T04:13:05.11Z”

 },

 “options”:  [

   {

     “key”:  “Sample-Key1”,

     “value”:  “Sample-Value1”,

   },

   {

     “key”:  “Sample-Key2”,

     “value”:  “Sample-Value2”,

   }

 ],

 “responsecode”:  0,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-11-03T20:07:39.670097Z”,

 “responsedetail”:  {

  “internalresponsedetailcode”:  0,

  “responsedetailcode”:  0,

  “responsedetaildescription”:  “”,

 }

}

GET /transfers/byreference/{requestid}/

Request

None.

Response Object

1 Pending
2 Completed
3 Failed
4 Rejected
5 Cancelled

GET Request

/transfers/byreference/950e4868-9f51-4a08-96a7-fcad96c4458e

Success

{

 “partnerprogramidentifier”:  “UberPayments”,

 “transferid”:  “9e0f583c-aa94-4031-bb9b-da3a754186ad”,

 “statuscode”:  “”2,

 “status”:  “”Completed,

 “statusreason”:  “TransferCompleted”,

 “claimcode”:  “89b3e2e3-0a92-436c-81bb-42368ec6442e”,

 “claimcodeexpirationdate”:  “null”,

 “source”:  {

   “name”:  “Valued Customer”,

   “id”:  “e3152d73-35ff-4977-81bc-cd0622f776e9”,

 },

 “destination”:  {

   “name”:  “”,

   “id”:  “86467690-a740-4f92-a893-0d382580be87”,

 },

 “transaction”:  {

   “amount”:  “20.1500”,

   “currency”:  “USD”,

   “description”:  “Transfer Unit Test”,

   “transactiondate”:  “2016-05-18T23:05:23.67Z”,

   “lastmodifieddate”:  “2016-05-18T23:05:23.67Z”

 },

 “options”:  null,

 “responsecode”:  0,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-11-03T20:07:39.670097Z”,

 “responsedetail”:  {

  “responsedetailcode”:  0,

  “responsedetaildescription”:  “Success”

 }

}

GET /transfers/customers/{customerid}/startdate/{startdate}/enddate/{enddate}

Description:

Gets the transfers for the given customer id for a given partner identifier. (max 25) . It can also return with the filter of start and end date.

Request

Response Object

1 Pending
2 Completed
3 Failed
4 Rejected
5 Cancelled

GET Request

/transfers/customers/950e4868-9f51-4a08-96a7-fcad96c4458e

Success

{

 “partnerprogramidentifier”:  “TST_TPG_RFTRFND_GOBANKCRD”,

 “customerid”:  “bae21712-eb6b-4b41-812b-ed51a69a14fd”,

 “statuscode”:  “”2,

 “status”:  “”Completed,

 “statusreason”:  “TransferCompleted”,

 “claimcode”:  “a98356f6-458e-46c4-ada6-6a26f9a71ab8”,

 “claimcodeexpirationdate”:  “null”,

 “source”:  {

   “name”:  “Bin Zhang”,

   “id”:  “tst002”,

 },

 “destination”:  {

   “name”:  “”,

   “id”:  “d74a9606-577e-401f-8b19-1e3e1c7b1f79”,

 },

 “transaction”:  {

   “amount”:  “40”,

   “currency”:  “USD”,

   “description”:  “TST_TPG_RFTRFND_GOBANKCRD”,

   “transactiondate”:  “2015-10-29T04:13:05.11Z”,

   “lastmodifieddate”:  “2015-10-29T04:13:05.11Z”

 },

 “responsecode”:  0,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-11-03T20:07:39.670097Z”,

 “responsedetail”:  {

  “internalresponsedetailcode”:  0,

  “responsedetailcode”:  0,

  “responsedetaildescription”:  “”

 }

}

POST /transfers/confirm/{transferid}

Confirm a transfer request previously initiated by the /transfers call.

Request

/transfers/confirm/36145748-4892-4ba6-b0d6-0efe6de55425

{

 “transaction”: {

  “claimecode”: “xxx”,

  “amount”: “40.00”,

  “status”: “Completed”,

  “storenumber”: “Wal-xxx”,

  “inquirytype”: “commit”

 },

 “recipient”: {

    “firstname”: “Jack”,

    “lastname”: “smith”,

    “streetaddress”: “123 Main St”,

    “city”: “Eureka”,

    “state”: “CA”,

    “zipcode”: “91010”,

    “dateofbirth”: “2015-10-29T04:13:05.11”,

    “socialsecuritynumber”: “555123456”,

    “identificationid”: “CA093283”,

    “identificationtype”: “1”,

    “identificationissuedby”: “CA”,

    “identificationexpirationdate”: “01-01-2019”

  }

}

Request

Field Type Format Required Description
Transferid String Max 255 characters Yes The unique identifier sent by GDN in D2C request. This should be part of URL
transaction: claimcode String Max 100 characters Yes Nothing but claim code
transaction:amount String Max 8 characters (99999.99) Yes Amount which is paid
transaction:status String Max 50 characters Yes status indicating the D2C transaction is Completed or Failed, which for the D2C scenario should always be Completed
transaction:storenumber String Max 25 characters Yes Retailer (Ex: Walmart) store # where transaction was completed
transaction:inquirytype String Max 25 characters No Indicating the inquiry type between store and TPG, i.e. Lookup, Validate or Commit. For the D2C scenario, it should always be Commit
recipient:firstname String Max 25 characters No The first name of the person who will claim/remit cash at the retailer
recipient:lastname String Max 25 characters No The last name of the person who will claim/remit cash at the retailer
recipient:socialsecuritynumber String Max 11 characters No The Social Security Number of the person that will claim/remit cash at the retailer
recipient:streetaddress String Max 255 characters No Address details of the person who will claim/remit cash at the retailer
recipient:city String Max 55 characters No City Name
recipient:state String Max 2 characters No State code
recipient:zipcode String Max 10 characters No Zipcode / postal code
recipient:dateofbirth String Max 10 characters No Date of birth in the format MM-DD-YYYY
recipient: identificationid String Max 250 characters No Customer photo ID number
recipient: identificationissuedby String Max 100 characters No Agency that issued the identification
recipient: identificationtype String Max 50 characters No The type of ID presented by the person who will claim/remit cash at the retailer. Valid values 1,2 etc., 1= Driving License, 2 = State ID
recipient: identificationexpirydate String Max 10 characters No ADate the ID expires. MM-DD-YYYY

Note: Transaction:DateTime will be captured internally in GDN system to use the current date/time of when request is received as the Transaction Date/Time. So, Transaction:DateTime is not required in the input request.

Response Object

Success

{

 “transferid”:  “36145748-4892-4ba6-b0d6-0efe6de55425”,

 “status”:  “Completed”,

 “claimcode”:  “xxxxx”,

 “changedate”:  “2015-10-02T09:00:000Z”,

 “claimexpirationdate”:  2015-10-02T09:00:000Z“”,

 “responsecode”:  “0”,

 “responsemessage”:  “Success”,

 “responsedate”:  “2015-10-02T09:00:000Z”

}

Error

{“error”: [

 {

 “errorcode”:  “1310”,

 “errordescription”:  “Invalid TransferId”,

 }

]}

Additional methods are available to get information about customer and transfer records and facilitate the transfer process.

Verify ACH Account
POST /customers/{CustomerID}/links/type/ach/verify verifies an ACH account by confirming micro deposits.

Confirm Transfer
POST /transfers/confirm/{TransferID} confirms a transfer was initiated and retrieves its status.

Get Customer Information
GET /customers/{CustomerID} retrieves customer information associated with a CustomerID.

Get Customer Links
GET /customers/{CustomerID}/links retrieves existing links associated with a CustomerID.

Get Transfers by Customer
GET /transfer/{CustomerID}/transfers/ retrieves a list of transfers for the customer.

Green Dot Account Holders

If a customer holds a current Green Dot Bank account and the AccountID is known or can be retrieved, the AccountID may be used to initiate transfers. In such a case, it is not necessary to generate a CustomerID or customer link.