ACH Transfers Methods

ACH Transfers Methods

Making a Transfer

A simple workflow for making a transfer to an external bank account looks like:

  1. Make a POST /customers/{customerid} request as documented at POST /customers to create a new customer. If holding an existing account, retrieve its AccountID from the Registration API.
  2. Make a POST/customers/{customerid}/links/type/{fundingtype} request using CustomerID from the previous response to create a funding link. Make a second similar request to setup a destination link. If using a Green Dot bank account for either the source or destination, skip establishing that link.
  3. Make a POST/transfers/{transferid} request using CustomerID from the previous response to create a funding source.
  4. Make a POST/transfers/confirm/{transferId} request using TransferId from the previous response to confirm or void the associated Transfer. (This step is only used for a 2-phase commit or void Transfer Process).

POST /transfers/{transferId}

Creates a transfer request to move funds from a source link to a destination link. The transferId is optional. If transferId is not passed, the Disbursement Platform will create one. The partner generated transferid must be unique for a given partner program and meet the following format criteria:

  • Length = 6-40 and allowable characters include alphanumeric and , - _ ~

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

StatusDescription
PendingThe transfer request is pending, and the funds have NOT been deposited to the recipient.
CompletedThe transfer request is complete, and the funds have been deposited to the recipient.
FailedThe transfer request failed, and the funds have NOT been deposited to the recipient.
RejectedThe transfer request is rejected, and the funds have NOT been deposited to the recipient.

Request

FieldTypeFormatRequiredDescription
transferobjects:sourceuristringMax 255 charactersYesThe LinkURI of the funding source.
transferobjects:destinationuristringMax 255 charactersYesThe LinkURI of the destination.
transaction:amountstringMax 8 characters (99999.99)YesAmount to be transferred.
transaction:currencystringMax 3 charactersYesUSD - US Dollar.
transaction:descriptionstringMax 250 charactersNoOptional transaction description.
transaction:transactiondatestringISO 8601YesTransaction date time of transfer.
optionsstringArray of key/value pairNoArray of Key/Value pair that partner can use to pass any special options for the transfer.
retailer:retailerkeystringMax 5 charactersConditionalRetailer object is mandatory for POS transactions.

Retailer identifier for this transaction (Provided by Green Dot). This field is Mandatory if retailer complex object is passed with a non-null value.
retailer:storenumberstringMax 50 charactersNoStore number or Store ID of the retailer where the transaction was initiated.
retailer:terminalidstringMax 10 charactersNoRegister/Terminal ID of the POS system where the transaction was initiated.
retailer:statecodestringMax 2 charactersNoState where the transaction was initiated.
retailer:storenamestringMax 50 charactersNoStore where the transaction was initiated.

Response

  • transferid: The unique identifier for this transfer.
  • status: See the status table above.
  • claimcode: Optional. For Cash transactions, the recipient will use this claim code to claim cash at the register.
  • claimexpirationdate: Optional. For Cash transactions, the date and time the claim code expires.
  • fees: Complex object. See example below.
  • allowedamount: Maximum amount allowed for this transfer.
  • fundsavailability: Funds availability can conditionally be any one of the following:
    • IMMEDIATE
    • NEXT_BUSINESS_DAY
    • TWO_TO_FIVE_BUSINESS_DAYS
  • externalreferenceid: The transaction reference ID shared with the Card Issuer.
  • responsecode: Response code associated to the Transfer.
    • If 0 – Success, refer to transaction status to confirm is ‘Completed’ or ‘Pending.’
    • If not 0 – Success, it provides the code explaining why transaction failed.
  • responsemessage: Description of response code.
  • responsedate: The response date and time.
  • responsedetailcode: Detail code associated to Transfer Request.
  • responsedetailcodedescription: Detail description of detail code.

Request Sample

Creates 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"
      }
   ]
}

Response Sample (Success)

{
   "transferid":"a359722c-78a6-4034-b77a-a5745153f79b",
   "status":"Completed",
   "claimcode":"3f8a377d-c834-4a41-840a-db37a93f89c6",
   "claimexpirationdate":null,
   "fees":null,
   "allowedamount":null,
   "fundsavailability":"IMMEDIATE",
   "externalreferenceid":"710400478098",
   "responsecode":0,
   "responsemessage":"Success",
   "responsedate":"2017-04-14T23:35:23.7061123Z",
   "responsedetail":{
      "responsedetailcode":0,
      "responsedetaildescription":"Success"
    }
}

POST/transfers Request (ACH)

{
   "transferobjects":{
      "sourceuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e",
      "destinationuri":"https://partners.greendotonline.com/customers/950e4868-9f51-4a08-96a7-fcad96c4458e/links/950e4868-9f51-4a08-96a7-fcad96c4458e"
   },
   "transaction":{
      "amount":"350.00",
      "currency":"USD",
      "description":"ACH deposit to customer X",
      "transactiondate":"2015-11-16T15:20:000Z"
   },
   "retailer":null,
   "options":[
      {
         "key":"Sample-Key1",
         "value":"Sample-Value1"
      },
      {
         "key":"Sample-Key2",
         "value":"Sample-Value2"
      }
   ]
}

POST/transfers Response (ACH) (Success)

{
   "transferid":"a359722c-78a6-4034-b77a-a5745153f79b",
   "status":"Completed",
   "claimcode":"3f8a377d-c834-4a41-840a-db37a93f89c6",
   "claimexpirationdate":null,
   "fees":null,
   "allowedamount":null,
   "fundsavailability":"IMMEDIATE",
   "externalreferenceid":"710400478098",
   "responsecode":0,
   "responsemessage":"Success",
   "responsedate":"2017-04-14T23:35:23.7061123Z",
   "responsedetail":{
      "responsedetailcode":0,
      "responsedetaildescription":"Success"
   }
}