POST
/
transactions
C#
using Gr4vy;
using Gr4vy.Models.Components;

var sdk = new Gr4vySDK(
    id: "mattilda",
    server: SDKConfig.Server.Sandbox,
    bearerAuthSource: Auth.WithToken(privateKey),
    merchantAccountId: "default"
);

var res = await sdk.Transactions.CreateAsync(transactionCreate: new TransactionCreate() {
    Amount = 1299,
    Currency = "EUR",
    Store = true,
    IsSubsequentPayment = true,
    MerchantInitiated = true,
    AsyncCapture = true,
    AccountFundingTransaction = true,
});

// handle response
{
  "type": "transaction",
  "id": "7099948d-7286-47e4-aad8-b68f7eb44591",
  "reconciliation_id": "default",
  "merchant_account_id": "default",
  "currency": "EUR",
  "amount": 1299,
  "status": "authorization_succeeded",
  "authorized_amount": 1299,
  "captured_amount": 1299,
  "refunded_amount": 1299,
  "country": "US",
  "external_identifier": "transaction-12345",
  "intent": "capture",
  "payment_method": {
    "type": "payment-method",
    "approval_url": "https://gr4vy.app/redirect/12345",
    "country": "US",
    "currency": "MXN",
    "details": {
      "bin": "<string>",
      "card_type": "credit",
      "card_issuer_name": "<string>"
    },
    "expiration_date": "12/30",
    "fingerprint": "20eb353620155d2b5fc864cc46a73ea77cb92c725238650839da1813fa987a17",
    "label": "1234",
    "last_replaced_at": "2013-07-16T19:23:00.000+00:00",
    "method": "card",
    "mode": "card",
    "scheme": "visa",
    "id": "852b951c-d7ea-4c98-b09e-4a1c9e97c077",
    "approval_target": "any",
    "external_identifier": "card-12345",
    "payment_account_reference": "V0010014629724763377327521982"
  },
  "method": "card",
  "instrument_type": "pan",
  "error_code": "missing_redirect_url",
  "payment_service": {
    "type": "payment-service",
    "id": "824ff064-7f4b-430b-9801-59aff90d013e",
    "payment_service_definition_id": "stripe-card",
    "method": "card",
    "display_name": "Stripe USA"
  },
  "pending_review": false,
  "buyer": {
    "type": "buyer",
    "id": "fe26475d-ec3e-4884-9553-f7356683f7f9",
    "display_name": "John Doe",
    "external_identifier": "buyer-12345",
    "billing_details": {
      "first_name": "John",
      "last_name": "Doe",
      "email_address": "john@example.com",
      "phone_number": "+1234567890",
      "address": {
        "city": "San Jose",
        "country": "US",
        "postal_code": "94560",
        "state": "California",
        "state_code": "US-CA",
        "house_number_or_name": "10",
        "line1": "Stafford Appartments",
        "line2": "29th Street",
        "organization": "Gr4vy"
      },
      "tax_id": {
        "value": "12345678931",
        "kind": "us.ein"
      }
    },
    "account_number": "<string>"
  },
  "raw_response_code": "E104",
  "raw_response_description": "Missing redirect URL",
  "shipping_details": {
    "first_name": "John",
    "last_name": "Doe",
    "email_address": "john@example.com",
    "phone_number": "+1234567890",
    "address": {
      "city": "San Jose",
      "country": "US",
      "postal_code": "94560",
      "state": "California",
      "state_code": "US-CA",
      "house_number_or_name": "10",
      "line1": "Stafford Appartments",
      "line2": "29th Street",
      "organization": "Gr4vy"
    },
    "id": "bf8c36ad-02d9-4904-b0f9-a230b149e341",
    "buyer_id": "fe26475d-ec3e-4884-9553-f7356683f7f9",
    "type": "shipping-details"
  },
  "checkout_session_id": "4137b1cf-39ac-42a8-bad6-1c680d5dab6b",
  "created_at": "2013-07-16T19:23:00.000+00:00",
  "updated_at": "2013-07-16T19:23:00.000+00:00",
  "auth_response_code": "00",
  "avs_response_code": "match",
  "cvv_response_code": "match",
  "anti_fraud_decision": "accept",
  "payment_source": "ecommerce",
  "merchant_initiated": true,
  "is_subsequent_payment": false,
  "cart_items": [
    {
      "name": "GoPro HD",
      "quantity": 2,
      "unit_amount": 1299,
      "discount_amount": 0,
      "tax_amount": 0,
      "external_identifier": "goprohd",
      "sku": "GPHD1078",
      "product_url": "https://example.com/catalog/go-pro-hd",
      "image_url": "https://example.com/images/go-pro-hd.jpg",
      "categories": [
        "camera",
        "travel",
        "gear"
      ],
      "product_type": "physical",
      "seller_country": "US"
    }
  ],
  "scheme_transaction_id": "123456789012345",
  "three_d_secure": {
    "version": "2.2.0",
    "status": "complete",
    "method": "challenge",
    "response_data": {
      "cavv": "3q2+78r+ur7erb7vyv66vv8=",
      "eci": "05",
      "version": "2.1.0",
      "directory_response": "C",
      "scheme": "visa",
      "authentication_response": "Y",
      "cavv_algorithm": "A",
      "xid": "12345"
    },
    "error_data": {
      "code": "305",
      "description": "Invalid ThreeDSCompInd",
      "detail": "The threeDSCompInd must be 'Y' when successful",
      "component": "C"
    }
  },
  "payment_service_transaction_id": "tx-12345",
  "additional_identifiers": {
    "payment_service_authorization_id": "auth-12345",
    "payment_service_capture_id": "capture-12345"
  },
  "metadata": {
    "cohort": "cohort-12345",
    "order": "order-12345"
  },
  "authorized_at": "2013-07-16T19:23:00.000+00:00",
  "captured_at": "2013-07-16T19:23:00.000+00:00",
  "voided_at": "2013-07-16T19:23:00.000+00:00",
  "approval_expires_at": "2013-07-16T19:23:00.000+00:00",
  "buyer_approval_timedout_at": "2013-07-16T19:23:00.000+00:00",
  "intent_outcome": "succeeded",
  "multi_tender": true,
  "merchant_advice_code": "02",
  "installment_count": 3
}
This endpoint requires the transactions.write scope.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

x-gr4vy-merchant-account-id
string | null

The ID of the merchant account to use for this request.

Examples:

"default"

idempotency-key
string | null

A unique key that identifies this request. Providing this header will make this an idempotent request. We recommend using V4 UUIDs, or another random string with enough entropy to avoid collisions.

Examples:

"request-12345"

X-Forwarded-For
string

The IP address to forward from the customer. Use this when calling our API from the server side to ensure the customer's address is passed to downstream services, rather than your server IP.

Example:

"192.168.0.2"

Body

application/json
amount
integer
required

The monetary amount for this transaction, in the smallest currency unit for the given currency, for example 1299 cents to create an authorization for $12.99. If the intent is set to capture, an amount greater than zero must be supplied. All gift card amounts are subtracted from this amount before the remainder is charged to the provided payment_method.

Required range: 0 <= x <= 99999999
Examples:

1299

currency
string
required

A supported ISO 4217 currency code. For redirect requests, this value must match the one specified for currency in payment_method.

Examples:

"EUR"

"GBP"

"MXN"

country
string | null

The 2-letter ISO code of the country where the transaction is processed. This is also used to filter the payment services that can process the transaction. If this value is provided for redirect requests and it's not null, it must match the one specified for country in payment_method. Otherwise, the value specified for country in payment_method will be assumed implicitly.

Examples:

"DE"

"GB"

"US"

payment_method
object | null

The optional payment method to use for this transaction. This field is required if no gift_cards have been added. Create a transaction with raw card details

buyer
object | null

Guest buyer details provided inline rather than creating a buyer resource beforehand and using the buyer_id or buyer_external_identifier keys. No buyer resource will be created on Gr4vy when used.

buyer_id
string<uuid> | null

The ID of the buyer to associate this payment method to. If this field is provided then the buyer_external_identifier field needs to be unset. If a stored payment method or gift card is provided, then the buyer for that payment method needs to match the buyer for this field.

Examples:

"fe26475d-ec3e-4884-9553-f7356683f7f9"

buyer_external_identifier
string | null

The external_identifier of the buyer to associate this payment method to. If this field is provided then the buyer_id field needs to be unset. If a stored payment method or gift card is provided, then the buyer for that payment method needs to match the buyer for this field.

Required string length: 1 - 200
Examples:

"buyer-12345"

external_identifier
string | null

An external identifier that can be used to match the transaction against your own records.

Required string length: 1 - 200
Examples:

"transaction-12345"

intent
enum<string>

Defines the intent of this API call. This determines the desired initial state of the transaction.

  • authorize - (Default) Optionally approves and then authorizes a transaction but does not capture the funds.
  • capture - Optionally approves and then authorizes and captures the funds of the transaction.
Available options:
authorize,
capture
store
boolean
default:false

Whether or not to also try and store the payment method with us so that it can be used again for future use. This is only supported for payment methods that support this feature. There are also a few restrictions on how the flag may be set:

  • The flag has to be set to true when the payment_source is set to recurring or installment, and merchant_initiated is set to false.
  • The flag has to be set to false (or not set) when using a previously vaulted payment method.
Examples:

true

three_d_secure_data
object | null

Pass through 3-D Secure data to support external 3-D Secure authorisation. If using an external 3-D Secure provider, you should not pass a redirect_url in the payment_method object for a transaction.

metadata
object | null

Any additional information about the transaction that you would like to store as key-value pairs. This data is passed to payment service providers that support it.

Examples:
{
"cohort": "cohort-12345",
"order": "order-12345"
}
is_subsequent_payment
boolean
default:false

Indicates whether the transaction represents a subsequent payment coming from a setup recurring payment. Please note there are some restrictions on how this flag may be used.

The flag can only be false (or not set) when the transaction meets one of the following criteria:

  • It is not merchant_initiated.
  • payment_source is set to card_on_file.

The flag can only be set to true when the transaction meets one of the following criteria:

  • It is not merchant_initiated.
  • payment_source is set to recurring or installment and merchant_initiated is set to true.
  • payment_source is set to card_on_file.
Examples:

true

merchant_initiated
boolean
default:false

Indicates whether the transaction was initiated by the merchant (true) or customer (false).

Examples:

true

payment_source
enum<string>

The use-case for the the transaction.

Available options:
ecommerce,
moto,
recurring,
installment,
card_on_file
cart_items
CartItem · object[] | null

An array of cart items that represents the line items of a transaction.

previous_scheme_transaction_id
string | null

A scheme's transaction identifier to use in connecting a merchant initiated transaction to a previous customer initiated transaction. If not provided, and a qualifying customer initiated transaction has been previously made with the stored payment method, then Gr4vy will populate this value with the identifier returned for that transaction. This field is also know as the Visa Transaction Identifier, or Mastercard Trace ID.

Required string length: 1 - 100
Examples:

"123456789012345"

browser_info
object | null

Information about the browser used by the buyer. This can be used by anti-fraud services. Merchant provided browser info

shipping_details_id
string<uuid> | null

The unique identifier of a set of shipping details stored for the buyer. If provided, the created transaction will include a copy of the details at the point of transaction creation; i.e. it will not be affected by later changes to the detail in the database.

Examples:

"bf8c36ad-02d9-4904-b0f9-a230b149e341"

async_capture
boolean
default:false

Whether to capture the transaction asynchronously.

  • When async_capture is false (default), the transaction is captured in the same request.
  • When async_capture is true, the transaction is automatically captured at a later time.

Redirect transactions are not affected by this flag. This flag can only be set to true when intent is set to capture.

Examples:

true

anti_fraud_fingerprint
string | null

This field represents the fingerprint data to be passed to the active anti-fraud service.

Examples:

"yGeBAFYgFmM="

payment_service_id
string<uuid> | null

The unique identifier of an existing payment service. When provided, the created transaction will be processed by the given payment service and any routing rules will be skipped.

Examples:

"fffd152a-9532-4087-9a4f-de58754210f0"

account_funding_transaction
boolean
default:false

Marks the transaction as an AFT. Requires the payment service to support this feature, and might recipient and buyer data

Examples:

true

allow_partial_authorization
boolean
default:false

Defines if the transaction will allow for a partial authorization.

recipient
object | null

The recipient of any account to account funding. For use with AFTs. Recipient of an account funding transaction

installment_count
integer | null

The number of installments a buyer is required to make.

Required range: 1 <= x <= 100

Response

Returns the created transaction.

A full transaction resource.

id
string<uuid>
required

The ID for the transaction.

Examples:

"7099948d-7286-47e4-aad8-b68f7eb44591"

reconciliation_id
string
required

The base62 encoded transaction ID. This represents a shorter version of this transaction's id which is sent to payment services, anti-fraud services, and other connectors. You can use this ID to reconcile a payment service's transaction against our system. This ID is sent instead of the transaction ID because not all services support 36 digit identifiers.

Examples:

"default"

merchant_account_id
string
required

The ID of the merchant account this transaction belongs to.

Examples:

"default"

currency
string
required

The currency code for this transaction.

Examples:

"EUR"

"GBP"

"MXN"

amount
integer
required

The total amount for this transaction across all funding sources including gift cards.

Examples:

1299

status
enum<string>
required

The status of the transaction for the payment_method. The status may change over time as asynchronous processing events occur.

Available options:
processing,
authorization_succeeded,
authorization_declined,
authorization_failed,
authorization_voided,
authorization_void_pending,
capture_succeeded,
capture_pending,
buyer_approval_pending
authorized_amount
integer
required

The amount for this transaction that has been authorized for the payment_method. This can be less than the amount if gift cards were used.

Examples:

1299

captured_amount
integer
required

The total amount captured for this transaction, in the smallest currency unit (for example, cents or pence). This can be the full value of the authorized_amount or less.

Examples:

1299

refunded_amount
integer
required

The total amount refunded for this transaction, in the smallest currency unit (for example, cents or pence). This can be the full value of the captured_amount or less.

Examples:

1299

intent
enum<string>
required

The original intent used when the transaction was created.

Available options:
authorize,
capture
created_at
string<date-time>
required

The date and time when the transaction was created, in ISO 8601 format.

Examples:

"2013-07-16T19:23:00.000+00:00"

updated_at
string<date-time>
required

The date and time when the transaction was last updated, in ISO 8601 format.

Examples:

"2013-07-16T19:23:00.000+00:00"

payment_source
enum<string>
required

The source of the transaction.

Available options:
ecommerce,
moto,
recurring,
installment,
card_on_file
merchant_initiated
boolean
required

Indicates whether the transaction was initiated by the merchant or the customer.

Examples:

true

is_subsequent_payment
boolean
required

Indicates whether the transaction represents a subsequent payment or an initial one.

Examples:

false

intent_outcome
enum<string>
required

The outcome of the original intent of a transaction. This allows you to understand if the intent of the transaction (e.g. capture or authorize) has been achieved when dealing with multiple payment instruments.

Available options:
pending,
succeeded,
failed
multi_tender
boolean
required

The outcome of the original intent of a transaction. This allows you to understand if the intent of the transaction (e.g. capture or authorize) has been achieved when dealing with multiple payment instruments.

Examples:

true

type
string
default:transaction

Always transaction.

Allowed value: "transaction"
Examples:

"transaction"

country
string | null

The 2-letter ISO 3166-1 alpha-2 country code for the transaction. Used to filter payment services for processing.

Examples:

"DE"

"GB"

"US"

external_identifier
string | null

An external identifier that can be used to match the transaction against your own records.

Required string length: 1 - 200
Examples:

"transaction-12345"

payment_method
object | null

The payment method used for this transaction.

method
enum<string> | null

The method used for the transaction.

Available options:
card,
oxxo,
spei,
pse,
tapi
Examples:

"card"

instrument_type
enum<string> | null

The name of the instrument used to process the transaction.

Available options:
pan,
card_token,
redirect,
redirect_token,
googlepay,
applepay,
network_token
Examples:

"pan"

error_code
string | null

The standardized error code set by Gr4vy.

Examples:

"missing_redirect_url"

payment_service
object | null

The payment service used for this transaction.

pending_review
boolean
default:false

Whether a manual anti fraud review is pending with an anti fraud service.

Examples:

false

buyer
object | null

The buyer used for this transaction.

raw_response_code
string | null

This is the response code received from the payment service. This can be set to any value and is not standardized across different payment services.

Examples:

"E104"

raw_response_description
string | null

This is the response description received from the payment service. This can be set to any value and is not standardized across different payment services.

Examples:

"Missing redirect URL"

shipping_details
object | null

The shipping details associated with the transaction.

checkout_session_id
string<uuid> | null

The identifier for the checkout session this transaction is associated with.

Examples:

"4137b1cf-39ac-42a8-bad6-1c680d5dab6b"

auth_response_code
string | null

This is the response description received from the processor.

Examples:

"00"

avs_response_code
enum<string> | null

The response code received from the payment service for the Address Verification Check (AVS). This code is mapped to a standardized Gr4vy AVS response code.

Available options:
match,
no_match,
partial_match_address,
partial_match_postcode,
unavailable
Examples:

"match"

cvv_response_code
enum<string> | null

The response code received from the payment service for the Card Verification Value (CVV). This code is mapped to a standardized Gr4vy CVV response code.

Available options:
match,
no_match,
unavailable,
not_provided
Examples:

"match"

anti_fraud_decision
enum<string> | null

The mapped decision received from the anti-fraud service. In case of a review decision this field is not updated once the review is resolved.

Available options:
accept,
error,
exception,
reject,
review,
skipped
Examples:

"accept"

cart_items
CartItem · object[] | null

An array of cart items that represents the line items of a transaction.

scheme_transaction_id
string | null

An identifier for the transaction used by the scheme itself, when available.

Examples:

"123456789012345"

three_d_secure
object | null

The 3-D Secure data that was sent to the payment service for the transaction.

payment_service_transaction_id
string | null

The payment service's unique ID for the transaction.

Examples:

"tx-12345"

additional_identifiers
object

A list of additional identifiers that we may keep track of to manage this transaction. This may include the authorization ID, capture ID, and processor ID, as well as an undefined list of additional identifiers.

Examples:
{
"payment_service_authorization_id": "auth-12345",
"payment_service_capture_id": "capture-12345"
}
metadata
object | null

Additional information about the transaction stored as key-value pairs.

Examples:
{
"cohort": "cohort-12345",
"order": "order-12345"
}
authorized_at
string<date-time> | null

The date this transaction was authorized at.

Examples:

"2013-07-16T19:23:00.000+00:00"

captured_at
string<date-time> | null

The date this transaction was captured at.

Examples:

"2013-07-16T19:23:00.000+00:00"

voided_at
string<date-time> | null

The date this transaction was voided at.

Examples:

"2013-07-16T19:23:00.000+00:00"

approval_expires_at
string<date-time> | null

The date this transaction's approval URL will expire at.

Examples:

"2013-07-16T19:23:00.000+00:00"

buyer_approval_timedout_at
string<date-time> | null

The date this transaction's approval timed out at.

Examples:

"2013-07-16T19:23:00.000+00:00"

merchant_advice_code
string | null

An optional merchant advice code which provides insight into the type of transaction or reason why the payment failed.

Examples:

"02"

"21"

installment_count
integer | null

The number of installments for this transaction, if applicable.

Examples:

3