Bamboo Card
POST

Redeem payout

Send an eligible payout directly to a recipient's PayPal or Venmo account using a weblink returned by Get Order.

POST/api/Integration/v2/payout/redeem/{weblink}

Use this endpoint only after Get Order returns a payout URL in items[].cards[].cardCode for an eligible payout product.

Payout guide

Redeem payout submits a PayPal or Venmo payout for the weblink token returned by Get Order. PayPal and Venmo use the same endpoint; select the destination wallet in the request body.

Only the client that owns the underlying order can redeem the weblink. If the weblink belongs to another client or cannot be redeemed, Bamboo returns a generic failed-redemption response instead of revealing whether the link exists.

Use this endpoint from your server. Never expose Client Secrets, payout links, or full recipient identifiers in browser code, logs, or public repositories.

This endpoint requires Basic Auth using your API credentials.

Path parameter

The weblink token comes from the final path segment of a payout URL returned in Get Order.

ParameterTypeRequiredDescription
weblinkstringYesEncrypted payout weblink token extracted from items[].cards[].cardCode for an eligible payout product.

Encoding requirement

Preserve the token exactly

Base64 padding in the token must remain URL-encoded as %3D. Do not decode and re-encode the token in a way that turns %3D into %253D.

Request body

Send one wallet value and exactly one recipient identifier. The valid request alternatives are PayPal with recipientEmail, Venmo with recipientEmail, Venmo with recipientPhone, or Venmo with recipientHandle.

PayPal email request

{
  "wallet": "PayPal",
  "recipientEmail": "recipient@example.com"
}
FieldTypeRequiredDescription
wallet"PayPal" | "Venmo"YesSelects the payout wallet.
recipientEmailstringConditionalRecipient email address. Required for PayPal. Allowed for Venmo.
recipientPhonestringConditionalRecipient phone number. A leading + is optional, followed by 7 to 15 digits. Venmo only.
recipientHandlestringConditionalRecipient Venmo handle. A leading @ is optional. Use 5 to 30 letters, digits, underscores, or hyphens. Venmo only.

Recipient rules

1

Exactly one recipient field

Provide one and only one of recipientEmail, recipientPhone, or recipientHandle.

2

PayPal recipients

PayPal payouts accept recipientEmail only. Phone and handle values are validation errors for PayPal.

3

Venmo recipients

Venmo payouts accept email, phone, or handle, but still only one recipient identifier per request.

4

Recipient validation

Bamboo validates email, phone, and Venmo handle format before submitting the payout.

Successful responses

Bamboo returns 200 when the payout has completed and 202 when the payout has been submitted but is still processing.

200 OK

The payout completed.

{
  "transactionId": "fc894d78-e978-46c0-0748-08ded1b0af32",
  "payoutBatchId": "DZGTNDS9H3BWS",
  "isProcessing": false
}

202 Accepted

The payout was submitted and is still processing. Check the payout status endpoint while processing.

{
  "transactionId": "fc894d78-e978-46c0-0748-08ded1b0af32",
  "payoutBatchId": "DZGTNDS9H3BWS",
  "isProcessing": true
}
FieldTypeDescription
transactionIdstringBamboo payout transaction identifier returned for this weblink.
payoutBatchIdstringPayPal payout batch identifier. Use it to correlate with PayPal reporting.
isProcessingbooleantrue when the payout has been accepted but has not reached a final status.

Response handling

200 OK

Treat the payout as completed and store the returned transactionId and payoutBatchId for reconciliation.

202 Accepted

Store the identifiers and check Get payout status while the payout remains in processing.

Examples

Full request and response examples for this endpoint.

Example request

Use this full request as the primary reference for client-side implementation.

cURL - cURL
# Generate token: echo -n 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' | base64

curl --location 'https://api.bamboocardportal.com/api/Integration/v2/payout/redeem/Y1hqd1RiT1EvUXpYZXFtSmZ6dnZ0QjA%3D%3D' \
  --header 'Authorization: Basic YOUR_BASE64_TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
  "wallet": "PayPal",
  "recipientEmail": "recipient@example.com"
}'

Example response

Use this sample payload to validate parsing, field mapping, and downstream handling.

202 Accepted
JSON
{
  "transactionId": "fc894d78-e978-46c0-0748-08ded1b0af32",
  "payoutBatchId": "DZGTNDS9H3BWS",
  "isProcessing": true
}

Request examples

Use these request body alternatives with the same POST endpoint and weblink path value.

Venmo email

{
  "wallet": "Venmo",
  "recipientEmail": "recipient@example.com"
}

Venmo phone

{
  "wallet": "Venmo",
  "recipientPhone": "+14155550123"
}

Venmo handle

{
  "wallet": "Venmo",
  "recipientHandle": "@johndoe"
}

Error responses

The redeem endpoint returns validation errors for malformed requests and generic failures for links that cannot be redeemed.

StatusBodyCause
400 Bad Request"Request body is required."Missing request body.
400 Bad Request"A valid wallet (PayPal or Venmo) is required."wallet is missing or is not PayPal or Venmo.
400 Bad Request"Provide exactly one of recipient email, phone, or handle."Zero recipient fields or more than one recipient field was provided.
400 Bad Request"PayPal payouts support only a recipient email."wallet is PayPal and recipientPhone or recipientHandle was supplied.
400 Bad Request"Invalid recipient email address."Malformed email address.
400 Bad Request"Invalid recipient phone number."Malformed phone number.
400 Bad Request"Invalid recipient user handle."Malformed Venmo handle.
400 Bad Request"Weblink is disabled"The weblink has been manually disabled.
400 Bad Request"Payout weblink expired"The weblink has passed its expiration date.
400 Bad Request"Failed to redeem weblink"Weblink not found, wrong client ownership, payout rejected, or the card is in a failed state.
400 Bad Request"Recipient ID does not match"A previous attempt used a different recipient. Re-submit with the same recipient.
401 Unauthorized-Missing or invalid Authorization header.
429 Too Many Requests-A concurrent request is in progress for the same endpoint.

Operational notes

Use these rules to make payout redemption safe and repeatable.

Idempotency

Submitting the same weblink token again does not trigger a second payout. Bamboo returns the existing transactionId and payoutBatchId.

Recipient locking

After a payout attempt is associated with one recipient, a later attempt with a different recipient is rejected.

Sandbox

Sandbox accounts send payouts to PayPal's sandbox environment. No real money is transferred, and phone-recipient testing may have limitations.

Sensitive data

Treat payout links and recipient identifiers as sensitive. Avoid logging complete recipient data.

On this page

Try it out

Open the interactive API panel to test this endpoint with your own credentials.